Befehl "chmod"
Zweck
Ändert Dateimodi.
Syntax
Dateimodi symbolisch ändern
Chmod [ -R ] [ -h ] [ -f ] [ [ U ] [ g ] [ o ] | [ A ] ] { { - | + | = } [ R ] [ W ] [ X ] [ X ] [ S ] [ T ] } { Datei ... | Verzeichnis ... }
Dateimodi numerisch ändern
Chmod [ -R ] [ -h ] [ -f ] PermissionCode { Datei ... | Verzeichnis ... }
Beschreibung
Der Befehl chmod ändert die Modusbits und die erweiterten Zugriffssteuerungslisten (ACLs) der angegebenen Dateien oder Verzeichnisse. Der Modus kann symbolisch oder numerisch (absoluter Modus) definiert werden.
Wenn ein symbolischer Link gefunden wird und Sie das Flag -h nicht angegeben haben, ändert der Befehl chmod den Modus der Datei oder des Verzeichnisses, auf die bzw. das der Link verweist, und nicht den Modus des Links selbst. Wenn Sie das Flag -h angeben, verhindert der Befehl chmod diese Modusänderung.
Wenn Sie sowohl das Flag -h als auch das Flag -R angeben, arbeitet der Befehl chmod die angegebenen Verzeichnisse rekursiv durch. Wenn er einen symbolischen Link findet, ändert er den Modus der Datei bzw. des Verzeichnisses, auf die der Link verweist, nicht.
Flags
| Element | Beschreibung |
|---|---|
| -F | Unterdrückt alle Fehlerberichte mit Ausnahme ungültiger Berechtigungen und Verwendungshinweise. |
| -H | Unterdrückt eine Modusänderung für die Datei bzw. das Verzeichnis, auf die bzw. das der gefundene symbolische Link verweist.Anmerkung: Dieses Verhalten weicht geringfügig von dem Verhalten des Flags -h in den Befehlen chgrp und chown ab, weil für symbolische Links keine Modusbits gesetzt werden können. |
| -R | Arbeitet nur die mit dem Muster Datei ...|Verzeichnis... angegebenen Verzeichnisse rekursiv durch. Das Flag -R ändert die Dateimodusbits jedes Verzeichnisses und aller Dateien, die mit dem angegebenen Muster übereinstimmen. Sehen Sie sich dazu Beispiel 6 an. Wenn ein symbolischer Link gefunden wird und der Link auf ein Verzeichnis verweist, werden die Dateimodusbits dieses Verzeichnisses geändert, aber das Verzeichnis wird nicht weiter traversiert. |
Symbolischer Modus
Wenn Sie einen Modus in symbolischer Form angeben möchten, müssen Sie drei Gruppen von Flags angeben.
Hinweis: Trennen Sie Flags nicht durch Leerzeichen.
Die erste Gruppe von Flags gibt an, wem die angegebenen Berechtigungen gewährt oder verweigert werden:
| Element | Beschreibung |
|---|---|
| u | Dateieigner |
| g | Gruppen- und erweiterte ACL-Einträge für die Gruppe der Datei |
| o | Alle anderen |
| a | Benutzer, Gruppe und alle anderen. Das Flag a hat dieselbe Wirkung wie die Flags ugo zusammen. Wenn keines dieser Flags angegeben wird, wird standardmäßig das Flag a verwendet und die Dateierstellungsmaske (umask) angewendet. |
Die zweite Flaggruppe gibt an, ob die Berechtigungen entfernt, angewendet oder festgelegt werden sollen:
| Element | Beschreibung |
|---|---|
| - | Entfernt angegebene Berechtigungen. |
| + | Wendet angegebene Berechtigungen an. |
| = | Löscht das ausgewählte Berechtigungsfeld und setzt es auf die angegebene Berechtigung. Wenn Sie hinter dem Gleichheitszeichen (=) keine Berechtigung angeben, entfernt der Befehl chmod alle Berechtigungen aus dem ausgewählten Feld. |
Die dritte Flaggruppe gibt die Berechtigungen an, die entfernt, angewendet oder festgelegt werden sollen:
| Element | Beschreibung |
|---|---|
| r | Leseberechtigung |
| w | Schreibberechtigung |
| x | Ausführungsberechtigung für Dateien, Suchberechtigung für Verzeichnisse |
| X | Ausführungsberechtigung für Dateien, wenn in den aktuellen (unveränderten) Modusbits mindestens ein Ausführungsbit für Benutzer, Gruppe oder andere gesetzt ist. Das Flag X wird ignoriert, wenn der Parameter Datei angegeben ist und keines der Ausführungsbits in den aktuellen Modusbits gesetzt ist. Suchberechtigung für Verzeichnisse |
| s | Festlegung der Berechtigung zum Setzen der Benutzer-ID bei der Ausführung, wenn das Flag u angegeben oder impliziert ist. Festlegung der Berechtigung zum Setzen der Gruppen-ID bei der Ausführung, wenn das Flag g angegeben oder impliziert ist. |
| t | Gibt für Verzeichnisse an, dass nur Dateieigner Dateien im angegebenen Verzeichnis verlinken und Dateilinks aufheben können. Setzt für Dateien das Attribut save-text. |
Numerischer oder absoluter Modus
Mit dem Befehl chmod können Sie auch die Oktalschreibweise für den Modus verwenden. Der numerische Modus ist die Summe aus einem oder mehreren der folgenden Werte:
| Element | Beschreibung |
|---|---|
| 4000 | Legt die Benutzer-ID bei der Ausführung fest. |
| 2000 | Legt die Gruppen-ID bei der Ausführung fest. |
| 1000 | Legt die Linkberechtigung für Verzeichnisse fest oder setzt das Attribut save-text für Dateien. |
| 0400 | Lässt Lesezugriffe durch den Eigner zu. |
| 0200 | Lässt Schreibzugriffe durch den Eigner zu. |
| 0100 | Lässt Ausführungs- und Suchzugriffe durch den Eigner zu. |
| 0040 | Lässt Lesezugriffe durch die Gruppe zu. |
| 0020 | Lässt Schreibzugriffe durch die Gruppe zu. |
| 0070 | Lässt Ausführungs- und Suchzugriffe durch die Gruppe zu. |
| 0004 | Lässt Lesezugriffe durch andere zu. |
| 0002 | Lässt Schreibzugriffe durch andere zu. |
| 0001 | Lässt Ausführungs- und Suchzugriffe durch andere zu. |
Anmerkungen:
- Durch die numerische Angabe des Modus werden alle erweiterten ACLs inaktiviert. Weitere Informationen finden Sie unter "Zugriffssteuerungslisten" in Betriebssystem-und Einheitenmanagement .
- Das symbolische Ändern von Gruppenzugriffsberechtigungen wirkt sich auch auf die AIXC-ACL-Einträge aus. Den Gruppeneinträgen in der ACL, die der Eignergruppe der Datei entsprechen, werden alle Berechtigungen verweigert, die aus dem Modus entfernt wurden. Weitere Informationen finden Sie unter "Zugriffssteuerungslisten" in Betriebssystem-und Einheitenmanagement .
- Sie können mehrere symbolische Modi durch Kommas getrennt voneinander angeben. Operationen werden in der angegebenen Reihenfolge von links nach rechts ausgeführt.
- Sie müssen den Modus symbolisch angeben oder einen expliziten aus 4 Zeichen bestehenden Oktalwert mit einer führenden Null (z. B. 0755) verwenden, wenn Sie die Berechtigung zum Setzen der Gruppen-ID bei der Ausführung von Verzeichnissen entfernen.
- Bei Dateisystemobjekten, denen eine Nicht-AIXC-ACL zugeordnet ist, führt jede Anforderung (symbolisch und numerisch), die eine Operation zum Ändern der Basisberechtigungsbits (rwxrwxrwx) in den Modusbits zur Folge hat, dazu, dass die vorhandene ACL nur durch die Modusbits ersetzt wird.
- Das Attribut "save-text" kann nur vom Rootbenutzer gesetzt, aber von jedem normalen Benutzer entfernt werden.
Exitstatus
Dieser Befehl gibt die folgenden Exitwerte zurück:
| Element | Beschreibung |
|---|---|
| 0 | Der Befehl wurde erfolgreich ausgeführt und alle angeforderten Änderungen wurden vorgenommen. |
| >0 | Es ist ein Fehler aufgetreten. |
Sicherheit
Zugriffssteuerung
Dieses Programm muss als normales Benutzerprogramm in der Trusted Computing Base installiert werden.
Nur der Eigner der Datei oder der Rootbenutzer kann den Modus einer Datei ändern.
Hinweis für Benutzer von RBAC und Trusted AIX® :Dieser Befehl kann privilegierte Operationen ausführen. Privilegierte Operationen können nur von privilegierten Benutzern ausgeführt werden. Weitere Informationen zu Berechtigungen und Autorisierungen finden Sie im Abschnitt "Privileged Command Database" in der Veröffentlichung Security. Eine Liste der Privilegien und Berechtigungen für diesen Befehl finden Sie in den Beschreibungen des Befehls lssecattr und des Unterbefehls getcmdattr.
Beispiele
- Gehen Sie wie folgt vor, um mehreren Dateien einen Berechtigungstyp hinzuzufügen:
Dadurch wird den Dateien Schreibberechtigung für Gruppenmitglieder hinzugefügt.chap1undchap2.chmod g+w chap1 chap2 - Gehen Sie wie folgt vor, um mehrere Berechtigungsänderungen gleichzeitig vorzunehmen:
Dies verweigert Gruppenmitgliedern und anderen Benutzern die Berechtigung zum Erstellen oder Löschen von Dateien inmydir(go-w) und ermöglicht Gruppenmitgliedern und anderen die Suchemydiroder verwenden Sie ihn in einem Pfadnamen (go + x). Dieser Befehl entspricht der folgenden Befehlsfolge:chmod go-w+x mydirchmod g-w mydir chmod o-w mydir chmod g+x mydir chmod o+x mydir - Gehen Sie wie folgt vor, damit nur der Eigner eine Shellprozedur als Befehl verwenden kann:
Dieser Befehl erteilt dem Eigner der Datei Lese-, Schreib- und Ausführungsberechtigung (u=rwx). Es verweigert auch die Gruppe und andere die Berechtigung zum Zugriffcmdin beliebiger Weise (go=).chmod u=rwx,go= cmdWenn Sie über die Berechtigung zum Ausführen dercmdShellbefehlsdatei, dann können Sie es ausführen, indem Sie Folgendes eingeben:
cmdHinweis: Abhängig von der Shellvariablen PATH müssen Sie möglicherweise den vollständigen Pfad zumcmdeportiert.
- Gehen Sie wie folgt vor, um Set-ID-Modi zu verwenden:
Wenn diecmdBefehl ausgeführt wird, werden die effektiven Benutzer-und Gruppen-IDs auf die IDs gesetzt, die Eigner dercmdeportiert. Nur die effektiven IDs, die dem untergeordneten Prozess zugeordnet sind, der diecmdwerden geändert. Die effektiven IDs der Shellsitzung bleiben unverändert.chmod ug+s cmdMit diesem Feature können Sie den Zugriff auf eingeschränkte Dateien zulassen. Angenommen, diecmdFür das Programm ist der Modus "Set-User-ID" aktiviert. Eigner des Programms ist ein Benutzer mit dem Namendbms. Der Benutzerdbmsist eigentlich keine Person, sondern möglicherweise einem Datenbankmanagementsystem zugeordnet. Der Benutzerbettyverfügt nicht über die Berechtigung für den Zugriff aufdbmsDatendateien von. Sie hat jedoch die Berechtigung zum Ausführen dercmdverwenden kann. Wenn sie dies tut, wird ihre effektive Benutzer-ID vorübergehend geändert indbms, damit diecmdProgramm kann auf die Datendateien zugreifen, deren Eigner der Benutzer istdbms.
Auf diese Weise wird der Benutzerbettykann diecmdBefehl, um auf die Datendateien zuzugreifen, aber sie kann sie nicht versehentlich mit den Standard-Shell-Befehlen beschädigen.
- Gehen Sie wie folgt vor, um das absolute Modusformat des Befehls chmod zu verwenden:
Dieser Befehl legt Lese- und Schreibberechtigung für den Eigner und den Nur-Lese-Modus für die Gruppe und andere fest. Er entfernt auch alle erweiterten ACLs, die der Datei möglicherweise zugeordnet sind.chmod 644 text - Gehen Sie wie folgt vor, um Verzeichnisse rekursiv abzusteigen und die Datei-und Verzeichnisberechtigungen unter Berücksichtigung der Baumstruktur zu ändern:
./dir1/dir2/file1
./dir1/dir2/file2
./dir1/file1
ändern möchten, geben Sie die folgende Befehlsfolge ein:
Daraufhin werden die Berechtigungen für ./dir1/file geändert.chmod -R 777 f*Für die Verzeichnisstruktur
./dir1/fdir2/file1
./dir1/fdir2/file2
./dir1/file3
hingegen ändert die Befehlsfolge
die Berechtigungen fürchmod -R 777 f*./dir1/fdir2
./dir1/fdir2/file1
./dir1/fdir2/file2
./dir1/file3
Datei
| Element | Beschreibung |
|---|---|
| /usr/bin/chmod | Enthält den Befehl chmod. |