Warum werden beim Ändern der Verzeichnisberechtigungen Fragezeichen angezeigt?

33

Ich versuche, die Berechtigungen eines Ordners vorübergehend zu ändern, dessen anfängliche Berechtigungen lauten

user@ubuntu:/var/log$ ls -l squid*
squid3:
total 4
-rw-r----- 1 proxy proxy    0 Jan 16 14:43 access.log
-rw-r----- 1 proxy proxy 1359 Jan 16 14:43 cache.log
ls: cannot open directory squid-deb-proxy: Permission denied

zu etwas folgend

user@ubuntu:/var/log$ sudo chmod -R 644 squid*
user@ubuntu:/var/log$ ls -l squid*
squid3:
ls: cannot access squid3/cache.log: Permission denied
ls: cannot access squid3/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? cache.log

squid-deb-proxy:
ls: cannot access squid-deb-proxy/store.log: Permission denied
ls: cannot access squid-deb-proxy/cache.log: Permission denied
ls: cannot access squid-deb-proxy/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? cache.log
-????????? ? ? ? ?            ? store.log

Sie werden feststellen, dass nach der Änderung der Berechtigungen überall Fragezeichen angezeigt werden. Warum passiert das? Grundsätzlich möchte ich das Zugriffsprotokoll lesen, um festzustellen, ob der Squid-Deb-Proxy-Server Anforderungen vom Client erhält oder nicht.

registrierter Nutzer
quelle

Antworten:

38

Um die Berechtigungen eines Verzeichnisses anzuzeigen, müssen Sie das -dFlag lswie folgt übergeben:

ls -ld squid3

Um eine Datei zu lesen, muss ihre Leseberechtigung festgelegt werden. Jedoch ein Verzeichnis und die Auflistung der Dateien zu lesen, sowohl die Lese- und die Berechtigungen ausführen muß Set sein . Ist dies nicht der Fall, treten seltsame Fehler auf, wie sie bei Ihnen auftreten.

Verwenden Sie diesen Befehl, um die Leseberechtigung für Dateien und die Lese- und Ausführungsberechtigungen für Verzeichnisse rekursiv festzulegen:

chmod -R a+rX directoryname

Hier ist eine Erklärung dieses Befehls:

  • chmod ist der Name des Befehls, der zum Ändern der Berechtigungen von Dateien verwendet wird.
  • -Rist die rekursive Flagge. Es bedeutet, dass dieser Befehl auf das Verzeichnis und alle seine Kinder und die Kinder seiner Kinder usw. angewendet wird.
  • a steht für alle: Wenden Sie diese Berechtigungen auf den Eigentümer der Datei, den Gruppeneigentümer der Datei und alle anderen Benutzer an.
  • + bedeutet, dass Sie die folgenden Berechtigungen hinzufügen müssen, sofern diese noch nicht festgelegt wurden.
  • r bedeutet die Leseberechtigung.
  • Xbedeutet die Ausführungsberechtigung, jedoch nur für Verzeichnisse. Kleinbuchstaben xbedeuten die Ausführungsberechtigung für Dateien und Verzeichnisse.

Weitere Informationen finden Sie in der Manpage zum chmodBefehlManpage-Symbol .

Flimm
quelle
1
Gibt es irgendwelche Probleme bei der Verwendung vonchmod -R 644 squid*
Registrierter Benutzer
4
@RegisteredUser: ja. 644 ist rw-r--r--, was für Dateien geeignet ist, aber nicht für Verzeichnisse. Für Verzeichnisse muss auch die Ausführungsberechtigung wie rwxr-xr-xfolgt festgelegt sein : oder 755. Der von Ihnen erwähnte Befehl deaktiviert die Ausführungsberechtigung für alle Dateien und Verzeichnisse rekursiv, wodurch diese Fehler verursacht werden.
Flimm
3

Ich hatte auch dieses Problem. Ich konnte weder chmod noch chown für die Datei ausführen. Ich hatte versucht, es zu löschen. Es hat sich herausgestellt, dass der Versuch, es zu löschen (Befehl rm), das Problem verursacht hat. Der Kicker ist, dass die Datei zwischen zwei verschiedenen Systemen geteilt wird . Sobald ich die Datei auf dem anderen System geschlossen habe, ist sie verschwunden. Hier finden Sie weitere Details zu meiner Konfiguration. System 1: Ubuntu-Gast-VM. Hier habe ich den Befehl rm ausgeführt. System 2: Windows 7-Host. Hier hatte ich die Datei mit dem Befehl less geöffnet (in cygwin ist dies nicht unbedingt relevant).

Alan
quelle
2

Wie Sie festgestellt haben, ist das Lesen Ihr Ziel /var/log/squid/access.log. Ihre beste Lösung ist sudo less /var/log/squid/access.logdas Tippen, was die Mühe erspart, wiederholt Chmodding auszuführen.

guntbert
quelle