Hallo zusammen. Dies ist die Übersetzung eines Artikels aus dem Buch RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 und EX300.
Von mir: Ich hoffe, der Artikel wird nicht nur Anfängern nützlich sein, sondern auch erfahrenen Administratoren helfen, ihr Wissen zu strukturieren.
Also, lass uns anfangen.

Um auf Dateien in Linux zuzugreifen, werden Berechtigungen verwendet. Diese Berechtigungen werden drei Objekten zugewiesen: dem Dateibesitzer, der Besitzergruppe und einem anderen Objekt (d.h. allen anderen). In diesem Artikel erfahren Sie, wie Sie Berechtigungen anwenden.
Der Artikel beginnt mit einer Übersicht über die grundlegenden Konzepte, gefolgt von einer Diskussion über spezielle Berechtigungen (Special permissions) und Zugriffssteuerungslisten (ACL). Am Ende dieses Artikels wird die Konfiguration von Standardzugriffsrechten über umask sowie die Verwaltung erweiterter Benutzerattribute behandelt.
Dateibesitz verwalten
Bevor Sie über Berechtigungen sprechen, müssen Sie die Rolle des Dateibesitzers und des Katalogs verstehen. Der Besitz von Dateien und Katalogen ist entscheidend für die Arbeit mit Berechtigungen. In diesem Abschnitt erfahren Sie zuerst, wie Sie den Besitzer sehen können. Dann erfahren Sie, wie Sie den Besitzer der Gruppe und den Benutzer für Dateien und Kataloge ändern können.
Den Besitzer einer Datei oder eines Katalogs anzeigen
In Linux hat jede Datei und jeder Katalog zwei Besitzer: den Benutzer und den Gruppenbesitzer.
Diese Besitzer werden beim Erstellen einer Datei oder eines Katalogs festgelegt. Der Benutzer, der die Datei erstellt, wird zum Besitzer dieser Datei, und die primäre Gruppe, zu der dieser Benutzer gehört, wird ebenfalls zum Besitzer dieser Datei. Um zu bestimmen, ob Sie als Benutzer Rechte auf eine Datei oder einen Katalog haben, prüft die Shell den Besitz dieser.
Das geschieht in folgender Reihenfolge:
- Die Shell prüft, ob Sie der Besitzer der Datei sind, auf die Sie zugreifen möchten. Wenn Sie dieser Besitzer sind, erhalten Sie die Berechtigungen, und die Shell stoppt die Überprüfung.
- Wenn Sie nicht der Besitzer der Datei sind, überprüft die Shell, ob Sie Mitglied der Gruppe sind, die Berechtigungen für diese Datei hat. Wenn Sie Mitglied dieser Gruppe sind, erhalten Sie Zugriff auf die Datei mit den für die Gruppe festgelegten Berechtigungen, und die Shell beendet die Überprüfung.
- Wenn Sie weder der Benutzer noch der Gruppenbesitzer sind, erhalten Sie die Rechte anderer Benutzer (Other).
Um die aktuellen Besitzerrechte anzuzeigen, können Sie den Befehl verwenden, ls -l. Dieser Befehl zeigt den Benutzer und den Besitzer der Gruppe an. Unten können Sie die Einstellungen des Besitzers für die Verzeichnisse im Verzeichnis /home sehen.
[root@server1 home]# ls -l
total 8
drwx------. 3 bob bob 74 Feb 6 10:13 bob
drwx------. 3 caroline caroline 74 Feb 6 10:13 caroline
drwx------. 3 fozia fozia 74 Feb 6 10:13 fozia
drwx------. 3 lara lara 74 Feb 6 10:13 lara
drwx------. 5 lisa lisa 4096 Feb 6 10:12 lisa
drwx------. 14 user user 4096 Feb 5 10:35 user
Mit dem Befehl ls Sie können den Besitzer von Dateien in diesem Verzeichnis anzeigen. Manchmal kann es hilfreich sein, eine Liste aller Dateien im System zu erhalten, bei denen dieser Benutzer oder diese Gruppe als Besitzer angegeben ist. Dazu können Sie find. Das Argument find -user verwendet werden. Zum Beispiel zeigt der folgende Befehl alle Dateien an, bei denen der Benutzer linda als Besitzer angegeben ist:
find / -user lindaSie können auch find verwenden, um Dateien zu suchen, deren bestimmte Gruppe deren Besitzer ist.
Zum Beispiel sucht der folgende Befehl nach allen Dateien, die der Gruppe users:
find / -group usersÄndern des Besitzers
Um die entsprechenden Berechtigungen anzuwenden, ist das erste, was zu berücksichtigen ist, das Eigentum. Dafür gibt es den Befehl chown. Die Syntax dieses Befehls ist leicht verständlich:
chown wer wasZum Beispiel ändert der folgende Befehl den Besitzer des Verzeichnisses /home/account auf den Benutzer linda:
chown linda /home/accountTeam chown hat mehrere Optionen, von denen eine besonders nützlich ist: -R. Sie können sich denken, was es tut, da diese Option auch für viele andere Befehle verfügbar ist. Damit können Sie den Besitzer rekursiv festlegen, was es Ihnen ermöglicht, den Besitzer des aktuellen Verzeichnisses und von allem, was sich darunter befindet, festzulegen. Der folgende Befehl ändert den Besitzer für das Verzeichnis /home und alles, was darunter liegt, auf den Benutzer linda:
Jetzt sehen die Besitzer so aus:
[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa 62 Sep 25 21:42 lisa
Führen wir aus:
[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#
Jetzt ist der Benutzer lisa der Besitzer des Verzeichnisses account:
[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa 62 Sep 25 21:42 lisa
Ändern des Gruppenbesitzers
Es gibt zwei Möglichkeiten, den Gruppenbesitz zu ändern. Sie können dies mit chowntun, aber es gibt einen speziellen Befehl namens chgrp, die diese Arbeit ausführt. Wenn Sie das Team verwenden möchten, chown, verwenden Sie . oder : vor dem Gruppennamen.
Der nächste Befehl ändert den Besitzer der Gruppe /home/account auf die Gruppe account:
chown .account /home/account
Sie können verwenden chown um den Besitzer des Benutzers und/oder der Gruppe auf verschiedene Weisen zu ändern. Hier sind einige Beispiele:
- chown lisa myfile1 setzt den Benutzer lisa als Eigentümer der Datei myfile1.
- chown lisa.sales myfile setzt den Benutzer lisa als Eigentümer der Datei myfile und setzt die Gruppe sales als Eigentümer derselben Datei.
- chown lisa:sales myfile das gleiche wie der vorherige Befehl.
- chown .sales myfile setzt die Gruppe sales als Eigentümer der Datei myfile, ohne den Benutzerbesitzer zu ändern.
- chown :sales myfile das gleiche wie der vorherige Befehl.
Sie können den Befehl chgrp, um die Besitzergruppe zu ändern. Betrachten wir das folgende Beispiel, bei dem Sie mit chgrp den Besitzer des Verzeichnisses account auf die Gruppe sales setzen können:
chgrp .sales /home/accountWie im Fall von chown, können Sie die Option -R c chgrpverwenden und auch rekursiv den Besitzer der Gruppe ändern.
Verständnis des Standardbesitzers
Sie haben vielleicht bemerkt, dass beim Erstellen einer Datei durch einen Benutzer das Standardbesitzverhältnis angewendet wird.
Der Benutzer, der die Datei erstellt, wird automatisch Eigentümer dieser Datei, und die Hauptgruppe dieses Benutzers wird automatisch Eigentümer dieser Datei. Normalerweise ist dies die Gruppe, die in der Datei /etc/passwd als Hauptgruppe des Benutzers angegeben ist. Wenn der Benutzer jedoch Mitglied mehrerer Gruppen ist, kann er die effektive Hauptgruppe ändern.
Um die aktuelle effektive primäre Gruppe anzuzeigen, kann der Benutzer den Befehl Gruppen:
[root@server1 ~]# groups lisa
lisa : lisa account sales
Wenn der aktuelle Benutzer linda die effektive primäre Gruppe ändern möchte, verwendet er den Befehl newgrp, gefolgt vom Namen der Gruppe, die er als neue effektive primäre Gruppe festlegen möchte. Nach der Verwendung des Befehls newgrp wird die primäre Gruppe aktiv sein, bis der Benutzer den Befehl exit eingibt oder sich abmeldet.
Unten ist gezeigt, wie der Benutzer linda diesen Befehl verwendet, um die primäre Gruppe zur Gruppe sales zu machen:
lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1
Nach der Änderung der aktiven Hauptgruppe erhalten alle neuen, vom Benutzer erstellten Dateien diese Gruppe als Gruppenbesitzer. Um zur ursprünglichen Einstellung der primären Gruppe zurückzukehren, verwenden Sie exit.
Um den Befehl newgrpverwenden zu können, muss der Benutzer Mitglied der Gruppe sein, die er als primäre Gruppe nutzen möchte. Darüber hinaus kann das Gruppenpasswort für die Gruppe mit dem Befehl gpasswdverwendet werden. Wenn der Benutzer den Befehl newgrpverwendet, aber nicht Mitglied der Zielgruppe ist, fordert die Shell das Gruppenpasswort an. Nachdem Sie das richtige Gruppenpasswort eingegeben haben, wird eine neue effektive primäre Gruppe festgelegt.
Verwaltung der primären Berechtigungen
Das Linux-Berechtigungssystem wurde in den 1970er Jahren entwickelt. Da die Rechenanforderungen in diesen Jahren begrenzt waren, war das Grundlagenberechtigungssystem recht eingeschränkt. Dieses Berechtigungssystem verwendet drei Berechtigungen, die auf Dateien und Verzeichnisse angewandt werden können. In diesem Abschnitt erfahren Sie, wie Sie diese Berechtigungen nutzen und ändern.
Verständnis der Lese-, Schreib- und Ausführungsrechte
Die drei grundlegenden Berechtigungen erlauben es Ihnen, Dateien zu lesen, zu schreiben und auszuführen. Die Wirkung dieser Berechtigungen unterscheidet sich je nachdem, ob sie auf Dateien oder Verzeichnisse angewandt werden. Bei einer Datei gibt Ihnen die Leseberechtigung das Recht, die Datei zum Lesen zu öffnen. Das bedeutet, dass Sie ihren Inhalt lesen können, aber auch, dass Ihr Computer die Datei öffnen kann, um etwas damit zu tun.
Eine Programmdatei, die Zugriff auf eine Bibliothek benötigt, muss beispielsweise Leserechte für diese Bibliothek haben. Daraus folgt, dass das Lesen von Dateien die grundlegendste Berechtigung ist, die Sie benötigen, um mit Dateien zu arbeiten.
Hinsichtlich eines Verzeichnisses ermöglicht Ihnen das Lesen, den Inhalt dieses Verzeichnisses anzuzeigen. Sie sollten beachten, dass diese Berechtigung Ihnen nicht erlaubt, die Dateien im Verzeichnis zu lesen. Das Linux-Berechtigungssystem kennt keine Vererbung, und der einzige Weg, eine Datei zu lesen, besteht darin, die Leserechte für diese Datei zu verwenden.
Wie Sie wahrscheinlich erraten können, erlaubt die Schreibberechtigung, wenn sie auf eine Datei angewendet wird, das Schreiben in die Datei. Mit anderen Worten, sie erlaubt das Ändern des Inhalts vorhandener Dateien. Sie erlaubt jedoch nicht die Erstellung oder das Löschen neuer Dateien oder das Ändern der Zugriffsrechte für die Datei. Dafür müssen Sie die Schreibberechtigung für das Verzeichnis erteilen, in dem Sie die Datei erstellen möchten. In Verzeichnissen ermöglicht diese Berechtigung auch das Erstellen und Löschen neuer Unterverzeichnisse.
Die Ausführungsberechtigung ist das, was Sie zum Ausführen einer Datei benötigen. Sie wird niemals standardmäßig festgelegt, was Linux praktisch vollständig unempfindlich gegen Viren macht. Nur jemand mit Schreibrechten im Verzeichnis kann die Ausführungsberechtigung setzen.
Im Folgenden werden die grundlegenden Berechtigungen zusammengefasst:

Verwendung von chmod
Um die Berechtigungen zu verwalten, wird der Befehl chmodverwendet. Bei der Verwendung von chmod können Sie die Berechtigungen für den Benutzer (user), die Gruppe (group) und andere (other) festlegen. Sie können diesen Befehl in zwei Modi verwenden: im relativen Modus und im absoluten Modus. Im absoluten Modus werden drei Ziffern verwendet, um die grundlegenden Berechtigungen festzulegen.

Beim Einstellen der Berechtigungen berechnen Sie den für Sie erforderlichen Wert. Wenn Sie Lese-, Schreib- und Ausführungsrechte für den Benutzer, Lese- und Ausführungsrechte für die Gruppe sowie Lese- und Ausführungsrechte für andere in der Datei /somefile festlegen möchten, verwenden Sie den folgenden Befehl chmod:
chmod 755 /somefileWenn Sie chmod auf diese Weise verwenden, werden alle aktuellen Berechtigungen durch die von Ihnen festgelegten Berechtigungen ersetzt.
Wenn Sie die Berechtigungen in Bezug auf die aktuellen Berechtigungen ändern möchten, können Sie chmod im relativen Modus verwenden. Bei der Verwendung von chmod im relativen Modus arbeiten Sie mit drei Indikatoren, um anzugeben, was Sie tun möchten:
- Zuerst geben Sie an, für wen Sie die Berechtigungen ändern möchten. Dafür können Sie zwischen dem Benutzer (“ wie mit normalen Ein- und Ausgabe-Funktionen umgehen können, die eine Datei, eine Position, einen Puffer im Speicher nehmen und die Anzahl der zu lesenden oder zu schreibenden Bytes zählen.), der Gruppe (g) und anderen (o).
- ) wählen. Dann verwenden Sie einen Operator, um Berechtigungen aus dem aktuellen Modus hinzuzufügen oder zu entfernen, oder um sie absolut festzulegen.
- Am Ende verwenden Sie r, w und x, um anzugeben, welche Berechtigungen Sie festlegen möchten.
Beim Ändern von Berechtigungen im relativen Modus können Sie den Teil "wem" weglassen, um die Berechtigung für alle Objekte hinzuzufügen oder zu entfernen. Zum Beispiel fügt dieser Befehl die Ausführungsberechtigung für alle Benutzer hinzu:
chmod +x somefileIm relativen Modus können Sie auch komplexere Befehle verwenden. Zum Beispiel fügt dieser Befehl Schreibberechtigungen für die Gruppe hinzu und entfernt das Lesen für andere:
chmod g+w,o-r somefileBei der Nutzung eines chmod -R o+rx /data Sie setzen die Ausführungsberechtigung für alle Verzeichnisse sowie für die Dateien im Verzeichnis /data. Um die Ausführungsberechtigung nur für Verzeichnisse, nicht für Dateien festzulegen, verwenden Sie chmod -R o+ rX /data.
Das Großbuchstaben X stellt sicher, dass Dateien keine Ausführungsberechtigung erhalten, wenn die Datei diese Berechtigung für einige Objekte nicht bereits festgelegt hat. Das macht X zu einer sinnvolleren Möglichkeit, mit Ausführungsberechtigungen umzugehen; es verhindert, dass diese Berechtigung für Dateien gesetzt wird, wo sie nicht benötigt wird.
Erweiterte Berechtigungen
Neben den grundlegenden Berechtigungen, die Sie gerade gelesen haben, gibt es in Linux auch eine Reihe von erweiterten Berechtigungen. Dies sind nicht die Berechtigungen, die Sie standardmäßig setzen, aber manchmal bieten sie eine nützliche Ergänzung. In diesem Abschnitt erfahren Sie, was sie sind und wie man sie konfiguriert.
Verständnis der erweiterten Berechtigungen SUID, GUID und Sticky Bit
Es gibt drei erweiterte Berechtigungen. Die erste ist die Berechtigung zur Setzung der Benutzer-ID (SUID). In einigen speziellen Fällen können Sie diese Berechtigung für ausführbare Dateien anwenden. Standardmäßig führt der Benutzer, der die ausführbare Datei ausführt, diese Datei mit seinen eigenen Berechtigungen aus.
Für normale Benutzer bedeutet dies normalerweise, dass die Verwendung des Programms eingeschränkt ist. In einigen Fällen benötigt der Benutzer jedoch spezielle Berechtigungen, nur um eine bestimmte Aufgabe auszuführen.
Betrachten wir zum Beispiel die Situation, in der der Benutzer sein Passwort ändern muss. Dazu muss der Benutzer sein neues Passwort in die Datei /etc/shadow schreiben. Diese Datei ist jedoch für Benutzer, die keine Root-Rechte haben, nicht beschreibbar:
root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow
Die SUID-Berechtigung bietet eine Lösung für dieses Problem. Bei der Anwendung in der Utility /usr/bin/passwd wird diese Berechtigung standardmäßig gesetzt. Das bedeutet, dass der Benutzer beim Ändern seines Passworts vorübergehend Root-Rechte erhält, was ihm ermöglicht, in die Datei /etc/shadow zu schreiben. Sie können die SUID-Berechtigung sehen mit ls -l als s an der Stelle, an der Sie normalerweise erwarten würden, es zu sehen x für Benutzerrechte:
[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd
Die SUID-Berechtigung kann nützlich erscheinen (und in einigen Fällen ist sie das auch), aber gleichzeitig ist sie potenziell gefährlich. Bei falscher Anwendung können Sie versehentlich Root-Zugriffsrechte vergeben. Daher empfehle ich, sie nur mit äußerster Vorsicht zu verwenden.
Die meisten Administratoren werden es nie nötig haben, sie zu verwenden; Sie werden sie nur in einigen Dateien sehen, in denen das Betriebssystem sie standardmäßig setzen sollte.
Die zweite spezielle Berechtigung ist die Gruppen-ID (SGID). Diese Berechtigung hat zwei Effekte. Wenn sie auf eine ausführbare Datei angewendet wird, gibt sie dem Benutzer, der die Datei ausführt, die Berechtigungen des Eigentümers der Gruppe dieser Datei. So kann SGID mehr oder weniger dasselbe tun wie SUID. Zumindest wird SGID für diesen Zweck praktisch nicht verwendet.
Wie bei der SUID-Berechtigung wird SGID auch für einige Systemdateien als Standardeinstellung angewendet.
Wenn es auf ein Verzeichnis angewendet wird, kann SGID nützlich sein, da Sie es verwenden können, um den Standardgruppenbesitzer für Dateien und Unterverzeichnisse festzulegen, die in diesem Verzeichnis erstellt werden. Standardmäßig wird, wenn ein Benutzer eine Datei erstellt, seine effektive primäre Gruppe als Gruppenbesitzer für diese Datei festgelegt.
Das ist nicht immer sehr nützlich, insbesondere weil bei Red Hat/CentOS die Hauptgruppe eine Gruppe mit dem gleichen Namen wie der Benutzer ist, und der Benutzer ist das einzige Mitglied. Daher sind standardmäßig die Dateien, die der Benutzer erstellt, für die Gemeinschaftsgruppe zugänglich.
Stellen Sie sich eine Situation vor, in der die Benutzer linda und lori in der Buchhaltung arbeiten und Mitglieder der Gruppe sind. account. Standardmäßig sind diese Benutzer Mitglieder einer privaten Gruppe, deren einziges Mitglied sie sind. Beide Benutzer sind jedoch Mitglieder der Gruppe account und zusätzlich auch als sekundäre Gruppe.
Die Standard-Situation besteht darin, dass, wenn einer dieser Benutzer eine Datei erstellt, die primäre Gruppe der Eigentümer wird. Daher kann linda standardmäßig nicht auf die von lori erstellten Dateien zugreifen und umgekehrt. Wenn Sie jedoch ein gemeinsames Verzeichnis der Gruppe erstellen (sagen wir, /groups/account) und sicherstellen, dass die SGID-Berechtigung auf dieses Verzeichnis angewendet wird und die Gruppenzugehörigkeit als Gruppenbesitzer für dieses Verzeichnis festgelegt ist, erhalten alle Dateien, die in diesem Verzeichnis und in allen seinen Unterverzeichnissen erstellt werden, ebenfalls die Gruppe account als Standardgruppenbesitzer.
Aus diesem Grund ist die SGID-Berechtigung eine sehr nützliche Berechtigung für gemeinsame Gruppenverzeichnisse.
Die SGID-Berechtigung wird in der Ausgabe angezeigt ls -l als s an der Stelle, wo Sie normalerweise die Ausführungsberechtigung für die Gruppe finden:
[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account
Die dritte der speziellen Berechtigungen ist das Sticky-Bit. Diese Berechtigung ist nützlich, um Dateien in Umgebungen vor versehentlichem Löschen zu schützen, in denen mehrere Benutzer Schreibrechte im gleichen Verzeichnis haben. Wenn das Sticky-Bit angewendet wird, kann ein Benutzer eine Datei nur löschen, wenn er der Eigentümer der Datei oder des Verzeichnisses ist, in dem sich die Datei befindet. Aus diesem Grund wird es standardmäßig für das Verzeichnis /tmp angewendet und kann auch für gemeinsame Gruppenverzeichnisse nützlich sein.
Ohne das Sticky-Bit kann ein Benutzer, wenn er Dateien in einem Verzeichnis erstellen kann, auch Dateien aus diesem Verzeichnis löschen. In einer öffentlichen Gruppenumgebung kann dies ärgerlich sein. Stellen Sie sich die Benutzer linda und lori vor, die beide Schreibrechte im Verzeichnis /data/account haben, die sie durch die Mitgliedschaft in der Gruppe account erhalten. Daher kann linda Dateien, die von lori erstellt wurden, löschen und umgekehrt.
Wenn Sie das Sticky-Bit anwenden, kann ein Benutzer Dateien nur löschen, wenn eine der folgenden Bedingungen erfüllt ist:
- Der Benutzer ist der Eigentümer der Datei;
- Der Benutzer ist der Eigentümer des Verzeichnisses, in dem sich die Datei befindet.
Bei der Nutzung eines ls -l, Sie können das Sticky-Bit als t an der Stelle, an der Sie normalerweise die Berechtigung zur Ausführung für andere sehen:
[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/
Anwendung erweiterter Berechtigungen
Um SUID, SGID und den Sticky-Bit anzuwenden, können Sie auch chmod. SUID hat den numerischen Wert 4, SGID hat den numerischen Wert 2 und der Sticky-Bit hat den numerischen Wert 1.
Wenn Sie diese Berechtigungen anwenden möchten, müssen Sie ein vierstelliges Argument hinzufügen chmod, dessen erste Ziffer sich auf die speziellen Berechtigungen bezieht. Die folgende Zeile fügt beispielsweise das SGID-Recht für das Verzeichnis hinzu und setzt rwx für den Benutzer sowie rx für die Gruppe und andere:
chmod 2755 /somedirEs ist ziemlich unpraktisch, wenn Sie die aktuellen Zugriffsrechte, die eingestellt sind, einsehen möchten, bevor Sie mit chmod im absoluten Modus arbeiten. (Sie riskieren, die Berechtigungen zu überschreiben, wenn Sie das nicht tun.) Daher empfehle ich, im relativen Modus zu arbeiten, wenn Sie eine der speziellen Berechtigungen anwenden müssen:
- Für SUID verwenden Sie chmod u+s.
- Für SGID verwenden Sie chmod g+s.
- Für den Sticky-Bit verwenden Sie chmod +t, gefolgt vom Namen der Datei oder des Verzeichnisses, für das Sie die Berechtigungen festlegen möchten.
In der Tabelle sind alle wichtigen Informationen über das Management von speziellen Berechtigungen zusammengefasst.

Beispiel für die Arbeit mit speziellen Rechten
In diesem Beispiel verwenden Sie spezielle Berechtigungen, damit es für Mitglieder der Gruppe einfacher ist, Dateien im gemeinsamen Gruppenverzeichnis auszutauschen. Sie setzen das ID-Bit des Gruppenzielbenutzers sowie den Sticky-Bit und sehen, dass nach deren Festlegung Funktionen hinzukommen, die die Zusammenarbeit der Gruppenmitglieder erleichtern.
- Öffnen Sie ein Terminal, in dem Sie der Benutzer linda sind. Erstellen Sie den Benutzer mit dem Befehl useradd linda, fügen Sie ein Passwort hinzu passwd linda.
- Erstellen Sie im Wurzelverzeichnis das Verzeichnis /data und das Unterverzeichnis /data/sales mit dem Befehl mkdir -p /data/sales. Führen Sie cd /data/salesaus, um in das Verzeichnis sales zu wechseln. Führen Sie touch linda1 und touch linda2, um zwei leere Dateien zu erstellen, deren Eigentümer linda ist.
- Führen Sie aus su - lisa , um den aktuellen Benutzer auf den Benutzer lisa zu wechseln, der ebenfalls Mitglied der Gruppe sales ist.
- Führen Sie aus cd /data/sales und führen Sie von diesem Verzeichnis aus ls -l. Sie sehen zwei Dateien, die vom Benutzer linda erstellt wurden und der Gruppe linda gehören. Führen Sie rm -f linda*. Das löscht beide Dateien.
- Führen Sie aus touch lisa1 und touch lisa2, um zwei Dateien zu erstellen, die dem Benutzer lisa gehören.
- Führen Sie aus su - um Ihre Berechtigungen auf Root-Ebene zu erhöhen.
- Führen Sie aus chmod g+s,o+t /data/sales, um das Gruppeneigentumsbit (GUID) sowie das Sticky-Bit im gemeinsamen Gruppenverzeichnis festzulegen.
- Führen Sie aus su — linda. Führen Sie dann aus touch linda3 und touch linda4. Jetzt sollten Sie sehen, dass die beiden von Ihnen erstellten Dateien der Gruppe sales gehören, die Eigentümergruppe des Verzeichnisses /data/sales ist.
- Führen Sie aus rm -rf lisa*. Das Sticky-Bit verhindert das Löschen dieser Dateien durch den Benutzer linda, da Sie nicht der Eigentümer dieser Dateien sind. Beachten Sie, dass der Benutzer linda die Dateien immer noch löschen kann, wenn er der Eigentümer des Verzeichnisses /data/sales ist!
ACL-Verwaltung (setfacl, getfacl) in Linux
Selbst wenn die oben diskutierten erweiterten Berechtigungen nützliche Funktionen hinzufügen, die das Arbeiten mit Berechtigungen in Linux betreffen, können Sie damit keine Berechtigungen an mehr als einen Benutzer oder eine Gruppe in einer Datei vergeben.
Zugriffssteuerlisten bieten diese Funktion. Darüber hinaus ermöglichen sie Administratoren, Standardberechtigungen auf komplexe Weise festzulegen, wobei die festgelegten Berechtigungen in unterschiedlichen Verzeichnissen variieren können.
Verständnis der ACLs
Obwohl das ACL-Subsystem hervorragende Funktionalitäten zu Ihrem Server hinzufügt, hat es einen Nachteil: Nicht alle Utilities unterstützen es. Daher können Sie beim Kopieren oder Verschieben von Dateien Ihre ACL-Einstellungen verlieren, und die Backup-Software kopiert möglicherweise die ACL-Einstellungen nicht.
Das Tar-Utility unterstützt keine ACLs. Um sicherzustellen, dass die ACL-Einstellungen beim Sichern nicht verloren gehen, verwenden Sie star anstatt tar. star Es funktioniert mit denselben Optionen wie tar; es fügt lediglich die Unterstützung für ACL-Einstellungen hinzu.
Sie können die ACL auch mit getfacl, sichern, die Sie mit dem Befehl setfacl wiederherstellen können. Um eine Sicherung zu erstellen, verwenden Sie getfacl -R /directory > file.acls. Um die Einstellungen aus der Sicherungsdatei wiederherzustellen, verwenden Sie setfacl —restore=file.acl.
Das Fehlen der Unterstützung durch einige Werkzeuge sollte kein Problem sein. Zugriffssteuerlisten werden häufig auf Verzeichnisse als strukturelle Maßnahme angewendet, nicht auf einzelne Dateien.
Daher wird es nicht viele geben, sondern nur einige, die an intelligenten Stellen des Dateisystems angewendet werden. Folglich ist es relativ einfach, die ursprünglichen ACL-Listen, mit denen Sie gearbeitet haben, wiederherzustellen, selbst wenn Ihre Backup-Software diese nicht unterstützt.
Vorbereitung des Dateisystems für ACL
Bevor Sie mit ACLs arbeiten, kann es erforderlich sein, das Dateisystem zur Unterstützung von ACLs vorzubereiten. Da die Metadaten des Dateisystems erweitert werden müssen, gibt es nicht immer standardmäßig Unterstützung für ACLs im Dateisystem. Wenn Sie bei der Einrichtung von ACL-Listen für das Dateisystem die Meldung „operation not supported“ erhalten, hat Ihr Dateisystem möglicherweise keine Unterstützung für ACLs.
Um dies zu beheben, müssen Sie die Option hinzufügen acl mount in der Datei /etc/fstab, damit das Dateisystem standardmäßig mit Unterstützung für ACLs gemountet wird.
Ändern und Anzeigen von ACL-Einstellungen mit setfacl und getfacl
Um eine ACL festzulegen, benötigen Sie den Befehl setfacl. Um die aktuellen ACL-Einstellungen anzuzeigen, benötigen Sie getfacl. Der Befehl ls -l zeigt keine vorhandenen ACLs an; es zeigt einfach ein + nach der Berechtigungsliste an, was darauf hinweist, dass ACLs auf die Datei angewendet werden.
Bevor Sie ACL-Listen konfigurieren, ist es immer nützlich, die aktuellen ACL-Einstellungen mit getfaclanzuzeigen. Im Folgenden sehen Sie anhand eines Beispiels die aktuellen Zugriffsrechte, wie sie mit ls -langezeigt werden, sowie wie sie mit getfaclangezeigt werden. Wenn Sie genau hinschauen, werden Sie sehen, dass die angezeigten Informationen genau gleich sind.
[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
Das Ergebnis des Befehls getfacl zeigt, dass die Berechtigungen für drei verschiedene Objekte angezeigt werden: Benutzer, Gruppe und andere. Lassen Sie uns nun eine ACL hinzufügen, um der Gruppe sales Lese- und Ausführungsrechte zu geben. Der Befehl hierfür ist setfacl -m g:sales:rx /dir. In diesem Befehl registry-garbage-collect gibt an, dass die aktuellen ACL-Einstellungen geändert werden müssen. Danach g:sales:rx teilt dem Befehl mit, dass die ACL für Lese- und Ausführungsrechte (rx) für die Gruppe (g) sales festgelegt werden soll. Unten sehen Sie, wie der Befehl aussieht, sowie die Ausgabe des Befehls getfacl nach der Änderung der aktuellen ACL-Einstellungen.
[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x
Jetzt, da Sie verstehen, wie man eine Gruppen-ACL einrichtet, ist es einfach, ACLs für Benutzer und andere Benutzer zu verstehen. Zum Beispiel der Befehl setfacl -m u:linda:rwx /data ergibt die Berechtigungen für den Benutzer linda im Verzeichnis /data, ohne ihn zum Eigentümer zu machen und ohne die Zuordnung des aktuellen Eigentümers zu ändern.
Team setfacl bietet viele Möglichkeiten und Optionen. Eine Option ist besonders wichtig, der Parameter -R. Wenn er verwendet wird, sorgt diese Option dafür, dass die ACL für alle Dateien und Unterverzeichnisse eingerichtet wird, die sich derzeit im Verzeichnis befinden, wo Sie die ACL festlegen. Es wird empfohlen, diese Option immer zu verwenden, wenn Sie ACL-Listen für vorhandene Verzeichnisse ändern.
Arbeiten mit Standard-ACLs
Ein Vorteil der Verwendung von ACL-Listen besteht darin, dass Sie Berechtigungen für mehrere Benutzer oder Gruppen in einem Verzeichnis vergeben können. Ein weiterer Vorteil ist, dass Sie die Vererbung aktivieren können, wenn Sie mit Standard-ACLs arbeiten.
Durch das Festlegen von Standard-ACLs definieren Sie die Berechtigungen, die für alle neuen Elemente festgelegt werden, die im Verzeichnis erstellt werden. Beachten Sie, dass Standard-ACLs die Berechtigungen für vorhandene Dateien und Unterverzeichnisse nicht ändern. Um diese zu ändern, müssen Sie auch eine reguläre ACL hinzufügen!
Das ist wichtig zu wissen. Wenn Sie ACLs verwenden möchten, um den Zugriff mehrerer Benutzer oder Gruppen auf dasselbe Verzeichnis zu konfigurieren, müssen Sie die ACL zweimal festlegen. Verwenden Sie zuerst setfacl -R -m, um die ACL für die aktuellen Dateien zu ändern. Verwenden Sie dann setfacl -m d:, um sich um alle neuen Elemente zu kümmern, die ebenfalls erstellt werden.
Um eine Standard-ACL festzulegen, müssen Sie einfach die Option d nach der Option registry-garbage-collect hinzufügen (die Reihenfolge ist wichtig!). Verwenden Sie also setfacl -m d:g:sales:rx /data, wenn Sie möchten, dass die Verkaufsgruppe alles lesen und ausführen kann, was jemals im Verzeichnis /data erstellt wird.
Bei der Verwendung von Standard-ACL-Listen kann es auch nützlich sein, ACLs für andere festzulegen. Das hat in der Regel nicht viel Sinn, da Sie auch die Berechtigungen für andere mit chmodändern können. Allerdings können Sie nichts tun, was Sie nicht mit chmod, um die Rechte anzugeben, die anderen Benutzern für jede neu erstellte Datei zur Verfügung gestellt werden sollen. Wenn Sie möchten, dass andere keine Berechtigungen für irgendetwas, das in \/data erstellt wird, erhalten, verwenden Sie setfacl -m d:o::- \/data.
ACL und normale Berechtigungen sind nicht immer gut integriert. Probleme können auftreten, wenn Sie ACL standardmäßig auf ein Verzeichnis anwenden und dann Elemente zu diesem Verzeichnis hinzufügen, während Sie versuchen, die normalen Berechtigungen zu ändern. Änderungen, die auf normale Berechtigungen angewendet werden, werden möglicherweise nicht gut im ACL-Überblick reflektiert. Um Probleme zu vermeiden, setzen Sie zuerst die normalen Berechtigungen und wenden danach die standardmäßigen ACL an (und versuchen Sie anschließend, sie nicht erneut zu ändern).
Beispiel für die Verwaltung erweiterter Berechtigungen mit ACL
In diesem Beispiel arbeiten Sie weiter mit den Verzeichnissen \/data\/account und \/data\/sales, die Sie zuvor erstellt haben. In den vorherigen Beispielen haben Sie sichergestellt, dass die Gruppe sales Berechtigungen für \/data\/sales hat und die Gruppe account Berechtigungen für \/data\/account hat.
Stellen Sie zunächst sicher, dass die Gruppe account Lesezugriff im Verzeichnis \/data\/sales hat, während die Gruppe sales Lesezugriff im Verzeichnis \/data\/account hat.
Dann setzen Sie die standardmäßigen ACL-Listen, um sicherzustellen, dass für alle neuen Dateien die Berechtigungen für alle neuen Elemente korrekt festgelegt sind.
- Öffnen Sie das Terminal.
- Führen Sie aus setfacl -m g:account:rx \/data\/sales und setfacl -m g:sales:rx \/data\/account.
- Führen Sie aus getfacl, um sicherzustellen, dass die Zugriffsrechte wie gewünscht festgelegt wurden.
- Führen Sie aus setfacl -m d:g:account:rwx,g:sales:rx \/data\/sales, um die standardmäßigen ACL für das Verzeichnis sales festzulegen.
- Fügen Sie die standardmäßige ACL für das Verzeichnis \/data\/account hinzu, indem Sie setfacl -m d:g:sales:rwx,g:account:rx \/data\/account.
- Stellen Sie sicher, dass die ACL-Einstellungen funktionieren, indem Sie eine neue Datei in \/data\/sales hinzufügen. Führen Sie touch \/data\/sales\/newfile und führen Sie getfacl \/data\/sales\/newfile aus, um die aktuellen Berechtigungen zu überprüfen.
Festlegen der Standardrechte mit umask
Oben haben Sie gelernt, wie Sie mit standardmäßigen ACLs arbeiten. Wenn Sie keine ACLs verwenden, gibt es eine Shell-Option, die die Standardrechte festlegt, die Sie erhalten: umask (das ist die Umkehrmaske). In diesem Abschnitt erfahren Sie, wie Sie die Standardberechtigungen mit umask.
Vielleicht ist Ihnen aufgefallen, dass beim Erstellen einer neuen Datei einige Standardberechtigungen festgelegt werden. Diese Berechtigungen werden durch die Einstellung bestimmt umask. Dieser Shell-Parameter wird für alle Benutzer beim Anmelden im System angewendet. In dem Parameter umask wird ein numerischer Wert verwendet, der von den maximalen Berechtigungen abgezogen wird, die automatisch für die Datei festgelegt werden können; die maximalen Einstellungen für Dateien sind 666 und für Verzeichnisse 777.
Es gibt jedoch einige Ausnahmen von dieser Regel. Eine vollständige Übersicht über die Einstellungen finden Sie umask in der Tabelle unten.
Von den Zahlen, die in umask, wie im Fall von numerischen Argumenten für den Befehl chmod, bezieht sich die erste Zahl auf die Benutzerberechtigungen, die zweite Zahl auf die Gruppenberechtigungen und die letzte auf die Standardberechtigungen, die für andere festgelegt sind. Der Wert umask von 022 ergibt standardmäßig 644 für alle neuen Dateien und 755 für alle neuen Verzeichnisse, die auf Ihrem Server erstellt werden.
Eine vollständige Übersicht über alle numerischen Werte umask und deren Ergebnisse finden Sie in der Tabelle unten.

Eine einfache Möglichkeit zu sehen, wie der umask-Parameter funktioniert, ist wie folgt: Beginnen Sie mit den Standardberechtigungen für eine Datei, die auf 666 festgelegt sind, und ziehen Sie umask ab, um die wirklichen Berechtigungen zu erhalten. Machen Sie dasselbe für ein Verzeichnis und dessen Standardberechtigungen von 777.
Es gibt zwei Möglichkeiten, die umask-Einstellung zu ändern: für alle Benutzer und für einzelne Benutzer. Wenn Sie umask für alle Benutzer festlegen möchten, müssen Sie sicherstellen, dass der umask-Parameter beim Starten von Shell-Umgebungsdateien berücksichtigt wird, wie im /etc/profile angegeben. Der richtige Ansatz besteht darin, ein Shell-Skript mit dem Namen umask.sh im Verzeichnis /etc/profile.d zu erstellen und den umask-Wert, den Sie in diesem Shell-Skript verwenden möchten, anzugeben. Wenn dieser Wert in dieser Datei geändert wird, wird er nach dem Anmelden am Server für alle Benutzer angewendet.
Eine Alternative zur Einstellung von umask über /etc/profile und zugehörige Dateien, wo er für alle Benutzer, die sich anmelden, gilt, besteht darin, umask-Einstellungen in einer Datei mit dem Namen .profile zu ändern, die im Home-Verzeichnis jedes Benutzers erstellt wird.
Einstellungen, die in dieser Datei angewendet werden, gelten nur für den einzelnen Benutzer; daher ist dies eine gute Methode, wenn Sie mehr Details benötigen. Ich persönlich mag diese Funktion, um den standardmäßigen umask-Wert für den Benutzer root auf 027 zu ändern, während normale Benutzer mit dem standardmäßigen umask von 022 arbeiten.
Arbeiten mit erweiterten Benutzerattributen
Dies ist der abschließende Abschnitt über Berechtigungen in Linux.
Bei der Arbeit mit Berechtigungen besteht immer eine Beziehung zwischen dem Benutzer- oder Gruppenobjekt und den Berechtigungen, die diese Benutzer- oder Gruppenobjekte für eine Datei oder ein Verzeichnis haben. Eine alternative Möglichkeit, Dateien auf einem Linux-Server zu schützen, sind Attribute.
Attribute funktionieren unabhängig von dem Benutzer, der auf die Datei zugreift.
Wie bei ACLs kann es für Dateiattribute erforderlich sein, die Option mount.
user_xattr zu aktivieren. Wenn Sie die Fehlermeldung „operation not supported“ beim Arbeiten mit erweiterten Benutzerattributen erhalten, stellen Sie sicher, dass Sie die Optionin der Datei /etc/fstab setzen. mount Viele Attribute sind dokumentiert. Einige Attribute sind verfügbar, aber noch nicht implementiert. Verwenden Sie diese nicht; sie bringen Ihnen nichts.
Nachfolgend sind die nützlichsten Attribute aufgeführt, die Sie anwenden können:
Dieses Attribut gewährleistet, dass die Zugriffszeit der Datei nicht verändert wird.
A Normalerweise muss die Zugriffszeit der Datei jedes Mal, wenn die Datei geöffnet wird, in den Metadaten der Datei protokolliert werden. Dies hat negative Auswirkungen auf die Leistung; daher kann das Attribut
verwendet werden, um diese Funktion zu deaktivieren. A Dieses Attribut erlaubt das Hinzufügen, aber nicht das Löschen von Dateien.
a Wenn Sie ein Dateisystem verwenden, das die volumenbasierte Komprimierung unterstützt, gewährleistet dieses Datei-Attribut, dass die Datei bei der erstmaligen Aktivierung des Komprimierungsmechanismus komprimiert wird.
c Dieses Attribut gewährleistet, dass Änderungen an Dateien sofort auf der Festplatte geschrieben werden und nicht zuerst zwischengespeichert werden. Dies ist ein nützliches Attribut für wichtige Datenbankdateien und stellt sicher, dass diese nicht zwischen dem Dateicache und der Festplatte verloren gehen.
D Dieses Attribut sorgt dafür, dass die Datei nicht in Backups gespeichert wird, die mit einem Dump-Utility erstellt wurden.
d Dieses Attribut aktiviert die Indizierung für das Verzeichnis, in dem es aktiviert ist. Dies sorgt für schnelleren Zugriff auf Dateien in primitiven Dateisystemen wie Ext3, die keine B-Baum-Datenbank für den schnellen Zugriff auf Dateien verwenden.
I Dieses Attribut sorgt dafür, dass die Zugriffszeit der Datei vom System nicht geändert wird.
i Dieses Attribut macht die Datei unveränderlich. Daher können keine Änderungen an der Datei vorgenommen werden, was nützlich ist für Dateien, die zusätzlichen Schutz benötigen.
j Dieses Attribut gewährleistet, dass die Datei im ext3-Dateisystem zunächst im Journal und dann in den Datenblöcken auf der Festplatte geschrieben wird.
s Überschreiben Sie die Blöcke, in denen die Datei gespeichert wurde, nach dem Löschen der Datei mit 0. Das stellt sicher, dass die Datei nach dem Löschen nicht wiederhergestellt werden kann.
“ wie mit normalen Ein- und Ausgabe-Funktionen umgehen können, die eine Datei, eine Position, einen Puffer im Speicher nehmen und die Anzahl der zu lesenden oder zu schreibenden Bytes zählen. Dieses Attribut speichert Informationen über die Löschung. Dies ermöglicht die Entwicklung eines Dienstprogramms, das mit diesen Informationen arbeitet, um gelöschte Dateien zu retten.
Wenn Sie Attribute anwenden möchten, können Sie den Befehl verwenden chattr. Zum Beispiel verwenden Sie chattr +s somefile, um die Attribute auf somefile anzuwenden. Möchten Sie das Attribut entfernen? Dann verwenden Sie chattr -s somefile, und es wird entfernt. Um eine Übersicht aller derzeit angewendeten Attribute zu erhalten, verwenden Sie den Befehl lsattr.
Zusammenfassung
In diesem Artikel haben Sie gelernt, wie man mit Berechtigungen arbeitet. Sie haben über die drei grundlegenden Berechtigungen, die erweiterten Berechtigungen und die Anwendung von ACL-Listen im Dateisystem gelesen. Sie haben auch gelernt, wie man den umask-Parameter verwendet, um Standardberechtigungen anzuwenden. Am Ende dieses Artikels haben Sie erfahren, wie man benutzerdefinierte erweiterte Attribute verwendet, um eine zusätzliche Sicherheitsebene im Dateisystem anzuwenden.
Wenn Ihnen diese Übersetzung gefallen hat, schreiben Sie dies bitte in die Kommentare. Es wird eine größere Motivation geben, nützliche Übersetzungen zu erstellen.
Im Artikel habe ich einige Tippfehler und grammatische Fehler korrigiert. Ich habe einige umfangreiche Absätze in kleinere für eine bessere Lesbarkeit zerlegt.
Anstelle von "Nur jemand mit administrativen Rechten im Verzeichnis kann die Ausführungsberechtigung anwenden." habe ich es auf "Nur jemand mit Schreibrechten im Verzeichnis kann die Ausführungsberechtigung anwenden." korrigiert, was zutreffender ist.
Danke für den Hinweis .
Ersetzt:
Wenn Sie nicht der Eigentümer sind, prüft die Shell, ob Sie Mitglied einer Gruppe sind, die ebenfalls als Gruppennamen der Datei bezeichnet wird.In:
Wenn Sie nicht der Besitzer der Datei sind, überprüft die Shell, ob Sie Mitglied der Gruppe sind, die Berechtigungen für diese Datei hat. Wenn Sie Mitglied dieser Gruppe sind, erhalten Sie Zugriff auf die Datei mit den für die Gruppe festgelegten Berechtigungen, und die Shell beendet die Überprüfung.Danke für den Hinweis
Quelle: habr.com
