GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Berechtigungen:SUID, SGID und Sticky Bit

Linux-Berechtigungen sind ein Konzept, mit dem jeder Benutzer schon früh in seiner Entwicklung vertraut wird. Wir müssen Skripte ausführen, Dateien ändern und Prozesse ausführen, um Systeme effektiv zu verwalten, aber was passiert, wenn wir Berechtigung verweigert sehen? ? Wissen Sie, warum wir diese Nachricht sehen? Wenn Sie die Ursache des Problems kennen, wissen Sie, wie Sie die Lösung implementieren können?

Ich werde die verschiedenen Möglichkeiten zur Berechnung von Berechtigungen kurz erläutern, und dann werden wir uns auf die speziellen Berechtigungen innerhalb von Linux konzentrieren. Wenn Sie sich die chmod genauer ansehen möchten lesen Sie diesen Artikel von Sudoer Shashank Hegde, Linux permissions:An Introduction to chmod.

Die TL;DR besagt, dass es zwei Hauptwege gibt, Berechtigungen zuzuweisen.

Symbolische Methode

Die symbolische Methode verwendet die folgende Syntax:

[tcarrigan@server ~]$ chmod WhoWhatWhich file | directory

Wo:

  • Wer - stellt Identitäten dar:u,g,o,a (user, group, other, all)
  • Was - steht für Aktionen:+, -, =(hinzufügen, entfernen, genau festlegen)
  • Welcher - stellt Zugriffsebenen dar:r, w, x (Lesen, Schreiben, Ausführen)

Ein Beispiel hierfür ist, wenn ich hinzufügen möchte das lesen und schreiben Berechtigungen für eine Datei namens test.txt für Benutzer und Gruppe , verwende ich den folgenden Befehl:

[tcarrigan@server ~]$ chmod ug+rw test.txt

Vollständige Offenlegung, dies ist nicht meine bevorzugte Methode zum Zuweisen von Berechtigungen, und wenn Sie weitere Informationen zu dieser Methode wünschen, empfehle ich Ihnen die nächste Suchmaschine.

Numerische Methode

Die numerische Methode ist meiner Erfahrung nach der beste Weg, Berechtigungen zu lernen und zu üben. Es basiert auf der folgenden Syntax:

[tcarrigan@server ~]$ chmod ### file | directory

Hier von links nach rechts das Zeichen # stellt eine Zugriffsebene dar. Es gibt drei Zugriffsebenen:Benutzer, Gruppe und andere. Um zu bestimmen, was jede Ziffer ist, verwenden wir Folgendes:

  • Beginnen Sie bei 0
  • Wenn die lesen Berechtigung gesetzt werden soll, fügen Sie 4 hinzu
  • Wenn die schreiben Berechtigung gesetzt werden soll, fügen Sie 2 hinzu
  • Falls die Ausführung Berechtigung gesetzt werden soll, fügen Sie 1 hinzu

Dies wird pro Zugriffsebene berechnet. Lassen Sie uns dieses Berechtigungsbeispiel interpretieren:

-rw-r-x---

Die Berechtigungen werden als 650 dargestellt . Wie bin ich auf diese Zahlen gekommen?

  • Die Berechtigungen des Benutzers sind:rw- oder 4+2=6
  • Die Berechtigungen der Gruppe sind:r-x oder 4+1=5
  • Die Berechtigungen der anderen sind:--- oder 0

Um dies in die Befehlssyntax einzufügen, sieht es so aus:

[tcarrigan@server ~]$ chmod 650 test.txt

Nachdem Sie nun die Grundlagen der Berechtigungsberechnung in Linux verstanden haben, schauen wir uns die Sonderberechtigungen an im Betriebssystem enthalten.

[ Das könnte Ihnen auch gefallen:Eine Einführung in Linux-Zugriffskontrolllisten (ACLs) ]

Sondergenehmigung erklärt

Sonderberechtigungen bilden neben Benutzer eine vierte Zugriffsebene , Gruppe , und andere . Spezielle Berechtigungen ermöglichen zusätzliche Privilegien gegenüber den Standardberechtigungssätzen (wie der Name schon sagt). Für jede zuvor besprochene Zugriffsebene gibt es eine spezielle Berechtigungsoption. Schauen wir uns jeden einzeln an, beginnend mit Set UID:

Benutzer + s (speziell)

Allgemein bekannt als SUID , die Sonderberechtigung für die Zugriffsebene Benutzer hat eine einzige Funktion:Eine Datei mit SUID wird immer als der Benutzer ausgeführt, dem die Datei gehört, unabhängig davon, welcher Benutzer den Befehl übergibt. Wenn der Eigentümer der Datei keine Ausführungsberechtigungen hat, verwenden Sie ein S in Großbuchstaben hier.

Um dies nun in einem praktischen Licht zu sehen, schauen wir uns /usr/bin/passwd an Befehl. Dieser Befehl hat standardmäßig den SUID-Berechtigungssatz:

[tcarrigan@server ~]$ ls -l /usr/bin/passwd 
-rwsr-xr-x. 1 root root 33544 Dec 13  2019 /usr/bin/passwd

Beachten Sie die s wobei x würde normalerweise Ausführungsberechtigungen für den Benutzer anzeigen.

Gruppe + s (speziell)

Allgemein bekannt als SGID , diese spezielle Berechtigung hat ein paar Funktionen:

  • Wenn es für eine Datei gesetzt ist, kann die Datei als Gruppe ausgeführt werden dem die Datei gehört (ähnlich SUID)
  • Wenn es auf ein Verzeichnis gesetzt wird, haben alle Dateien, die in dem Verzeichnis erstellt werden, ihre eigene Gruppe Eigentümerschaft auf die des Verzeichniseigentümers gesetzt
[tcarrigan@server article_submissions]$ ls -l 
total 0
drwxrws---. 2 tcarrigan tcarrigan  69 Apr  7 11:31 my_articles

Dieser Berechtigungssatz wird durch ein kleines s gekennzeichnet wo das x würde normalerweise execute anzeigen Privilegien für die Gruppe . Es ist auch besonders nützlich für Verzeichnisse, die oft in Zusammenarbeit zwischen Mitgliedern einer Gruppe verwendet werden. Jedes Mitglied der Gruppe kann auf jede neue Datei zugreifen. Dies gilt auch für die Ausführung von Dateien. SGID ist sehr leistungsfähig, wenn es richtig eingesetzt wird.

Wie zuvor für SUID erwähnt , wenn die besitzende Gruppe keine Ausführungsberechtigungen hat, dann ein großes S verwendet wird.

other + t (klebrig)

Die letzte Sondergenehmigung wurde als „klebriger Teil“ bezeichnet. Diese Berechtigung wirkt sich nicht auf einzelne Dateien aus. Auf Verzeichnisebene schränkt es jedoch das Löschen von Dateien ein. Nur der Eigentümer (und root ) einer Datei kann die Datei in diesem Verzeichnis entfernen. Ein gängiges Beispiel dafür ist /tmp Verzeichnis:

[tcarrigan@server article_submissions]$ ls -ld /tmp/
drwxrwxrwt. 15 root root 4096 Sep 22 15:28 /tmp/

Der Berechtigungssatz wird durch das kleine t gekennzeichnet , wobei das x würde normalerweise das Ausführungsrecht anzeigen.

Sonderberechtigungen festlegen

Um spezielle Berechtigungen für eine Datei oder ein Verzeichnis festzulegen, können Sie eine der beiden oben beschriebenen Methoden für Standardberechtigungen verwenden:symbolisch oder numerisch.

Nehmen wir an, wir möchten SGID setzen im Verzeichnis community_content .

Um dies mit der symbolischen Methode zu tun, gehen wir wie folgt vor:

[tcarrigan@server article_submissions]$ chmod g+s community_content/

Bei der numerischen Methode müssen wir eine vierte, vorangestellte Ziffer in unserem chmod übergeben Befehl. Die verwendete Ziffer wird ähnlich wie bei den Standardberechtigungsziffern berechnet:

  • Beginnen Sie bei 0
  • SUID =4
  • SGID =2
  • Sticky =1

Die Syntax lautet:

[tcarrigan@server ~]$ chmod X### file | directory

Wo ist die Sonderberechtigungsziffer.

Hier ist der Befehl zum Festlegen von SGID auf community_content mit der numerischen Methode:

[tcarrigan@server article_submissions]$ chmod 2770 community_content/
[tcarrigan@server article_submissions]$ ls -ld community_content/
drwxrws---. 2 tcarrigan tcarrigan 113 Apr  7 11:32 community_content/

[ Kostenloser Download:Spickzettel für fortgeschrittene Linux-Befehle. ] 

Zusammenfassung

Abschließend sind Berechtigungen von grundlegender Bedeutung, um ein effektiver Linux-Administrator zu sein. Es gibt zwei definierte Möglichkeiten, Berechtigungen mit dem chmod festzulegen Befehl:Symbolisch und numerisch. Wir haben die Syntax und Berechnungen untersucht, die für beide Methoden erforderlich sind. Wir haben auch die Sonderberechtigungen und ihre Rolle im System berücksichtigt. Jetzt, da Sie Berechtigungen und die zugrunde liegenden Konzepte verstehen, können Sie das ewig lästige Problem Berechtigung verweigert lösen Fehler, wenn er versucht, Ihre Arbeit zu behindern.


Linux
  1. So finden Sie Dateien mit SUID- und SGID-Berechtigungen in Linux

  2. Was ist Sticky Bit, SUID und SGID unter Linux?

  3. UNIX / Linux:So verwenden Sie Sticky Bit für Verzeichnis und Datei

  4. Linux-Sticky-Bit-Konzept mit Beispielen erklärt

  5. Linux-Interviewfragen – Grundlegende Datei- und Verzeichnisberechtigungen

Ein Leitfaden für Anfänger zu Linux-Berechtigungen

Linux-Dateiberechtigungen und Eigentumsrechte mit Beispielen erklärt

Spezielle Dateiberechtigungen unter Linux:SUID, GUID und Sticky Bit

Grundlegende Linux-Verzeichnisberechtigungen und wie man sie überprüft

Grundlegende Dateiberechtigungen und Eigentumsrechte in Linux verstehen

Execute- vs. Read-Bit. Wie funktionieren Verzeichnisberechtigungen in Linux?