chmod(1) chmod(1)
NAME
chmod - Zugriffsrechte ändern (change mode)
SYNTAX
chmod [-R] [--] modus datei ...
BESCHREIBUNG
chmod ändert die Zugriffsrechte für Dateien.
Nur der Eigentümer der Datei oder der Systemverwalter darf die
Zugriffsrechte ändern. Das s-Bit für die Gruppe darf nur ein Benutzer
setzen, dessen aktuelle Gruppennummer mit der Gruppennummer der Datei
übereinstimmt, deren Zugriffsrechte verändert werden [siehe chgrp(1)
und newgrp(1)].
OPTIONEN
-R (R - rekursiv) chmod ändert rekursiv die Zugriffsrechte aller
Dateien in allen angegebenen Verzeichnissen und deren Unterver-
zeichnissen.
-- Ende der Optionenliste. Die Angabe ist nötig, wenn modus mit -
beginnt.
modus
Mit modus geben Sie an, wie Sie die Zugriffsrechte für die ange-
gebenen Dateien ändern wollen. Sie können modus auf zwei Arten
definieren:
- durch eine symbolische Angabe
- durch eine absolute Angabe
Symbolische Angabe: [wer]darf[was][,[wer]darf[was]]...
wer Mit wer geben Sie an, für wen Sie die Zugriffsrechte ändern
wollen.
wer kann sein:
u (u - user) für Eigentümer
g (g - group) für Gruppe
o (o - other) für andere Benutzer
a (a - all) für ugo, d. h. für alle Benutzer
oder eine Kombination aus den Buchstaben u, g, o.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
chmod(1) chmod(1)
wer nicht angegeben:
chmod verhält sich ähnlich, als hätten Sie ugo oder a ange-
geben. Die Zugriffsrechte werden für Eigentümer, Gruppe und
andere Benutzer geändert, mit Ausnahme der durch umask(1)
geschützten Bits (siehe BEISPIELE, 2. Tabelle).
darf Mit darf geben Sie an, ob Sie die angegebenen Zugriffsrechte
erteilen, unverändert lassen oder entziehen wollen.
darf kann sein:
+ Zugriffsrechte neu erteilen
- Zugriffsrechte entziehen
= Zugriffsrechte absolut setzen, d. h., es werden genau die
angegebenen Zugriffsrechte erteilt, alle anderen werden
entzogen.
was Mit was geben Sie an, welche Zugriffsrechte Sie erteilen
bzw. entziehen wollen.
was kann eine Kombination folgender Optionen sein:
r (r - read) für Leserecht
w (w - write) für Schreibrecht
x (x - execute) für Ausführrecht bzw. für Recht zum Durch-
laufen von Verzeichnissen.
X (X - execute) für Ausführrecht bzw. für Recht zum Durch-
laufen von Verzeichnissen. X wirkt im Gegensatz zu x nur
bei Verzeichnissen oder wenn für datei bereits x-Zu-
griffsrechte gesetzt sind.
s für s-Bit (set-user-ID-Bit bzw. set-group-ID-Bit).
Die Angabe s beim chmod-Aufruf ist nur zusammen mit u, g
oder ug wirksam (wird wer nicht angegeben, so wird hier-
für ug angenommen). Ein gesetztes s-Bit ist nur für aus-
führbare Binärdateien (nicht für Shell-Prozeduren!) wirk-
sam (siehe Das s-Bit unten).
t für Sticky-Bit (t-Bit).
Nur der Systemverwalter kann das Sticky-Bit setzten. Ver-
sucht ein nicht-privilegierter Benutzer das Sticky-Bit zu
setzen, so wird dies ignoriert. Die Angabe t beim chmod-
Aufruf ist nur zusammen mit u, a oder ohne Angabe für wer
wirksam. Ein gesetztes Sticky-Bit ist nur für ausführbare
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
chmod(1) chmod(1)
Dateien wirksam (siehe Das Sticky-Bit unten). Werden die
Zugriffsrechte einer Datei mit gesetztem Sticky-Bit geän-
dert, so wird das Sticky-Bit automatisch gelöscht.
l (l - lock) für obligatorische Sperre von Dateien, Ver-
zeichnissen oder Datensätzen. Hierbei können Schreib- und
Lesezugriff gesperrt werden, solange ein Programm auf
datei zugreift. Für datei wird das l-Bit gesetzt, wenn
- für datei das Ausführrecht für Gruppe nicht gesetzt
ist und
- für datei das s-Bit für die Gruppe gesetzt ist.
Folgende Beispiele sind deshalb nicht korrekt und füh-
ren zu Fehlermeldungen:
chmod g+x,+l datei
chmod g+s,+l datei
u Die Zugriffsrechte des aktuellen Eigentümers sollen über-
nommen werden.
g Die Zugriffsrechte der aktuellen Gruppe sollen übernommen
werden.
o Die Zugriffsrechte der aktuellen anderen Benutzer sollen
übernommen werden.
was nicht angegeben:
Dies ist nur sinnvoll in Kombination mit dem Gleichheitszei-
chen =; dem betreffenden wer werden dann alle Zugriffsrechte
entzogen.
Wie oben angegeben, können Sie mehrere "wer-darf-was"-Angaben,
getrennt durch Kommas, aneinanderreihen, z. B.
chmod g-w,o-rw datei
chmod arbeitet die Zeichenkette, die Sie für modus angeben, von
links nach rechts ab. So erhält z. B. durch die Angabe a-w,u+w der
Eigentümer Schreibrecht, während es allen anderen entzogen wird.
Absolute Angabe
Eine absolute Angabe für modus ist eine drei- oder vierstellige
Oktalzahl. Die zulässigen Oktalzahlen erhalten Sie, wenn Sie die
untenstehenden oktalen Modi im Binärsystem mit dem bitweisen
logischen ODER verknüpfen. Dasselbe Ergebnis erhalten Sie, wenn
Sie die Modi (im Oktal- oder Dezimalsystem) addieren. Eine füh-
rende Null (weder s-Bit noch Sticky-Bit) können Sie weglassen.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
chmod(1) chmod(1)
Die angegebenen Zugriffsrechte werden erteilt, alle anderen
Zugriffsrechte werden entzogen.
4000 s-Bit für Eigentümer
20#0 s-Bit für Gruppe, wenn # gleich 7, 5, 3 oder 1 ist. Eine
obligatorische Sperre wird gesetzt, wenn # gleich 6, 4, 2
oder 0 ist. Der Wert von # wird ignoriert, wenn datei ein
Verzeichnis ist. In diesem Fall dürfen Sie nur die symbo-
lische Angabe verwenden.
1000 Sticky-Bit (t-Bit)
0400 Leserecht für Eigentümer
0200 Schreibrecht für Eigentümer
0100 Ausführrecht (bzw. Recht zum Durchlaufen von Verzeichnis-
sen) für Eigentümer
0040 Leserecht für Gruppe
0020 Schreibrecht für Gruppe
0010 Ausführrecht (bzw. Recht zum Durchlaufen von Verzeichnis-
sen) für Gruppe
0004 Leserecht für andere Benutzer
0002 Schreibrecht für andere Benutzer
0001 Ausführrecht (bzw. Recht zum Durchlaufen von Verzeichnis-
sen) für andere Benutzer
Beispiel:
Wenn Sie für den Eigentümer das Lese-, Schreib- und Ausführ-
recht setzen wollen, und für Gruppe das Lese- und Ausführ-
recht, dann geben Sie für modus 750 an:
400 + 200 + 100 + 40 + 10 = 750
Für die Datei gelten dann die Zugriffsrechte rwxr-x---.
datei
Name der Datei, für die Sie die Zugriffsrechte definieren oder
ändern wollen. datei kann auch ein Verzeichnis sein. Pro Aufruf
können Sie mehrere Namen angeben.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
chmod(1) chmod(1)
SONDERRECHTE
Das s-Bit
Ist für ein ausführbares Programm das s-Bit für den Eigentümer
gesetzt, dann ist beim Aufruf des Programms die effektive Benutzernum-
mer des zugehörigen Prozesses gleich der Benutzernummer des Eigentü-
mers der Datei (und nicht gleich der Benutzenummer des Aufrufers). Das
bedeutet, daß der Prozeß unter der Benutzernummer des Programm-Eigen-
tümers abläuft. Dadurch kann er auch auf Dateien zugreifen, für die
der Programm-Aufrufer direkt kein Zugriffsrecht hat. Die reale Benut-
zernummer des Prozesses bleibt die des Programm-Aufrufers.
Ist das s-Bit für die Gruppe gesetzt, dann ist die effektive Gruppen-
nummer des Prozesses gleich der Gruppennummer des Programm-Eigen-
tümers. Der Prozeß läuft also unter der Gruppennummer des Programm-
Eigentümers ab. Die reale Gruppennummer des Prozesses bleibt die des
Programm-Aufrufers.
Das s-Bit wirkt nur bei ausführbaren Binärdateien (ausführbaren Pro-
grammen), nicht aber bei Shell-Prozeduren. Für Dateien, die eine
Shell-Prozedur enthalten, kann das s-Bit zwar mit chmod gesetzt wer-
den, es bleibt jedoch wirkungslos.
Bei Dateiänderungen werden die s-Bits aus Sicherheitsgründen zurückge-
setzt.
Vorsicht:
Setzt der Systemverwalter für ein Programm, das ihm gehört, das
s-Bit, erlaubt er allen Benutzern, die das Programm aufrufen dür-
fen, alle Operationen, die er selbst mit Hilfe dieses Programms
ausführen darf. Er darf das s-Bit also nur dann setzen, wenn
sichergestellt ist, daß dadurch keine Sicherheitslücke entsteht,
z. B. Daten gefährdet werden.
Ein Beispiel für die Anwendung des s-Bits ist das Kommando passwd
(Verzeichnis /bin). Als normaler Benutzer haben Sie für die Kennwort-
datei /etc/passwd kein Schreibrecht. Da für das Kommando passwd jedoch
das s-Bit für den Eigentümer root gesetzt ist, können Sie über dieses
Kommando ein neues Kennwort in die Datei /etc/passwd schreiben.
Das Sticky-Bit (t-Bit)
Nur der Systemverwalter kann das Sticky-Bit (t-Bit) setzen. Versucht
ein nicht-privilegierter Benutzer das Sticky-Bit zu setzen, so wird
dies ignoriert.
Das Sticky-Bit wirkt nur bei Verzeichnissen und ausführbaren Dateien.
Für andere Dateien kann es zwar mit chmod gesetzt werden, es ist
jedoch wirkungslos.
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
chmod(1) chmod(1)
Ist das Sticky-Bit bei ausführbaren Dateien gesetzt, kann beim Pro-
grammstart das Einlesen des Programms aus der Programmdatei und das
Auslagern in den Swap-Bereich teilweise vermieden werden.
Wenn ein Verzeichnis schreibbar ist, aber das Sticky-Bit gesetzt hat,
muß eine der folgenden Bedingungen erfüllt sein, um eine Datei unter
diesem Verzeichnis zu löschen, zu verschieben oder einen Verweis auf
diese Datei zu erzeugen:
- die Datei muß dem Benutzer gehören
- das Verzeichnis muß dem Benutzer gehören
- der Benutzer muß Schreibberechtigung für die Datei haben
- der Benutzer muß ein privilegierter Benutzer sein
Bei der Ausgabe des Kommandos ls -l erscheint ein gesetztes Sticky-Bit
an der letzten Stelle der Zugriffsrechte. Ist gleichzeitig das x-Bit
für "andere Benutzer" gesetzt, so wird ein t ausgegeben, andernfalls
ein T.
Das l-Bit
Mit Hilfe der Funktion lockf(3C) kann ein Programm eine Datei sperren,
solange das Programm auf diese Datei zugreift. Ist für diese Datei das
l-Bit gesetzt, bewirkt der Funktionsaufruf eine obligatorische Sperre
(mandatory locking) der Datei.
FEHLERMELDUNGEN
chmod: ERROR: Invalid mode
Sie haben für chmod einen unzulässigen Modus angegeben.
chmod: WARNING: Locking not permitted on datei, a group executable file
Sie wollten eine Datei sperren, obwohl für diese Datei das Aus-
führrecht für Gruppe gesetzt ist.
chmod: WARNING: Execute permission requiered for set-ID on execution
for datei
Sie wollten eine Datei sperren, obwohl für diese Datei das s-Bit
gesetzt ist.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte. Wenn LCMESSAGES nicht oder als leere Zeichenkette definiert
ist, wird der Wert von LANG als Standardwert herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98
chmod(1) chmod(1)
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
BEISPIELE
Die erste Tabelle zeigt Beispiele, welche symbolischen Angaben welchen
absoluten Angaben entsprechen.
________________________________________
| Symbolische Angabe | Absolute Angabe |
|____________________|__________________|
| u-w | 400 |
| -w | 400 |
| +rx | 755 |
| =r | 444 |
| ug=rw,o=r | 664 |
| u=rwx,g=rx,o= | 750 |
| +x,u+s | 4711 |
| +xt | 1711 |
|____________________|__________________|
Hinweis: Das Sticky-Bit (letztes Beispiel) kann nur der Systemverwal-
ter setzen. Versucht ein nicht-privilegierter Benutzer das Sticky-Bit
zu setzen, so wird dies ignoriert.
Die folgenden Beispiele beziehen sich alle auf eine Datei mit den
Zugriffsrechten rw-------.
Die zweite Tabelle zeigt die unterschiedlichen Ergebnisse bei symboli-
schen Angaben ohne wer-Spezifikation, in Abhängigkeit davon, welche
Schutzbit-Maske durch umask(1) gesetzt ist.
___________________________________________
| Symbolische Angabe | umask | Ergebnis |
|____________________|________|____________|
| +w | 022 | rw------- |
| +w | 000 | rw--w--w- |
| | | |
| =rw | 022 | rw-r--r-- |
| =rw | 000 | rw-rw-rw- |
|____________________|________|____________|
Die dritte Tabelle zeigt die Ergebnisse symbolischer oder absoluter
Angaben, bei denen die durch umask(1) gesetzte Schutzbit-Maske keine
Rolle spielt.
______________________________________________________________
| Symbolische Angabe | Absolute Angabe | umask | Ergebnis |
|____________________|__________________|________|____________|
| go+r | 644 | - | rw-r--r-- |
| go=r | 644 | - | rw-r--r-- |
| go+rw | 666 | - | rw-rw-rw- |
|____________________|__________________|________|____________|
Seite 7 Reliant UNIX 5.44 Gedruckt 11/98
chmod(1) chmod(1)
SIEHE AUCH
chgrp(1), ls(1), newgrp(1), umask(1), chmod(2), chown(2), lockf(3C),
passwd(4).
Seite 8 Reliant UNIX 5.44 Gedruckt 11/98