Warum macht chmod 644 Verzeichnisse unzugänglich?


8

Ich habe eine Reihe von Mediendateien (die nur 644 sein müssen), die eine Mischung aus verschiedenen Berechtigungen waren. Einige waren gruppen- oder global beschreibbar, also dachte ich, um sicher zu gehen, werde ich sie alle auf 644 zurückmodifizieren.

Das Problem ist, dass es eine Verzeichnishierarchie gibt und für alle Verzeichnisse, die in dieser ls -lerfasst wurden, diese wie folgt angezeigt werden:

d????????? ? ? ? ?            ? Dirname

Wenn ich das auf 744 ändere, ist es behoben.

Meine Frage ist: Was ist hier los? Müssen Verzeichnisse ausführbar sein?

Antworten:


7

Wie in der Manpage für chmodin Bezug auf Berechtigungen angegeben:

Die Buchstaben rwxXst wählen Dateimodusbits für die betroffenen Benutzer aus: Lesen (r), Schreiben (w), Ausführen (oder Suchen nach Verzeichnissen) (x), Ausführen / Suchen nur, wenn die Datei ein Verzeichnis ist oder für einige bereits Ausführungsberechtigung hat Benutzer (X)

Das ausführbare Bit in einem Ordner wird oben als Suchberechtigung erläutert. Mit dem Ausführungsbit können Sie lediglich in einem Dateibrowser auf den Ordner zugreifen oder vom Terminal aus in den Ordner wechseln, indem Sie den cdBefehl ausführen oder ls ~/folderdie Dateien im Ordner auflisten.

Der Ordner muss für den Eigentümer ausführbar sein , obwohl der Superuser weiterhin auf den Ordner zugreifen kann, da bei Verwendung einer sudobeliebigen Datei oder eines beliebigen Verzeichnisses darauf zugegriffen oder gelöscht werden kann. Darüber hinaus werden Verzeichnis- und Dateiberechtigungen in diesem nützlichen Artikel unter Stackoverflow näher erläutert .

Es ist auch wichtig zu beachten, dass das "Ausführen" des Ordners nicht bedeutet, dass Sie tatsächlich Code oder Befehle ausführen, wie wenn eine ausführbare Binärdatei oder ein ausführbares Skript ausgeführt wird.

Für einen Heim-Desktop-Benutzer (möglicherweise jedoch nicht für Ihren Server) $HOMEhaben die meisten Ordner die Ausführungsberechtigung für Benutzer, Gruppe und andere festgelegt, wenn sie mit angezeigt werden stat ~/myfolder(Auszug unten):

Access: (0755/drwxr-xr-x)  Uid: ( 1000/    mike)   Gid: ( 1000/    mike)

Die Standardberechtigungen für Ordner in $HOME sind 755 oder 775 und für Dateien 644. Der Rest des Dateisystems unterscheidet sich jedoch. Auch hier müssen Ordner das Ausführungsbit für den Eigentümer haben, sonst können sie von ihm nicht geöffnet werden. Es ist wichtig, chmodbeim Ändern von Berechtigungen und insbesondere beim rekursiven Ausführen vorsichtig zu sein, da die Situation schnell durcheinander geraten kann.

Weitere Informationen finden Sie in man chmodden Ubuntu-Manpages online und in diesem Artikel bei Superuser .


0

Verzeichnisse müssen xzum Öffnen gesetzt sein (für das Verzeichnis wird dieses Bit als Suchbit angesehen). Viele Leute stellen fest, dass sie chmod -Rnicht mehr darauf zugreifen können , wenn sie das ausführbare Bit mit im gesamten Ordner entfernen . Um dies zu beheben, verwende ich, treedamit ich nur den Ordnersatz erhalten und den Albtraum vermeiden kann, alle Dateien als ausführbare Dateien festzulegen (die Option für den Baum ist -d List directories only.):

sudo tree -faid dirname | xargs -L1 -I{} sudo chmod +x "{}"

wenn Sie nicht haben tree:

find  dirname -type d -exec chmod +x {} 

Warnung!!! Sie sollten dies in Überlegungen haben:

  • Wenn Sie chmod oder chown rekursiv für Stammverzeichnisse /oder Systemverzeichnisse verwenden, wird Ihr Betriebssystem zerstört (alles, was für /Verzeichnis- oder Systemverzeichnisse rekursiv ist, ist gefährlich.)

  • Dies ist keine gute Sicherheitspraxis, um eine solche Berechtigungsmenge festzulegen


@Melebius Ok danke, ich bin froh, dass wir uns verständigt haben
Eduard Florinescu
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.