Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

chmod(1)

chown(2)

creat(2)

fcntl(2)

mknod(2)

open(2)

read(2)

stat(2)

write(2)

mkfifo(3C)

stat(5)

types(5)

chmod(2)                                                           chmod(2)

NAME
     chmod, fchmod - Dateimodus ändern

SYNTAX
     #include <sys/types.h>
     #include <sys/stat.h>

     int chmod(const char *path, modet mode);

     int fchmod(int fildes, modet mode);

BESCHREIBUNG
     chmod() und fchmod() setzen den Zugriffsberechtigungsteil des Modus
     der durch path angegebenen oder durch den Deskriptor fildes ausgewie-
     senen Datei entsprechend dem in mode enthaltenen Bitmuster. Die
     Zugriffsberechtigungsbits werden in <sys/stat.h> [siehe stat(5)]
     beschrieben und wie folgt interpretiert:

     SISUID   04000   Benutzer-ID bei Ausführung setzen.
     SISGID   020#0   Gruppen-ID bei Ausführung setzen, wenn # den Wert 7,
                       5, 3 oder 1 hat. Aktivieren der obligatorischen
                       Sperre von Dateien/Datensätzen, wenn # 6, 4, 2 oder
                       0 ist.
     SISVTX   01000   Textsegment nach Ausführung sichern.
     SIRWXU   00700   Lesen, Schreiben, Ausführen (Durchsuchen) durch
                       Eigentümer.
     SIRUSR   00400   Lesen durch Eigentümer.
     SIWUSR   00200   Schreiben durch Eigentümer.
     SIXUSR   00100   Ausführen durch Eigentümer (Durchsuchen, wenn es
                       sich um ein Verzeichnis handelt).
     SIRWXG   00070   Lesen, Schreiben, Ausführen (Durchsuchen) durch
                       Gruppe.
     SIRGRP   00040   Lesen durch Gruppe.
     SIWGRP   00020   Schreiben durch Gruppe.
     SIXGRP   00010   Ausführen durch Gruppe.
     SIRWXO   00007   Lesen, Schreiben, Ausführen (Durchsuchen) durch
                       andere.
     SIROTH   00004   Lesen durch andere.
     SIWOTH   00002   Schreiben durch andere.
     SIXOTH   00001   Ausführen durch andere.

     Andere Modi werden durch bitweise OR-Verküpfung der Zugriffsberechti-
     gungsbits erzeugt.

     Die effektive Benutzer-ID des Prozesses muß mit der des Eigentümers
     der Datei übereinstimmen, oder der Prozeß muß die entsprechende
     Berechtigung zum Ändern des Modus einer Datei haben.

     Wenn der Prozeß kein privilegierter Prozeß und die Datei kein Ver-
     zeichnis ist, wird das Modusbit 01000 (Textsegment bei Ausführung
     sichern) gelöscht.




Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

chmod(2)                                                           chmod(2)

     Wenn weder der Prozeß, noch ein Mitglied der anhängenden Gruppenliste
     privilegiert ist und die effektive Gruppen-ID des Prozesses nicht mit
     der Gruppen-ID der Datei übereinstimmt, wird das Modusbit 02000
     (Gruppen-ID bei Ausführung setzen) gelöscht.

     Wenn bei einer ausführbaren Datei des Typs 0410 das Sticky-Bit (Modus-
     bit 01000) gesetzt ist, löscht das Betriebssystem den Programmtext
     nicht aus dem Swap-Bereich, wenn der letzte Benutzerprozeß beendet
     wird. Wenn das Sticky-Bit bei einer ausführbaren Datei des Typs 413
     oder ELF gesetzt ist, löscht das Betriebssystem den Programmtext nicht
     aus dem Speicher, wenn der letzte Benutzerprozeß beendet wird. In bei-
     den Fällen ist beim Setzen des Sticky-Bits der Text bereits (entweder
     in einem Swap-Bereich oder im Speicher) vorhanden, wenn der nächste
     Benutzer diese Datei ausführt. Die Ausführung wird dadurch beschleu-
     nigt.

     Wenn in ein Verzeichnis geschrieben werden kann und das Sticky-Bit
     gesetzt ist, können Dateien in diesem Verzeichnis nur dann entfernt
     (gelöscht) oder umbenannt werden, wenn mindestens eine der folgenden
     Bedingungen zutrifft [siehe unlink(2) und rename(2)]:

     -  Der Benutzer ist Eigentümer der Datei.

     -  Der Benutzer ist Eigentümer des Verzeichnisses.

     -  Der Benutzer hat das Recht, in die Datei zu schreiben.

     -  Der Benutzer ist ein privilegierter Benutzer.

     Wenn das Modusbit 02000 (Gruppen-ID bei Ausführung setzen) gesetzt und
     das Modusbit 00010 (Ausführen oder Durchsuchen durch Gruppe) nicht
     gesetzt ist, isr das obligatorische Sperren von Dateien/Datensätzen
     bei einer normalen Datei aktiviert. Dies kann zukünftige Aufrufe von
     open(2), creat(2), read(2) und write(2) auf diese Datei beeinflussen.

     Bei einer erfolgreichen Beendigung markieren chmod und fchmod das Feld
     stctime der Datei zur Aktualisierung.

FEHLER
     Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
     Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
     errno(5).

     chmod schlägt fehl und der Dateimodus bleibt unverändert, wenn einer
     oder mehrere der folgenden Punkte zutreffen:

     EACCES        Eine Komponente von path darf nicht durchsucht werden.

     EFAULT        path weist über den zugewiesenen Adreßraum des Prozesses
                   hinaus.




Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

chmod(2)                                                           chmod(2)

     EIO           Ein E/A-Fehler trat während des Lesens vom oder Schrei-
                   bens auf das Dateisystem auf.

     ELOOP         Während der Auflösung von path wurden zu viele symboli-
                   sche Links angetroffen.

     EMULTIHOP     Komponenten von path erfordern den Sprung auf mehrere
                   ferne Rechner, und der Dateisystemtyp läßt dies nicht
                   zu.

     ENAMETOOLONG  Die Länge des Arguments path überschreitet PATHMAX,
                   oder die Länge einer Komponente von path überschreitet
                   NAMEMAX.

     ENOTDIR       Eine Komponente des Pfads path ist kein Verzeichnis.

     ENOENT        Entweder eine Komponente des Pfads oder die Datei, auf
                   welche durch path verwiesen wurde, existiert nicht oder
                   ist ein leerer Pfadname.

     ENOLINK       fildes weist auf einen fernen Rechner, und die Verbin-
                   dung zu diesem Rechner ist nicht mehr aktiv.

     EPERM         Die effektive Benutzer-ID entspricht nicht der des
                   Dateieigentümers oder der Prozeß ist nicht entsprechend
                   privilegiert.

     EROFS         Die durch path angegebene Datei steht in einem schreib-
                   geschützten Dateisystem.

     Die Funktion chmod() kann bei folgenden Bedingungen fehlschlagen:

     EINTR         Während der Ausführung der Funktion wurde ein Signal
                   abgefangen.

     EINVAL        Der Wert des Arguments mode ist ungültig.

     ENAMETOOLONG  Die Auflösung des Pfadnamens eines symbolischen Links
                   hat ein Zwischenergebnis erzeugt, dessen Länge PATHMAX
                   überschreitet.

     fchmod() schlägt fehl und der Dateimodus wird nicht verändert, wenn

     EBADF         fildes ist kein offener Dateideskriptor.

     EIO           Beim Lesens von oder Schreiben auf das Dateisystem ist
                   ein E/A-Fehler aufgetreten.

     EINTR         Während der Ausführung des Systemaufrufs fchmod() wurde
                   ein Signal abgefangen.

     EINVAL        Der Wert des Arguments mode ist ungültig.


Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

chmod(2)                                                           chmod(2)

     ENOLINK       path weist auf einen fernen Rechner, und die Verbindung
                   zu diesem Rechner ist nicht mehr aktiv.

     EPERM         Die effektive Benutzer-ID entspricht nicht der des
                   Dateieigentümers, oder der Prozeß ist nicht entsprechend
                   privilegiert.

     EROFS         Die durch fildes angegebene Datei steht in einem
                   schreibgeschützten Dateisystem.

ERGEBNIS
     Nach erfolgreicher Beendigung wird 0 zurückgegeben. Andernfalls wird
     -1 zurückgegeben und errno zur Anzeige des Fehlers gesetzt.

HINWEISE
     SISUID, SISGID und die Dateizugriffsbits sind in <sys/stat.h> [siehe
     stat(5)] beschrieben.

     Wenn in ein Verzeichnis geschrieben werden kann, und das Modusbit
     SISVTX für das Verzeichnis gesetzt ist, kann ein Prozeß Dateien in
     diesem Verzeichnis nur dann löschen oder umbenennen, wenn eine der
     folgenden Bedingungen zutrifft:

     -  Die effektive Benutzer-ID des Prozesses stimmt mit der des Dateiei-
        gentümers überein.

     -  Die effektive Benutzer-ID des Prozesses stimmt mit der des Ver-
        zeichniseigentümers überein.

     -  Der Prozeß ist entsprechend privilegiert.

     Wenn das SISVTX-Bit in einer Datei außerhalb eines Verzeichnisses
     gesetzt ist, ist das Verhalten unbestimmt.

     Um sicherzustellen, daß die Bits SISUID und SISGID gesetzt sind,
     sollte eine Anwendung, für die dies erforderlich ist, nach erfolgrei-
     cher Ausführung von chmod() die Funktion stat() verwenden.

     Alle Dateideskriptoren, die derzeit von einem Prozeß geöffnet sind,
     können ungültig werden, wenn der Modus der Datei in einen Wert geän-
     dert wird, der den Zugriff auf diesen Prozeß verweigern würde. Dies
     kann zum Beispiel bei einem Dateisystem auftreten, das keinen Status
     aufweist.

SIEHE AUCH
     chmod(1), chown(2), creat(2), fcntl(2), mknod(2), open(2), read(2),
     stat(2), write(2), mkfifo(3C), stat(5), types(5).







Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026