Bezüglich der Berechtigungen für Zwischenordner, die mit „mkdir -pm 764 a/b/c“ erstellt wurden

Bezüglich der Berechtigungen für Zwischenordner, die mit „mkdir -pm 764 a/b/c“ erstellt wurden

Wenn ich dann verwende, bekomme ich mkdir -pm 764 a/b/c nur cdie Berechtigung 764, während aund bdie Standardberechtigung haben. Warum ist das so? Warum bekommen nicht alle Verzeichnisse die Berechtigung 764?

Antwort1

Das mkdirDienstprogramm erstellt ein einzelnes Verzeichnis. Bei Verwendung mit -mwird das Verzeichnis erstellt und effektiv chmodmit den angegebenen Berechtigungen darin ausgeführt (obwohl dies nicht in zwei Schritten geschieht, was unter bestimmten Umständen wichtig sein könnte).

Mit -pwerden alle Zwischenverzeichnisse erstellt, die noch nicht existieren. Der angegebene Modus -mgilt weiterhin nur für den letzten Namen im Pfadnamen, da dies das Verzeichnis ist, das Sie erstellen möchten (die Zwischenverzeichnisse werden erstellt, um die Erstellung dieses Verzeichnisses mit dem angegebenen Modus zu ermöglichen).

DerPOSIX-Standard fürmkdirsagen Sie, dass jedes Zwischenverzeichnis mit dem Modus erstellt werden soll, (S_IWUSR|S_IXUSR|~filemask)&0777wobei filemaskder Umask-Wert Ihrer Shell ist.

Im Abschnitt „Anwendungsnutzung“ heißt es

[…] Für von erstellte Zwischenpfadkomponenten mkdirist der Modus der von geänderte Standard, u+ wxso dass die Unterverzeichnisse immer unabhängig von der Erstellungsmaske im Dateimodus erstellt werden können; wenn für die Zwischenverzeichnisse andere endgültige Berechtigungen gewünscht sind, können diese nachträglich mit geändert werden chmod.

Dies bedeutet, dass der Modus für die Zwischenverzeichnisse so eingestellt ist, dass Sie ein Verzeichnis erstellen können, das möglicherweise keine Benutzerschreib- oder Ausführungsberechtigungen hat. Wenn den Zwischenverzeichnissen ebenfalls keine Ausführungs- und/oder Schreibberechtigungen erteilt würden, könnten die letzten Komponenten des Verzeichnispfads nicht erstellt werden.

Verwenden Sie in Ihrem speziellen Fall

mkdir -p -m 764 a/b/c
chmod 764 a/b
chmod 764 a

Wenn Sie sicher sind, dass keines der Verzeichnisse zuvor existierte, verwenden Sie

mkdir -p -m 764 a/b/c
chmod -R 764 a

verwandte Informationen