Linux-Tutorial / Dateiberechtigungen und sicherer sudo-Einsatz
Linux-Dateiberechtigungen entscheiden, ob der Eigentümer, die Eigentümergruppe und alle anderen eine Datei lesen (r), schreiben (w) oder ausführen (x) dürfen. sudo ermöglicht es einem autorisierten Benutzer, einen bestimmten Befehl als ein anderer Benutzer, normalerweise der Administrator, auszuführen. Wenn der Zugriff fehlschlägt, prüfen Sie zuerst Eigentum und Berechtigungen; verwenden Sie erhöhte Privilegien nur für die Operation, die sie tatsächlich benötigt.
Die initialen notes.txt-Abfragen beziehen sich auf die Datei, die später im neuen Übungsverzeichnis erstellt wird. Führen Sie diese Vorbereitung zuerst durch, und kehren Sie dann zurück, um Eigentümer, Gruppe und Modus zu prüfen. Siehe Benutzer und Gruppen für Kontokontext.
Prüfen Sie zuerst Ihre Identität und den Dateieigentümer
Berechtigungen sind keine isolierte Zahl, die an eine Datei angehängt ist. Der Benutzer und die Gruppen des aktuellen Prozesses, der Eigentümer und die Gruppe der Datei sowie die Berechtigungen in den Verzeichnissen entlang des Pfads sind alle relevant. Verwenden Sie id für die aktuelle Sitzung und ls -l und stat für das Ziel. Die vorherige Lektion über Benutzer, Gruppen und Eigentum liefert die Identitätskonzepte, die benötigt werden, um diese Berechtigungen zu interpretieren.
id ls -l notes.txt stat -c '%A %a %U %G %n' notes.txt
Wenn ls -l -rw-r----- 1 learner editors ... notes.txt anzeigt, identifiziert das führende - eine normale Datei. Die nächsten drei Gruppen, rw-, r-- und ---, gelten für den Eigentümer, die Eigentümergruppe und andere. Die Namen sind illustrativ; Ihr System wird abweichen. Das %a-Feld von GNU stat zeigt eine oktale Form wie 640.
Was r, w und x für Dateien und Verzeichnisse bedeuten
Die gleichen Buchstaben erlauben unterschiedliche Operationen auf regulären Dateien und Verzeichnissen. Dieser Unterschied erklärt, warum eine lesbare Datei über ihren Verzeichnispfad dennoch unzugänglich sein kann.
| Berechtigung | Reguläre Datei | Verzeichnis |
|---|---|---|
r |
Inhalte lesen | Die Namen im Verzeichnis lesen |
w |
Inhalte ändern | Notwendig zum Erstellen, Löschen und Umbenennen von Einträgen |
x |
Erlaubt das Ausführen einer ausführbaren Datei | Durchquere das Verzeichnis, um bekannte Einträge zu erreichen |
Das Öffnen einer Datei erfordert Durchquerungserlaubnis für die Verzeichnisse auf ihrem Pfad. Das Entfernen einer Datei hängt normalerweise von w und x im übergeordneten Verzeichnis ab, nicht von w in der Datei selbst. Das Sticky-Bit, Zugriffssteuerungslisten (ACLs), das Verhalten des Dateisystems oder eine Richtlinie wie SELinux können weitere Einschränkungen auferlegen.
Berechtigungen ändern einer Übungsdatei mit chmod
Das Beispiel erstellt ein neues Übungsverzeichnis und eine Datei in Ihrem Home-Verzeichnis. Wenn dieser Verzeichnisname bereits existiert, wählen Sie einen anderen. Halten Sie an, wenn mkdir oder cd fehlschlägt. printf schreibt notes.txt im aktuellen Verzeichnis, prüfen Sie daher, dass Sie keine bestehende Datei ersetzen.
mkdir ~/linux-course-17-practice cd ~/linux-course-17-practice printf 'private notes\n' > notes.txt ls -l notes.txt chmod u=rw,g=r,o= notes.txt stat -c '%A %a %n' notes.txt
u bedeutet Eigentümer, g Eigentümergruppe und o andere. Der =-Operator setzt jede Kategorie auf genau die angegebenen Berechtigungen. Auf einem typischen GNU stat-System ähnelt die letzte Zeile -rw-r----- 640 notes.txt. Welche Benutzer die Datei tatsächlich lesen können, hängt weiterhin von ihren Identitäten und dem Verzeichnispfad ab.
In numerischer Form werden r=4, w=2 und x=1 für jede Kategorie addiert. Somit bedeutet 640 rw-, r-- und ---. Der nächste Befehl ändert die Datei zu 600, wodurch nur der Eigentümer lesen und schreiben kann. Überprüfen Sie das numerische Ergebnis mit stat.
chmod 600 notes.txt stat -c '%A %a %n' notes.txt
Im Gegensatz dazu fügt chmod g+r notes.txt nur die Gruppen-Leseberechtigung zum bestehenden Modus hinzu, und chmod o-rwx notes.txt entfernt alle Berechtigungen für andere. Wählen Sie bewusst zwischen dem Ersetzen einer Kategorie mit = und dem Ändern ausgewählter Bits mit + oder -.
Verzeichnisberechtigungen separat überprüfen
Für ein privates Verzeichnis erlaubt 700 nur seinem Eigentümer, die Einträge aufzulisten, zu durchlaufen und zu ändern. Führen Sie dieses Beispiel nur innerhalb des oben erstellten Übungsverzeichnisses aus.
mkdir private chmod 700 private ls -ld private stat -c '%A %a %n' private
Ein typisches Ergebnis ist drwx------ 700 private. Die Option -d bewirkt, dass ls das Verzeichnis selbst anzeigt, anstatt dessen Inhalt. Das versehentliche Entfernen der x-Berechtigung eines Verzeichnisses kann sogar verhindern, dass der Eigentümer auf seine Dateien zugreifen kann. Das rekursive Anwenden eines einzelnen Modus mit chmod -R ist besonders leicht falsch zu machen, da reguläre Dateien und Verzeichnisse unterschiedliche Anforderungen für x haben.
Wann und wie man sudo verwendet
sudo führt einen Befehl als ein anderer Benutzer unter der Autorisierungspolitik des aktuellen Kontos aus. Nicht jedes Konto hat Administratorzugang. sudo -l listet die Befehle auf, die für Ihr Konto erlaubt sind, und kann zur Authentifizierung auffordern. Eine Ablehnung ist ein erwartetes Ergebnis, wenn das Konto nicht autorisiert ist.
sudo -l
Verwenden Sie sudo command nur, wenn dieser bestimmte Befehl erhöhte Rechte benötigt. Wenn eine Datei, die einem anderen Benutzer gehört, nicht zugänglich ist, legen Sie zuerst die beabsichtigte Zugriffsrichtlinie fest, anstatt deren Berechtigungen wahllos zu öffnen. sudo ändert den Eigentümer der Datei nicht dauerhaft. Dateien, die über einen erhöhten Befehl erstellt werden, können jedoch im Besitz des Administrators enden, daher sollten Sie prüfen, wohin der Befehl schreibt.
Die aktuelle Shell kann die Ausgabenumleitung verarbeiten, bevor sudo ausgeführt wird. Folglich funktioniert sudo echo ... > protected-file möglicherweise nicht wie erwartet. Für Konfigurationsänderungen sollten Sie ein geeignetes Werkzeug wie sudoedit in Betracht ziehen, anstatt eine privilegierte Umleitung zusammenzupuzzeln. Bearbeiten Sie die Sudo-Richtlinie mit visudo, das die Syntax überprüft, anstatt die Datei blind zu ändern und das Risiko eines Verlusts des administrativen Zugriffs einzugehen.
Eine praktische Abfolge zur Diagnose von Berechtigungsfehlern
- Führen Sie
idaus, um den Benutzer und die Gruppen der aktuellen Sitzung zu sehen. Wenn die Gruppenmitgliedschaft kürzlich geändert wurde, prüfen Sie, ob diese Anmeldungssitzung die Änderungen übernommen hat. - Verwenden Sie
ls -loderstatfür den Eigentümer und den Modus des Ziels. Verwenden Siels -ldfür ein Verzeichnis selbst. - Überprüfen Sie die Durchlaufberechtigung in jedem übergeordneten Verzeichnis. Auf GNU-Systemen kann
namei -l pathhelfen, jede Komponente zu inspizieren. - Wenn gewöhnliche Modusbits das Scheitern nicht erklären, untersuchen Sie ACLs, SELinux, ein schreibgeschütztes Laufwerk oder ein Sticky-Bit. Beginnen Sie nicht damit,
chmod 777auszuführen. - Sobald der erforderliche Zugriff klar ist, nehmen Sie die kleinste Änderung vor und testen Sie erneut als der beabsichtigte Benutzer.
Nach der Übung verwenden Sie pwd, um Ihren Standort zu überprüfen, bevor Sie später das Übungsverzeichnis aufräumen. Wenden Sie diese Übungsbefehle chmod niemals auf Produktionsdaten oder die Dateien eines anderen Benutzers an.
Offizielle Referenzen
Das Kapitel zur Modusstruktur der GNU Coreutils und die Referenz zur Berechtigungsvergabe behandeln Modusnotation und Verhalten. Siehe das Handbuch sudoers(5) für administrative Berechtigungen und sicheres Bearbeiten von Richtlinien.




