Linux zeigt an, dass ich Schreibberechtigung habe, aber ich kann diese Datei nicht entfernen. Ich habe es bereits überprüft und habe Ausführungsberechtigung für jedes übergeordnete Verzeichnis. Irgendeine Idee, wie das passieren könnte?:
deployer@my-web:/usr/local/bin$ ls -la
total 10656
drwxr-xr-x 2 root root 4096 Feb 11 21:25 .
drwxr-xr-x 10 root root 4096 Feb 3 13:21 ..
-rwxr-xr-x 1 deployer deployer 1836198 Mar 18 19:05 composer
deployer@my-web:/usr/local/bin$ rm composer
rm: cannot remove ‘composer’: Permission denied
Antwort1
Die kurze Antwort lautet, dass Sie nicht nur Berechtigungen für die Datei benötigen, sondern auch Berechtigungen für das Verzeichnis, in dem sich die Datei befindet. Im klassischen UNIX ist ein Verzeichnis eigentlich eine spezielle Art von Datei – eine, die Zeiger auf die darin enthaltenen Dateien enthält. Aus diesem Grund benötigen Sie Schreibzugriff (w) auf das Verzeichnis.
In diesem Fall müssten Sie die Berechtigungen für /usr/local/bin ändern (oder dies von einem privilegierten Besitzer tun lassen).
Antwort2
Die Berechtigungen für Verzeichnisse sind nicht genau dieselben wie für Dateien.
Mit Schreibberechtigungen kann der Benutzer beliebige Dateien oder Unterverzeichnisse erstellen, löschen oder ändern, selbst wenn die Datei oder das Unterverzeichnis einem anderen Benutzer gehört.
Im Falle eines Verzeichnisses ändert sich nicht viel, da derselbe Befehl verwendet wird. Da Verzeichnisse jedoch normalerweise Dateien enthalten, die auch dem neuen Benutzer oder der neuen Gruppe zugewiesen werden müssen, verwenden wir den Befehl '-R' Flagge, die steht für 'rekursiv' - also alle Unterverzeichnisse und deren Dateien:
chown -R user:group dirname