Nur der Eigentümer der Datei oder der Root-Benutzer dürfen die Berechtigungen einer Datei ändern. Die aktuellen Berechtigungen für die Datei oder das übergeordnete Verzeichnis sind irrelevant¹. Dies ist in POSIX angegeben :
Die Anwendung muss sicherstellen, dass die effektive Benutzer-ID des Prozesses mit dem Eigentümer der Datei übereinstimmt oder der Prozess über die entsprechenden Berechtigungen verfügt, um dies zu tun.
Auf den meisten Unices bedeutet "entsprechende Berechtigungen", dass sie als Root ausgeführt werden. Wenn diese Bedingungen nicht erfüllt sind, chmod
schlägt dies normalerweise fehl EPERM
, obwohl andere Verhaltensweisen wie das Abbrechen des Programms aufgrund einer Sicherheitsverletzung zulässig sind.
Darüber hinaus bieten einige Unix-Varianten systemspezifische Möglichkeiten zum Autorisieren oder Verbieten chmod
. Beispielsweise verfügt Linux über eine Funktion ( CAP_FOWNER
), mit der Prozesse die Berechtigungen und anderen Metadaten einer Datei unabhängig von ihrem Eigentümer ändern können.
Es gibt andere Gründe, die chmod
möglicherweise fehlschlagen, obwohl die Datei vorhanden ist, zugänglich ist und den entsprechenden Eigentümer hat. Zu den gängigen gehören ein schreibgeschütztes Dateisystem oder ein Dateisystem, das keine Berechtigungen wie FAT unterstützt. Weniger häufig sind systemspezifische Einschränkungen wie das unveränderliche Attribut des ext2-Dateisystems und der Nachfolger von Linux.
¹ Außer insofern, als der laufende Prozess chmod
auf die Datei zugreifen kann, muss er über Ausführungsberechtigungen für das Verzeichnis verfügen, das die Datei enthält, sowie für jedes andere Verzeichnis, das er durchläuft, um dies zu tun.