Berechtigungen unter Linux (chown, chmod, SUID, GUID, Sticky Bit, ACL, umask)

Hallo zusammen. Dies ist eine Übersetzung eines Artikels aus dem Buch RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 und EX300.

Von mir: Ich hoffe, dass der Artikel nicht nur für Anfänger nützlich ist, sondern auch erfahreneren Administratoren hilft, ihr Wissen zu optimieren.

Also lass uns gehen

Berechtigungen unter Linux (chown, chmod, SUID, GUID, Sticky Bit, ACL, umask)

Für den Zugriff auf Dateien unter Linux werden Berechtigungen verwendet. Diese Berechtigungen werden drei Objekten zugewiesen: dem Dateieigentümer, dem Gruppeneigentümer und einem anderen Objekt (d. h. allen anderen). In diesem Artikel erfahren Sie, wie Sie Berechtigungen anwenden.

Dieser Artikel beginnt mit einem Überblick über die Grundkonzepte, gefolgt von einer Diskussion über Sonderberechtigungen und Zugriffskontrolllisten (ACLs). Am Ende dieses Artikels behandeln wir das Festlegen von Standardberechtigungen über umask sowie die Verwaltung erweiterter Benutzerattribute.

Dateieigentumsverwaltung

Bevor Sie über Berechtigungen sprechen, sollten Sie sich über die Rolle des Datei- und Verzeichniseigentümers im Klaren sein. Der Besitz von Dateien und Verzeichnissen ist für den Umgang mit Berechtigungen von entscheidender Bedeutung. In diesem Abschnitt erfahren Sie zunächst, wie Sie den Eigentümer sehen können. Anschließend erfahren Sie, wie Sie den Gruppeneigentümer und Benutzer für Dateien und Verzeichnisse ändern.

Anzeigen des Eigentümers einer Datei oder eines Verzeichnisses

Unter Linux hat jede Datei und jedes Verzeichnis zwei Besitzer: einen Benutzer und einen Gruppenbesitzer.

Diese Besitzer werden festgelegt, wenn eine Datei oder ein Verzeichnis erstellt wird. Der Benutzer, der die Datei erstellt, wird Eigentümer dieser Datei, und die primäre Gruppe, zu der derselbe Benutzer gehört, wird ebenfalls Eigentümer dieser Datei. Um festzustellen, ob Sie als Benutzer die Berechtigung zum Zugriff auf eine Datei oder ein Verzeichnis haben, prüft die Shell den Besitz.

Dies geschieht in der folgenden Reihenfolge:

  1. Die Shell prüft, ob Sie der Eigentümer der Datei sind, auf die Sie zugreifen möchten. Wenn Sie der Eigentümer sind, erhalten Sie Berechtigungen und die Shell beendet die Überprüfung.
  2. Wenn Sie nicht der Eigentümer der Datei sind, prüft die Shell, ob Sie Mitglied einer Gruppe sind, die Berechtigungen für die Datei hat. Wenn Sie Mitglied dieser Gruppe sind, greifen Sie mit den von der Gruppe festgelegten Berechtigungen auf die Datei zu und die Shell stoppt die Überprüfung.
  3. Wenn Sie weder Benutzer noch Eigentümer einer Gruppe sind, erhalten Sie die Rechte anderer Benutzer (Andere).

Um die aktuellen Eigentümerzuweisungen anzuzeigen, können Sie den Befehl verwenden ls -l. Dieser Befehl zeigt den Benutzer und Besitzer der Gruppe an. Unten sehen Sie die Eigentümereinstellungen für Verzeichnisse im /home-Verzeichnis.

[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 einem bestimmten Verzeichnis anzeigen. Manchmal kann es nützlich sein, eine Liste aller Dateien auf dem System zu erhalten, deren Eigentümer ein bestimmter Benutzer oder eine bestimmte Gruppe ist. Hierfür können Sie verwenden gefunden. Streit Benutzer finden können hierfür genutzt werden. Der folgende Befehl listet beispielsweise alle Dateien auf, deren Eigentümer der Benutzer linda ist:

find / -user linda

Sie können auch verwenden gefunden um nach Dateien zu suchen, deren Besitzer eine bestimmte Gruppe ist.

Der folgende Befehl sucht beispielsweise nach allen Dateien, die zur Gruppe gehören Nutzer:

find / -group users

Besitzerwechsel

Um die entsprechenden Berechtigungen anzuwenden, müssen zunächst die Eigentumsverhältnisse berücksichtigt werden. Dafür gibt es einen Befehl chown. Die Syntax dieses Befehls ist leicht zu verstehen:

chown кто что

Der folgende Befehl ändert beispielsweise den Besitzer des Verzeichnisses /home/account in den Benutzer linda:

chown linda /home/account

Team chown verfügt über mehrere Optionen, von denen eine besonders nützlich ist: -R. Sie können erraten, was es tut, da diese Option auch für viele andere Befehle verfügbar ist. Dadurch können Sie den Eigentümer rekursiv festlegen, wodurch Sie den Eigentümer des aktuellen Verzeichnisses und aller darunter liegenden Elemente festlegen können. Der folgende Befehl ändert den Besitzer des /home-Verzeichnisses und aller darunter liegenden Elemente auf den Linda-Benutzer:

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

Lass es uns tun:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

Nun ist die Benutzerin lisa Eigentümerin des Kontoverzeichnisses geworden:

[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 Sie den Besitzer einer Gruppe

Es gibt zwei Möglichkeiten, den Eigentümer einer Gruppe zu ändern. Sie können dies mit tun chown, aber es gibt einen speziellen Befehl mit dem Namen chgrpdas macht den Job. Wenn Sie den Befehl verwenden möchten chown, verwenden . oder : vor dem Gruppennamen.

Der folgende Befehl ändert jeden Besitzer der Gruppe /home/account in die Kontogruppe:

chown .account /home/account

Sie können chown Es gibt verschiedene Möglichkeiten, den Besitzer eines Benutzers und/oder einer Gruppe zu ändern. Hier sind einige Beispiele:

  • chown lisa myfile1 legt den Benutzer lisa als Besitzer von myfile1 fest.
  • chown lisa.sales myfile legt den Benutzer lisa als Eigentümer der myfile-Datei fest und legt außerdem die Vertriebsgruppe als Eigentümer derselben Datei fest.
  • chown lisa:sales myfile das gleiche wie der vorherige Befehl.
  • chown .sales myfile legt die Vertriebsgruppe als Eigentümer von myfile fest, ohne den Eigentümer des Benutzers zu ändern.
  • chown :sales myfile das gleiche wie der vorherige Befehl.

Sie können den Befehl verwenden chgrpum den Eigentümer der Gruppe zu ändern. Betrachten Sie das folgende Beispiel, wo Sie es verwenden können chgrp Legen Sie den Eigentümer des Kontoverzeichnisses auf die Vertriebsgruppe fest:

chgrp .sales /home/account

Wie im Fall von chown, können Sie die Option nutzen -R с chgrp, sowie den Besitzer der Gruppe rekursiv ändern.

Den Standardeigentümer verstehen

Möglicherweise ist Ihnen aufgefallen, dass beim Erstellen einer Datei durch einen Benutzer der Standardeigentum angewendet wird.
Der Benutzer, der die Datei erstellt, wird automatisch Eigentümer dieser Datei, und die primäre Gruppe dieses Benutzers wird automatisch Eigentümer dieser Datei. Dies ist normalerweise die Gruppe, die in der Datei /etc/passwd als primäre Gruppe des Benutzers aufgeführt ist. Wenn der Benutzer jedoch Mitglied in mehr als einer Gruppe ist, kann der Benutzer die effektive Primärgruppe ändern.

Um die aktuell wirksame Primärgruppe anzuzeigen, kann der Benutzer den Befehl verwenden Gruppen:

[root@server1 ~]# groups lisa
lisa : lisa account sales

Wenn der aktuelle Linda-Benutzer die effektive Primärgruppe ändern möchte, verwendet er den Befehl neugrpgefolgt vom Namen der Gruppe, die er als neue effektive Primärgruppe festlegen möchte. Nach Verwendung des Befehls neugrp Die primäre Gruppe bleibt aktiv, bis der Benutzer einen Befehl eingibt wunsch oder nicht abmelden.

Im Folgenden wird gezeigt, wie der Benutzer Linda diesen Befehl verwendet, wobei „Sales“ die primäre Gruppe ist:

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 dem Ändern der effektiven primären Gruppe haben alle vom Benutzer neu erstellten Dateien diese Gruppe als Gruppeneigentümer. Um zur ursprünglichen primären Gruppeneinstellung zurückzukehren, verwenden Sie wunsch.

Um den Befehl verwenden zu können neugrp, muss der Benutzer Mitglied der Gruppe sein, die er als primäre Gruppe verwenden möchte. Darüber hinaus kann mit dem Befehl ein Gruppenpasswort für eine Gruppe verwendet werden Passwort. Wenn der Benutzer den Befehl verwendet neugrpaber kein Mitglied der Zielgruppe ist, fragt die Shell nach dem Passwort der Gruppe. Nachdem Sie das richtige Gruppenpasswort eingegeben haben, wird eine neue effektive Primärgruppe eingerichtet.

Grundrechtemanagement

Das Linux-Berechtigungssystem wurde in den 1970er Jahren erfunden. Da der Rechenbedarf in jenen Jahren begrenzt war, war das grundlegende Berechtigungssystem recht begrenzt. Dieses Berechtigungssystem verwendet drei Berechtigungen, die auf Dateien und Verzeichnisse angewendet werden können. In diesem Abschnitt erfahren Sie, wie Sie diese Berechtigungen verwenden und ändern.

Lese-, Schreib- und Ausführungsberechtigungen verstehen

Mit drei Grundberechtigungen können Sie Dateien lesen, schreiben und ausführen. Die Wirkung dieser Berechtigungen ist unterschiedlich, wenn sie auf Dateien oder Verzeichnisse angewendet wird. Für eine Datei gibt Ihnen die Leseberechtigung das Recht, die Datei zum Lesen zu öffnen. Daher können Sie den Inhalt lesen, aber das bedeutet, dass Ihr Computer die Datei öffnen und etwas damit machen kann.

Eine Programmdatei, die Zugriff auf eine Bibliothek benötigt, muss beispielsweise Lesezugriff auf diese Bibliothek haben. Daraus folgt, dass die Leseberechtigung die grundlegendste Berechtigung ist, die Sie zum Arbeiten mit Dateien benötigen.

Wenn Sie es auf ein Verzeichnis anwenden, können Sie durch Lesen den Inhalt dieses Verzeichnisses anzeigen. Sie sollten sich darüber im Klaren sein, dass diese Berechtigung Ihnen nicht erlaubt, die Dateien im Verzeichnis zu lesen. Das Linux-Berechtigungssystem kennt keine Vererbung und die einzige Möglichkeit, eine Datei zu lesen, besteht darin, Leseberechtigungen für diese Datei zu verwenden.

Wie Sie wahrscheinlich erraten können, ermöglicht die Schreibberechtigung, wenn sie auf eine Datei angewendet wird, das Schreiben in die Datei. Mit anderen Worten: Sie können damit den Inhalt vorhandener Dateien ändern. Es ist jedoch nicht möglich, neue Dateien zu erstellen oder zu löschen oder Dateiberechtigungen zu ändern. Dazu müssen Sie dem Verzeichnis, in dem Sie die Datei erstellen möchten, Schreibrechte erteilen. In Verzeichnissen können Sie mit dieser Berechtigung auch neue Unterverzeichnisse erstellen und löschen.

Die Ausführungsberechtigung ist das, was Sie zum Ausführen der Datei benötigen. Es wird nie standardmäßig installiert, was Linux nahezu völlig immun gegen Viren macht. Nur jemand mit Schreibberechtigung für das Verzeichnis kann die Ausführungsberechtigung anwenden.

Im Folgenden wird die Verwendung grundlegender Berechtigungen zusammengefasst:

Berechtigungen unter Linux (chown, chmod, SUID, GUID, Sticky Bit, ACL, umask)

Mit chmod

Der Befehl dient der Verwaltung von Berechtigungen. chmod... Verwenden von chmod Sie können Berechtigungen für den Benutzer (Benutzer), Gruppen (Gruppe) und andere (Andere) festlegen. Sie können diesen Befehl in zwei Modi verwenden: im relativen Modus und im absoluten Modus. Im absoluten Modus werden drei Ziffern zum Festlegen grundlegender Berechtigungen verwendet.

Berechtigungen unter Linux (chown, chmod, SUID, GUID, Sticky Bit, ACL, umask)

Berechnen Sie beim Festlegen von Berechtigungen den benötigten Wert. Wenn Sie Lesen/Schreiben/Ausführen für Benutzer, Lesen/Ausführen für Gruppen und Lesen/Ausführen für andere in /somefile festlegen möchten, verwenden Sie den folgenden Befehl chmod:

chmod 755 /somefile

Wenn Sie verwenden chmod Auf diese Weise werden alle aktuellen Berechtigungen durch die von Ihnen festgelegten Berechtigungen ersetzt.

Wenn Sie die Berechtigungen relativ zu den aktuellen Berechtigungen ändern möchten, können Sie Folgendes verwenden: chmod im relativen Modus. Benutzen chmod Im relativen Modus arbeiten Sie mit drei Indikatoren, um anzuzeigen, was Sie tun möchten:

  1. Zuerst geben Sie an, für wen Sie die Berechtigungen ändern möchten. Dazu können Sie zwischen Benutzer (u), Gruppe (g) und andere (o).
  2. Anschließend verwenden Sie eine Anweisung, um Berechtigungen zum aktuellen Modus hinzuzufügen oder zu entfernen oder sie absolut festzulegen.
  3. Am Ende verwenden Sie r, w и xum anzugeben, welche Berechtigungen Sie festlegen möchten.

Wenn Sie Berechtigungen im relativen Modus ändern, können Sie den „bis“-Teil überspringen, um Berechtigungen für alle Objekte hinzuzufügen oder zu entfernen. Mit diesem Befehl wird beispielsweise die Ausführungsberechtigung für alle Benutzer hinzugefügt:

chmod +x somefile

Wenn Sie im relativen Modus arbeiten, können Sie auch komplexere Befehle verwenden. Mit diesem Befehl wird beispielsweise einer Gruppe die Schreibberechtigung hinzugefügt und anderen die Leseberechtigung entzogen:

chmod g+w,o-r somefile

Wenn Sie chmod -R o+rx /data Sie legen die Ausführungsberechtigung für alle Verzeichnisse sowie Dateien im Verzeichnis /data fest. Um die Ausführungsberechtigung nur für Verzeichnisse und nicht für Dateien festzulegen, verwenden Sie chmod -R o+ rX /data.

Das große X stellt sicher, dass Dateien keine Ausführungsberechtigung erhalten, es sei denn, die Datei hat für einige Objekte bereits Ausführungsberechtigungen festgelegt. Dies macht X zu einer intelligenteren Möglichkeit, mit Ausführungsberechtigungen umzugehen. Dadurch wird vermieden, dass diese Berechtigung für Dateien festgelegt wird, für die sie nicht benötigt wird.

Erweiterte Rechte

Zusätzlich zu den grundlegenden Berechtigungen, über die Sie gerade gelesen haben, verfügt Linux auch über eine Reihe erweiterter Berechtigungen. Dies sind nicht die Berechtigungen, die Sie standardmäßig festlegen, aber manchmal stellen sie eine nützliche Ergänzung dar. In diesem Abschnitt erfahren Sie, was sie sind und wie Sie sie einrichten.

Grundlegendes zu SUID, GUID und erweiterten Sticky Bit-Berechtigungen

Es gibt drei erweiterte Berechtigungen. Die erste davon ist die Berechtigung zum Festlegen einer Benutzerkennung (SUID). In einigen Sonderfällen können Sie diese Berechtigung auf ausführbare Dateien anwenden. Standardmäßig führt ein Benutzer, der eine ausführbare Datei ausführt, diese Datei mit seinen eigenen Berechtigungen aus.

Für normale Benutzer bedeutet dies in der Regel, dass die Nutzung des Programms eingeschränkt ist. In manchen Fällen benötigt der Benutzer jedoch spezielle Berechtigungen, nur um eine bestimmte Aufgabe auszuführen.

Stellen Sie sich beispielsweise eine Situation vor, in der ein Benutzer sein Passwort ändern muss. Dazu muss der Benutzer sein neues Passwort in die Datei /etc/shadow schreiben. Allerdings ist diese Datei für Nicht-Root-Benutzer 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. Das Dienstprogramm /usr/bin/passwd verwendet diese Berechtigung standardmäßig. Das bedeutet, dass der Benutzer beim Ändern des Passworts vorübergehend zum Root wird und somit in die Datei /etc/shadow schreiben kann. Sie können die SUID-Berechtigung mit sehen ls -l als s an einer Stelle, wo man es normalerweise erwarten würde x für benutzerdefinierte Berechtigungen:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

Die SUID-Berechtigung mag nützlich erscheinen (und ist es in manchen Fällen auch), ist aber gleichzeitig potenziell gefährlich. Bei unsachgemäßer Anwendung kann es passieren, dass Sie Root-Rechte versehentlich abgeben. Daher empfehle ich, es nur mit größter Sorgfalt zu verwenden.

Die meisten Administratoren werden es nie verwenden müssen; Sie werden es nur in einigen Dateien sehen, in denen das Betriebssystem es standardmäßig festlegen sollte.

Die zweite Sonderberechtigung ist die Gruppenkennung (SGID). Diese Erlaubnis hat zwei Auswirkungen. Wenn es auf eine ausführbare Datei angewendet wird, erteilt es dem Benutzer, der die Datei ausführt, die Berechtigungen des Gruppeneigentümers der Datei. SGID kann also mehr oder weniger dasselbe tun wie SUID. Allerdings wird SGID für diesen Zweck praktisch nicht verwendet.

Wie bei der SUID-Berechtigung wird SGID als Standardeinstellung auf einige Systemdateien angewendet.

Bei Anwendung auf ein Verzeichnis kann die SGID nützlich sein, da Sie damit den Standardgruppenbesitzer für in diesem Verzeichnis erstellte Dateien und Unterverzeichnisse festlegen können. Wenn ein Benutzer eine Datei erstellt, wird standardmäßig seine effektive Primärgruppe als Gruppeneigentümer für diese Datei festgelegt.

Dies ist nicht immer sehr nützlich, insbesondere da die primäre Gruppe von Red Hat/CentOS-Benutzern auf eine Gruppe mit demselben Namen wie der Benutzer eingestellt ist und der Benutzer das einzige Mitglied ist. Daher werden die vom Benutzer erstellten Dateien standardmäßig in großen Mengen freigegeben.

Stellen Sie sich eine Situation vor, in der die Benutzer Linda und Lori in der Buchhaltung arbeiten und Mitglieder einer Gruppe sind Konto. Standardmäßig sind diese Benutzer Mitglieder einer privaten Gruppe, deren einziges Mitglied sie sind. Allerdings sind beide Benutzer Mitglieder der Kontogruppe, aber auch als sekundärer Gruppenparameter.

Wenn einer dieser Benutzer eine Datei erstellt, wird standardmäßig die primäre Gruppe zum Eigentümer. Daher kann Linda standardmäßig nicht auf von Lori erstellte Dateien zugreifen und umgekehrt. Wenn Sie jedoch ein freigegebenes Gruppenverzeichnis erstellen (z. B. /groups/account) und sicherstellen, dass die SGID-Berechtigung auf dieses Verzeichnis angewendet wird und das Gruppenkonto als Gruppeneigentümer für dieses Verzeichnis festgelegt ist, werden alle in diesem Verzeichnis erstellten Dateien und alle seiner Unterverzeichnisse erhalten standardmäßig auch das Gruppenkonto als Gruppeneigentümer.

Aus diesem Grund ist die SGID-Berechtigung eine sehr nützliche Berechtigung für öffentliche Gruppenverzeichnisse.

SGID-Berechtigung wird in der Ausgabe angezeigt ls -l als s an der Stelle, an der Sie normalerweise die Berechtigung zum Ausführen einer Gruppe finden würden:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

Die dritte der Sonderberechtigungen ist das Sticky-Bit. Diese Berechtigung ist nützlich, um Dateien vor versehentlichem Löschen in einer Umgebung zu schützen, in der mehrere Benutzer Schreibzugriff auf dasselbe Verzeichnis haben. Wenn ein Sticky-Bit verwendet wird, kann ein Benutzer eine Datei nur löschen, wenn er der Benutzerbesitzer der Datei oder des Verzeichnisses ist, das die Datei enthält. Aus diesem Grund wird es als Standardberechtigung für das Verzeichnis /tmp verwendet und kann auch für öffentliche Gruppenverzeichnisse nützlich sein.

Ohne das Sticky-Bit kann der 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 Schreibberechtigungen für das Verzeichnis /data/account haben und diese Berechtigungen erhalten, indem sie Mitglieder der Kontogruppe sind. Daher kann Linda von Lori erstellte Dateien löschen und umgekehrt.

Wenn Sie das Sticky-Bit anwenden, kann der Benutzer Dateien nur löschen, wenn eine der folgenden Bedingungen zutrifft:

  • Der Benutzer ist der Eigentümer der Datei;
  • Der Benutzer ist Eigentümer des Verzeichnisses, in dem sich die Datei befindet.

Wenn Sie ls -l, Sie können das klebrige Stück als sehen t an der Stelle, an der Sie normalerweise die Ausführungserlaubnis für andere sehen würden:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

Erweiterte Rechte anwenden

Zum Anwenden von SUID, SGID und Sticky Bit können Sie auch verwenden chmod. SUID hat einen numerischen Wert von 4, SGID hat einen numerischen Wert von 2 und Sticky Bit hat einen numerischen Wert von 1.

Wenn Sie diese Berechtigungen anwenden möchten, müssen Sie ein vierstelliges Argument hinzufügen chmod, dessen erste Ziffer sich auf Sonderberechtigungen bezieht. Die folgende Zeile fügt beispielsweise die SGID-Berechtigung zum Verzeichnis hinzu und legt rwx für Benutzer und rx für Gruppe und andere fest:

chmod 2755 /somedir

Dies ist eher unpraktisch, wenn Sie vor der Arbeit die aktuell eingestellten Berechtigungen sehen müssen chmod im absoluten Modus. (Wenn Sie dies nicht tun, besteht die Gefahr, dass Berechtigungen überschrieben werden.) Daher empfehle ich die Ausführung im relativen Modus, wenn Sie eine der Sonderberechtigungen anwenden müssen:

  1. Für SUID-Verwendung chmod u+s.
  2. Zur SGID-Nutzung chmod g+s.
  3. Zur Verwendung mit klebrigen Bits chmod +t, gefolgt vom Namen der Datei oder des Verzeichnisses, für die Sie Berechtigungen festlegen möchten.

Die Tabelle fasst alles zusammen, was Sie über die Verwaltung von Sonderberechtigungen wissen müssen.

Berechtigungen unter Linux (chown, chmod, SUID, GUID, Sticky Bit, ACL, umask)

Beispiel für die Arbeit mit Sonderrechten

In diesem Beispiel verwenden Sie spezielle Berechtigungen, um Gruppenmitgliedern die gemeinsame Nutzung von Dateien im freigegebenen Gruppenverzeichnis zu erleichtern. Sie weisen der festgelegten Gruppen-ID das ID-Bit sowie das Sticky-Bit zu und sehen, dass nach dem Festlegen Funktionen hinzugefügt werden, um den Gruppenmitgliedern die Zusammenarbeit zu erleichtern.

  1. Öffnen Sie ein Terminal, in dem Sie der Linda-Benutzer sind. Mit dem Befehl können Sie einen Benutzer erstellen Benutzer hinzufügen Linda, Passwort hinzufügen Passwort Linda.
  2. Erstellen Sie mit dem Befehl das Verzeichnis /data im Stammverzeichnis und das Unterverzeichnis /data/sales mkdir -p /data/sales. Vollständig cd /data/salesum zum Verkaufsverzeichnis zu gelangen. Vollständig Berühre Linda1 и Berühre Linda2um zwei leere Dateien zu erstellen, die Linda gehören.
  3. Ausführen su-lisa um den aktuellen Benutzer auf den Benutzer lisa umzustellen, der auch Mitglied der Vertriebsgruppe ist.
  4. Ausführen cd /data/sales und aus diesem Verzeichnis ausführen ls -l. Sie sehen zwei Dateien, die vom Benutzer linda erstellt wurden und zur Gruppe linda gehören. Vollständig rm -f linda*. Dadurch werden beide Dateien entfernt.
  5. Ausführen berühre lisa1 и berühre lisa2um zwei Dateien zu erstellen, die dem Benutzer lisa gehören.
  6. Ausführen su- um Ihre Root-Rechte zu erhöhen.
  7. Ausführen chmod g+s,o+t /data/salesum das Gruppenkennungsbit (GUID) sowie das Sticky-Bit im freigegebenen Gruppenverzeichnis festzulegen.
  8. Ausführen su-linda. Dann mach Berühre Linda3 и Berühre Linda4. Sie sollten nun sehen, dass die beiden von Ihnen erstellten Dateien Eigentum der Gruppe sales sind, die der Gruppeneigentümer des Verzeichnisses /data/sales ist.
  9. Ausführen rm -rf lisa*. Das Sticky-Bit verhindert, dass diese Dateien im Namen des Linda-Benutzers gelöscht werden, da Sie nicht der Eigentümer dieser Dateien sind. Beachten Sie, dass der Linda-Benutzer diese Dateien trotzdem löschen kann, wenn er Eigentümer des Verzeichnisses /data/sales ist!

ACL-Verwaltung (setfacl, getfacl) unter Linux

Obwohl die oben besprochenen erweiterten Berechtigungen die Art und Weise, wie Linux mit Berechtigungen umgeht, um nützliche Funktionen erweitern, können Sie nicht mehr als einem Benutzer oder einer Gruppe Berechtigungen in derselben Datei erteilen.

Zugriffskontrolllisten bieten diese Funktion. Darüber hinaus ermöglichen sie Administratoren, Standardberechtigungen auf komplexe Weise festzulegen, wobei die festgelegten Berechtigungen von Verzeichnis zu Verzeichnis unterschiedlich sein können.

ACLs verstehen

Obwohl das ACL-Subsystem Ihrem Server großartige Funktionen hinzufügt, hat es einen Nachteil: Es wird nicht von allen Dienstprogrammen unterstützt. Daher gehen beim Kopieren oder Verschieben von Dateien möglicherweise Ihre ACL-Einstellungen verloren, und Ihre Sicherungssoftware kann Ihre ACL-Einstellungen möglicherweise nicht sichern.

Das Dienstprogramm tar unterstützt keine ACLs. Um sicherzustellen, dass die ACL-Einstellungen beim Erstellen einer Sicherung nicht verloren gehen, verwenden Sie Star statt Teer. Star funktioniert mit den gleichen Optionen wie tar; Es wird lediglich Unterstützung für ACL-Einstellungen hinzugefügt.

Sie können ACLs auch mit sichern getfacl, die mit dem Befehl setfacl wiederhergestellt werden kann. Um ein Backup zu erstellen, verwenden Sie getfacl -R /directory > file.acls. Um Einstellungen aus einer Sicherungsdatei wiederherzustellen, verwenden Sie setfacl --restore=file.acl.

Mangelnde Unterstützung durch einige Tools sollte kein Problem darstellen. ACLs werden häufig als strukturelle Maßnahme auf Verzeichnisse und nicht auf einzelne Dateien angewendet.
Daher wird es nicht viele, sondern nur wenige davon geben, die an intelligenten Stellen im Dateisystem angewendet werden. Daher ist die Wiederherstellung der ursprünglichen ACLs, mit denen Sie gearbeitet haben, relativ einfach, auch wenn Ihre Backup-Software diese nicht unterstützt.

Vorbereiten des Dateisystems für ACLs

Bevor Sie mit der Arbeit mit ACLs beginnen, müssen Sie möglicherweise Ihr Dateisystem für die Unterstützung von ACLs vorbereiten. Da Dateisystemmetadaten erweitert werden müssen, gibt es nicht immer standardmäßige Unterstützung für ACLs im Dateisystem. Wenn Sie beim Einrichten von ACLs für ein Dateisystem die Meldung „Vorgang nicht unterstützt“ erhalten, unterstützt Ihr Dateisystem möglicherweise keine ACLs.

Um dies zu beheben, müssen Sie die Option hinzufügen ACL-Halterung in /etc/fstab, sodass das Dateisystem standardmäßig mit ACL-Unterstützung gemountet wird.

ACL-Einstellungen mit setfacl und getfacl ändern und anzeigen

Um eine ACL festzulegen, benötigen Sie den Befehl Setfakl. Um die aktuellen ACL-Einstellungen anzuzeigen, benötigen Sie getfacl. Mannschaft ls -l zeigt keine vorhandenen ACLs an; Es wird lediglich ein + nach der Berechtigungsliste angezeigt, was darauf hinweist, dass die ACLs auch für die Datei gelten.

Bevor Sie ACLs einrichten, ist es immer eine gute Idee, die aktuellen ACL-Einstellungen mit anzuzeigen getfacl. Im folgenden Beispiel können Sie die aktuellen Berechtigungen sehen, wie mit gezeigt ls -l, und auch wie abgebildet mit getfacl. Wenn Sie genau hinsehen, werden Sie feststellen, dass die angezeigten Informationen genau dieselben 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

Als Ergebnis der Ausführung des Befehls getfacl Unten sehen Sie, dass die Berechtigungen für drei verschiedene Objekte angezeigt werden: Benutzer, Gruppe und andere. Fügen wir nun eine ACL hinzu, um auch der Vertriebsgruppe Lese- und Ausführungsberechtigungen zu erteilen. Befehl dafür setfacl -mg:sales:rx /dir. In diesem Team -m zeigt an, dass die aktuellen ACL-Einstellungen geändert werden müssen. Danach g:sales:rx weist den Befehl an, die Lese-/Ausführungs-ACL festzulegen (rx) für die Gruppe (g) Verkäufe. Unten sehen Sie, wie der Befehl aussieht, sowie die Ausgabe des getfacl-Befehls 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

Nachdem Sie nun wissen, wie Sie eine Gruppen-ACL einrichten, ist es einfacher, die ACLs für Benutzer und andere Benutzer zu verstehen. Zum Beispiel der Befehl setfacl -mu:linda:rwx /data erteilt dem Benutzer linda Berechtigungen im Verzeichnis /data, ohne ihn zum Eigentümer zu machen oder die Zuweisung des aktuellen Eigentümers zu ändern.

Team Setfakl verfügt über viele Funktionen und Optionen. Eine Option ist besonders wichtig, der Parameter -R. Wenn diese Option verwendet wird, wird die ACL für alle Dateien und Unterverzeichnisse festgelegt, die derzeit in dem Verzeichnis vorhanden sind, in dem Sie die ACL festlegen. Es wird empfohlen, diese Option immer zu verwenden, wenn Sie ACLs für vorhandene Verzeichnisse ändern.

Arbeiten mit Standard-ACLs

Einer der Vorteile der Verwendung von ACLs besteht darin, dass Sie mehreren Benutzern oder Gruppen in einem Verzeichnis Berechtigungen erteilen können. Ein weiterer Vorteil besteht darin, dass Sie die Vererbung aktivieren können, indem Sie mit den Standard-ACLs arbeiten.

Durch Festlegen der Standard-ACL bestimmen Sie die Berechtigungen, die für alle neuen Elemente festgelegt werden, die im Verzeichnis erstellt werden. Beachten Sie, dass die Standard-ACL die Berechtigungen für vorhandene Dateien und Unterverzeichnisse nicht ändert. Um sie zu ändern, müssen Sie auch eine normale ACL hinzufügen!

Das ist wichtig zu wissen. Wenn Sie eine ACL verwenden möchten, um mehrere Benutzer oder Gruppen für den Zugriff auf dasselbe Verzeichnis zu konfigurieren, müssen Sie die ACL zweimal festlegen. Erste Benutzung setfacl -R -mum die ACL für die aktuellen Dateien zu ändern. Dann benutze setfacl-md:sich um alle neuen Elemente zu kümmern, die ebenfalls erstellt werden.

Um die Standard-ACL festzulegen, müssen Sie lediglich die Option hinzufügen d nach Option -m (Reihenfolge ist wichtig!). Also nutzen setfacl -md:g:sales:rx /datawenn Sie möchten, dass Gruppenverkäufe alles lesen und ausführen, was jemals im Verzeichnis /data erstellt wurde.

Wenn Sie Standard-ACLs verwenden, kann es auch nützlich sein, ACLs für andere festzulegen. Dies macht in der Regel wenig Sinn, da Sie die Berechtigungen auch für andere Benutzer ändern können chmod. Was Sie jedoch nicht damit anfangen können chmodbesteht darin, die Rechte anzugeben, die anderen Benutzern für jede neue Datei gewährt werden müssen, die jemals erstellt wird. Wenn Sie beispielsweise verhindern möchten, dass andere Berechtigungen für alles erhalten, was in /data erstellt wurde, verwenden Sie setfacl -md:o::- /data.

ACLs und normale Berechtigungen sind nicht immer gut integriert. Es können Probleme auftreten, wenn Sie eine Standard-ACL auf ein Verzeichnis anwenden, dann Elemente zu diesem Verzeichnis hinzufügen und dann versuchen, die normalen Berechtigungen zu ändern. Änderungen, die sich auf normale Berechtigungen beziehen, werden in der ACL-Übersicht nicht gut widergespiegelt. Um Probleme zu vermeiden, legen Sie zuerst die normalen Berechtigungen und dann die Standard-ACLs fest (und versuchen Sie, sie danach nicht mehr zu ändern).

Beispiel für eine erweiterte Rechteverwaltung mithilfe von ACLs

In diesem Beispiel fahren Sie mit den Verzeichnissen /data/account und /data/sales fort, die Sie zuvor erstellt haben. In den vorherigen Beispielen haben Sie sichergestellt, dass die Vertriebsgruppe über Berechtigungen für /data/sales und die Kontogruppe über Berechtigungen für /data/account verfügt.

Stellen Sie zunächst sicher, dass die Kontogruppe Leseberechtigungen für das Verzeichnis /data/sales und die Vertriebsgruppe Leseberechtigungen für das Verzeichnis /data/account erhält.

Anschließend legen Sie Standard-ACLs fest, um sicherzustellen, dass alle neuen Dateien über die richtigen Berechtigungen für alle neuen Elemente verfügen.

  1. Öffnen Sie ein Terminal.
  2. Ausführen setfacl -mg:account:rx /data/sales и setfacl -mg:sales:rx /data/account.
  3. Ausführen getfaclum sicherzustellen, dass die Berechtigungen wie gewünscht festgelegt wurden.
  4. Ausführen setfacl -md:g:account:rwx,g:sales:rx /data/salesum die Standard-ACL für das Verkaufsverzeichnis festzulegen.
  5. Fügen Sie mithilfe von eine Standard-ACL für das Verzeichnis /data/account hinzu setfacl -md:g:sales:rwx,g:account:rx /data/account.
  6. Überprüfen Sie, ob die ACL-Einstellungen wirksam sind, indem Sie eine neue Datei zu /data/sales hinzufügen. Vollständig Berühren Sie /data/sales/newfile und TU getfacl /data/sales/newfile um die aktuellen Berechtigungen zu überprüfen.

Festlegen von Standardberechtigungen mit umask

Oben haben Sie gelernt, wie Sie mit Standard-ACLs arbeiten. Wenn Sie keine ACL verwenden, gibt es eine Shell-Option, die die Standardberechtigungen bestimmt, die Sie erhalten: umask (umgekehrte Maske). In diesem Abschnitt erfahren Sie, wie Sie die Standardberechtigungen mit ändern umask.

Möglicherweise ist Ihnen aufgefallen, dass beim Erstellen einer neuen Datei einige Standardberechtigungen festgelegt werden. Diese Berechtigungen werden durch die Einstellung bestimmt umask. Diese Shell-Einstellung gilt für alle Benutzer bei der Anmeldung. Im Parameter umask Es wird ein numerischer Wert verwendet, der von den maximalen Berechtigungen abgezogen wird, die automatisch für die Datei festgelegt werden können. Die maximale Einstellung für Dateien beträgt 666 und für Verzeichnisse 777.

Von dieser Regel gelten jedoch einige Ausnahmen. Eine vollständige Übersicht der Einstellungen finden Sie hier umask in der Tabelle unten.

Von den Zahlen, die in verwendet werden umask, wie im Fall numerischer Argumente für den Befehl chmodDie erste Ziffer bezieht sich auf die Berechtigungen des Benutzers, die zweite Ziffer auf die Berechtigungen der Gruppe und die letzte Ziffer auf die für andere festgelegten Standardberechtigungen. Bedeutung umask Der Standardwert 022 ergibt 644 für alle neuen Dateien und 755 für alle neuen Verzeichnisse, die auf Ihrem Server erstellt werden.

Vollständige Übersicht aller Zahlenwerte umask und ihre Ergebnisse in der folgenden Tabelle.

Berechtigungen unter Linux (chown, chmod, SUID, GUID, Sticky Bit, ACL, umask)

Eine einfache Möglichkeit, um zu sehen, wie die umask-Einstellung funktioniert, ist wie folgt: Beginnen Sie mit den Standardberechtigungen der Datei, die auf 666 eingestellt sind, und subtrahieren Sie umask, um die effektiven Berechtigungen zu erhalten. Machen Sie dasselbe für das Verzeichnis und seine Standardberechtigungen von 777.

Es gibt zwei Möglichkeiten, die umask-Einstellung zu ändern: für alle Benutzer und für einzelne Benutzer. Wenn Sie die umask für alle Benutzer festlegen möchten, müssen Sie sicherstellen, dass die umask-Einstellung beim Starten von Shell-Umgebungsdateien berücksichtigt wird, wie in /etc/profile angegeben. Der richtige Ansatz besteht darin, ein Shell-Skript namens umask.sh im Verzeichnis /etc/profile.d zu erstellen und die Umask anzugeben, die Sie in diesem Shell-Skript verwenden möchten. Wenn die umask in dieser Datei geändert wird, wird sie nach der Anmeldung am Server auf alle Benutzer angewendet.

Eine Alternative zum Festlegen der Umask über /etc/profile und zugehörige Dateien, wo sie für alle sich anmeldenden Benutzer gilt, besteht darin, die Umask-Einstellungen in einer Datei namens .profile zu ändern, die im Home-Verzeichnis jedes Benutzers erstellt wird.

Die in dieser Datei angewendeten Einstellungen 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 die Standard-Umask für den Root-Benutzer auf 027 zu ändern, während normale Benutzer mit der Standard-Umask von 022 arbeiten.

Arbeiten mit erweiterten Benutzerattributen

Dies ist der letzte Abschnitt über Linux-Berechtigungen.

Beim Arbeiten mit Berechtigungen besteht immer eine Beziehung zwischen einem Benutzer- oder Gruppenobjekt und den Berechtigungen, die Benutzer- oder Gruppenobjekte für eine Datei oder ein Verzeichnis haben. Eine alternative Methode zum Schutz von Dateien auf einem Linux-Server ist die Arbeit mit Attributen.
Attribute erledigen ihre Aufgabe unabhängig davon, welcher Benutzer auf die Datei zugreift.

Wie bei ACLs müssen Dateiattribute möglicherweise die Option enthalten montieren.

Dies ist eine Option user_xattr. Wenn Sie beim Arbeiten mit erweiterten Benutzerattributen die Meldung „Vorgang nicht unterstützt“ erhalten, stellen Sie sicher, dass der Parameter festgelegt ist montieren in /etc/fstab.

Viele Attribute sind dokumentiert. Einige Attribute sind verfügbar, aber noch nicht implementiert. Benutze sie nicht; Sie werden dir nichts bringen.

Nachfolgend sind die nützlichsten Attribute aufgeführt, die Sie anwenden können:

A Dieses Attribut stellt sicher, dass sich die Dateizugriffszeit der Datei nicht ändert.
Normalerweise muss bei jedem Öffnen einer Datei die Zugriffszeit der Datei in den Metadaten der Datei aufgezeichnet werden. Dies wirkt sich negativ auf die Leistung aus; also für Dateien, auf die regelmäßig zugegriffen wird, das Attribut A kann verwendet werden, um diese Funktion zu deaktivieren.

a Mit diesem Attribut können Sie eine Datei hinzufügen, aber nicht entfernen.

c Wenn Sie ein Dateisystem verwenden, das die Komprimierung auf Volume-Ebene unterstützt, stellt dieses Dateiattribut sicher, dass die Datei komprimiert wird, wenn der Komprimierungsmechanismus zum ersten Mal aktiviert wird.

D Dieses Attribut stellt sicher, dass Änderungen an Dateien sofort auf die Festplatte geschrieben werden und nicht erst zwischengespeichert werden. Dies ist ein nützliches Attribut für wichtige Datenbankdateien, um sicherzustellen, dass diese nicht zwischen dem Dateicache und der Festplatte verloren gehen.

d Dieses Attribut stellt sicher, dass die Datei nicht in Backups gespeichert wird, in denen das Dump-Dienstprogramm verwendet wird.

I Dieses Attribut aktiviert die Indizierung für das Verzeichnis, in dem sie aktiviert ist. Dies ermöglicht einen schnelleren Dateizugriff für primitive Dateisysteme wie Ext3, die nicht die B-Tree-Datenbank für den schnellen Dateizugriff verwenden.

i Dieses Attribut macht die Datei unveränderlich. Daher können keine Änderungen an der Datei vorgenommen werden, was für Dateien nützlich ist, die zusätzlichen Schutz benötigen.

j Dieses Attribut stellt sicher, dass die Datei auf einem ext3-Dateisystem zuerst in das Journal und dann in Datenblöcke auf der Festplatte geschrieben wird.

s Überschreiben Sie die Blöcke, in denen die Datei gespeichert wurde, nach dem Löschen der Datei mit 0s. Dadurch wird sichergestellt, dass die Datei nach dem Löschen nicht wiederhergestellt werden kann.

u Dieses Attribut speichert Informationen über die Löschung. Auf diese Weise können Sie ein Dienstprogramm entwickeln, das diese Informationen nutzt, um gelöschte Dateien zu retten.

Wenn Sie die Attribute anwenden möchten, können Sie den Befehl verwenden Geschwätz. Verwenden Sie zum Beispiel chattr +s somefileum Attribute auf eine Datei anzuwenden. Müssen Sie ein Attribut entfernen? Dann benutze chattr -s somefileund es wird entfernt. Um einen Überblick über alle aktuell angewendeten Attribute zu erhalten, verwenden Sie den Befehl lsattr.

Zusammenfassung

In diesem Artikel haben Sie erfahren, wie Sie mit Berechtigungen arbeiten. Sie lesen über die drei Grundberechtigungen, erweiterte Berechtigungen und wie man ACLs auf ein Dateisystem anwendet. Sie haben außerdem gelernt, wie Sie mit der umask-Option Standardberechtigungen anwenden. Am Ende dieses Artikels haben Sie erfahren, wie Sie benutzererweiterte Attribute verwenden, um eine zusätzliche Ebene der Dateisystemsicherheit anzuwenden.

Wenn Ihnen diese Übersetzung gefallen hat, schreiben Sie bitte in den Kommentaren darüber. Es wird mehr Motivation geben, nützliche Übersetzungen anzufertigen.

Einige Tipp- und Grammatikfehler im Artikel wurden korrigiert. Einige umfangreiche Absätze wurden zur besseren Lesbarkeit in kleinere Absätze reduziert.

Anstelle von „Nur jemand mit Administratorrechten für das Verzeichnis kann die Ausführungsberechtigung erteilen.“ behoben auf „Nur jemand mit Schreibberechtigungen für das Verzeichnis kann Ausführungsberechtigungen anwenden.“ was korrekter wäre.

Danke für die Kommentare berez.

Ersetzt:
Wenn Sie nicht der Eigentümer des Benutzers sind, prüft die Shell, ob Sie Mitglied einer Gruppe sind, die auch als Gruppe der Datei bezeichnet wird.

Ein:
Wenn Sie nicht der Eigentümer der Datei sind, prüft die Shell, ob Sie Mitglied einer Gruppe sind, die Berechtigungen für die Datei hat. Wenn Sie Mitglied dieser Gruppe sind, greifen Sie mit den von der Gruppe festgelegten Berechtigungen auf die Datei zu und die Shell stoppt die Überprüfung.

Danke für deinen Kommentar KryptoPirat

Source: habr.com

Kommentar hinzufügen