Rekursives Chowning nicht möglich

Rekursives Chowning nicht möglich

Ich verwende diesen Befehl:

chown root:www-data /var/www/example.com -R 

aber ich bekomme eine Fehlermeldung, dass das Verzeichnis nicht aufgeführt ist.

Was ist falsch?

Antwort1

Die Option muss -Rvorne stehen.

chown -R root:www-data /var/www/example.com 

(Ich verwende zwischen Benutzer und Gruppe immer einen Punkt statt eines Doppelpunkts, aber in den Manpages steht, dass der Doppelpunkt verwendet werden soll).

Antwort2

Die GNU-Coreutils-Version von chown, die unter Ubuntu Standard ist, akzeptiert Optionen, die überall platziert werden (solange --nicht verwendet wird). Das heißt:

chown foo:bar some/location -R
chown -R foo:bar some/location

beide funktionieren. Das liegt daran, wiegetopt_long()funktioniert. Meiner Meinung nach ist das ein Fehler – da es entweder zu einem Fehler führen oder dokumentiert werden sollte, was meines Wissens nach jedoch nicht der Fall ist.

chown foo:bar some/location -- -R

würde nach einem Verzeichnis mit dem Namen suchen -R.


Wenn jedoch eine Umgebungsvariable festgelegt wird, POSIXLY_CORRECTwürde das erste Beispiel fehlschlagen, wenn kein Verzeichnis mit dem Namen vorhanden ist -R, und würde niemals rekursiv sein.

$ export POSIXLY_CORRECT=
$ chown -v :foo a/ -R
ownership of `a/' retained as foo:foo
chown: cannot access `-R': No such file or directory

IMHO: Versuchen Sie immer, sich an die POSIX-Methode zu halten, da Sie diesen Befehl eines Tages auf einem anderen System eingeben, auf dem POSIX erzwungen wird, und es somit zu einem Fehler kommt.

Beachten Sie auch, dass der Wert von POSIXLY_CORRECTkeine Auswirkung hat. Dies würde es nicht deaktivieren:

export POSIXLY_CORRECT=0
export POSIXLY_CORRECT=no
export POSIXLY_CORRECT=false
export POSIXLY_CORRECT=...

Man müsste es unsettun.


chownEs kann sein, dass Ihr System entweder mit einem anderen Tool eingerichtet wurde oder POSIXLY_CORRECTbereits eingestellt ist.

Prüfen bis:

export | grep POSIX
chown --version
# etc.

Als Randbemerkung: Die Verwendung von Punkten, ., zur Trennung von Gruppe und Benutzer ist seitPOSIX 2001( info coreutils 'chown invocation'), wird aber aus Gründen der Abwärtskompatibilität weiterhin unterstützt, obwohl es nicht empfohlen wird.

verwandte Informationen