Kann nicht in mein eigenes Verzeichnis cd?

10

Auf einer EC2-Instanz habe ich den Protokollspeicherort von Apache in ein anderes Verzeichnis als das Standardverzeichnis geändert. Dies ist so, dass ich die Protokolle auf einem (nicht bootenden, nur Daten) EBS halten kann.

Ich kann jedoch nicht cdin das Protokollverzeichnis. Es gehört meinem Benutzer und hat Leseberechtigungen für alle. Ich kann catdie Protokolle auch nicht (obwohl es mit sudo funktioniert und ich sehe, dass Apache gut protokolliert).

$ ls -lh
total 4.0K
drw-rw-rw- 2 ubuntu ubuntu 4.0K 2011-05-15 14:52 apache
$ ls -lh apache/
ls: cannot access apache/error.log: Permission denied
ls: cannot access apache/access.log: Permission denied
total 0
-????????? ? ? ? ?                ? access.log
-????????? ? ? ? ?                ? error.log
$ cd apache
-bash: cd: apache: Permission denied
$ sudo ls -lh apache/
total 2.4M
-rw-r--r-- 1 ubuntu ubuntu 2.4M 2011-05-15 15:04 access.log
-rw-r--r-- 1 ubuntu ubuntu  27K 2011-05-15 15:00 error.log

Das ergibt für mich keinen Sinn. Hilfe?

Bearbeiten: Das Dateisystem ist ext4.

Felix
quelle

Antworten:

13

Sie müssen das Ausführungsbit für Verzeichnisse setzen, wenn Sie dazu wechseln möchten. (Der Dateisystemtyp spielt keine Rolle.)

chmod u+x ./apache
Matte
quelle
7

http://www.albany.edu/faculty/gms/homepage101/unix_permissions.html sagt

TABELLE 1. Berechtigungen für das UNIX-VERZEICHNIS

WER WAS DIE ERLAUBNISSE ERLAUBEN
USER Read (r) Der Kontoinhaber kann die Dateien im Verzeichnis auflisten.
       Schreiben (w) Der Kontoinhaber kann Dateien im erstellen oder löschen 
                        Verzeichnis.
       Führen Sie (x) Zugriffsdateien in diesem Verzeichnis nach Namen aus (z. B. Web) 
                        Auslagerungsdateien).

GROUP Read (r) Jeder in der angegebenen Gruppe kann die Dateien auflisten 
                        das Verzeichnis.
       Schreiben (w) Jeder in der Gruppe kann Dateien in der Gruppe erstellen oder löschen 
                        Verzeichnis.
       Ausführen (x) Jeder in der Gruppe kann (cd) in die ändern 
                        Verzeichnis und Zugriff auf Dateien in diesem Verzeichnis nach Namen 
                        (wie Webseitendateien).

SONSTIGES Lesen (r) Jeder kann die Dateien im Verzeichnis auflisten.
       Schreiben (w) Jeder kann Dateien im Verzeichnis erstellen oder löschen.
       Ausführen (x) Jeder kann (cd) in das Verzeichnis wechseln und darauf zugreifen 
                        Dateien in diesem Verzeichnis nach Namen 
                        (wie Webseitendateien).

Der Wikipedia-Artikel ist lesenswert und sagt

Das Festlegen der Berechtigungen für ein Verzeichnis (und nicht für eine Datei) bewirkt "eines der am häufigsten missverstandenen Probleme mit Dateiberechtigungen" (Hatch 2003).

RedGrittyBrick
quelle
Sie müssen also die executeBerechtigung haben, in ein Verzeichnis zu cd? @ RedGrittyBrick
AJP
Ja, Sie benötigen die Ausführungsberechtigung für ein Verzeichnis, um es zu "durchlaufen", dh um etwas mit seinem Inhalt zu tun. Wenn Sie keine Ausführungsberechtigung haben, können Sie das Verzeichnis weiterhin sehen, und Sie können states, aber Sie können es nicht lsoder greifen überhaupt nicht auf seinen Inhalt zu.
Blacklight Shining