"Erlaubnis verweigert" für eine Datei, die ich besitze?

13

Mein Benutzer, Bob, kann nicht auf Dateien zugreifen, die er (theoretisch) besitzt. Ich verwende Fedora Core 8. Es ist wahrscheinlich einfacher zu zeigen als zu sagen:

> ls -al .
total 32
drwxrwxr-x 7 bob bob 4096 May 18 14:33 .
drwxrwxr-x 4 bob bob 4096 May 12 15:44 ..
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log

> cd ./log
-bash: cd: log/: Permission denied

> ls -al ./log
ls: cannot access log/..: Permission denied
ls: cannot access log/the.log: Permission denied
ls: cannot access log/.: Permission denied
total 0
d????????? ? ? ? ?            ? .
d????????? ? ? ? ?            ? ..
-????????? ? ? ? ?            ? the.log

> sudo ls -al ./log
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .
drwxrwxr-x 7 bob bob      4096 May 18 14:33 ..
-rw-rw-r-- 1 bob bob         0 Jun  1 04:12 the.log

Das ls -alfällt als sehr merkwürdig auf. Es werden die Dateien aufgelistet, für die ich keine Berechtigungen habe, die mir jedoch nicht angezeigt werden.

Die Fragen sind also, was würde dies verursachen? Und was kann ich tun, um es zu reparieren?

Gordon Wilson
quelle

Antworten:

17
> sudo ls -al ./log
...
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .

Es sieht nicht so aus, als hätte Bob Ausführungsberechtigungen für ./log, also kann er nicht cddarauf zugreifen .

Aber

> ls -al .
...
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log

zeigt, dass er es tut. Es sieht jedoch nicht so aus, als würden sie auf dieselbe Datei verweisen (unterschiedliche Berechtigungen, unterschiedliche Modi).

Versuchen sudo ls -ail ./logund ls -ailzu sehen , ob die Inode ist das gleiche.

CoverosGene
quelle
10

Die Dinge sind einfacher als Dateisystembeschädigung oder Selinux. Wie Sie sehen, fehlt Ihnen die Berechtigung x (ausführbar) für das Protokollverzeichnis. Tatsächlich bedeutet x für Verzeichnisse, dass jemand in dieses Verzeichnis wechseln kann. Führe einfach ein "chmod + x log" durch, um diese Dauerwelle zu reparieren, und du solltest in der Lage sein, darauf zuzugreifen.


quelle
> Tatsächlich bedeutet x für Verzeichnisse, dass jemand in das Verzeichnis wechseln kann. Wow. Ich vergesse das immer wieder. Vielen Dank.
yPhil
6

Ich habe solche Dinge gesehen, wenn das Dateisystem beschädigt wurde oder wenn Sie ein fehlerhaftes Laufwerk haben. Das Update besteht normalerweise darin, fsck für das Dateisystem auszuführen und die gefundenen Fehler korrigieren zu lassen.

Zoredache
quelle
Ich habe das vor ungefähr einer Stunde auf einem meiner Dateiserver gemacht. +1
Thomas Denton
2

Überprüfen Sie auch die SE / Linux-Einstellungen. Manchmal haben die Berechtigungen für die Datei nichts damit zu tun, ob Sie darauf zugreifen können oder nicht.

David Mackintosh
quelle
1
Ich bin mit @ David Mackintosh einverstanden. Wenn SELinux aktiviert ist und die Dateien / Verzeichnisse von einer anderen Person erstellt und dann in bob geändert wurden, ist dies wahrscheinlich. Da der Kontext der Dateien beim ursprünglichen Autor bleibt und nicht zugänglich ist, bis der Kontext auch auf Bob-Benutzer geändert wird.
Viky
2

Die Dateien können unveränderliche oder nur erweiterte Attribute enthalten. Ich habe dies schon einmal erlebt und nicht einmal root konnte die Datei löschen.

Erweiterte Attribute können über "lsattr" angezeigt und über "chattr" geändert werden

Haakon
quelle
1
> sudo ls -al ./log
drw-rw-r-- 3 bob bob 4096 2. Juni 04:11.

Ich bin mir nicht sicher warum, aber das "." Eintrag in ./log/ hat keine Ausführungsberechtigungen. Die Berechtigungen sollten mit denen für ./log identisch sein.

Kannst du chmod 755 ./log und chmod 755 ./log/ ausprobieren? und sehen, ob einer der Befehle den Zugriff behebt?

Ansonsten würde ich raten, dass Sie ein fsck auf dem Dateisystem ausführen, da es aussieht, als wäre es nicht synchron.

Russell Heilling
quelle
1

Haben Sie versucht, den Besitz des Verzeichnisses auf eine andere Person und dann wieder auf Bob zu übertragen? Der Rat von Zoredache ist jedoch besser - einfach überprüfen!

RainyRat
quelle
2
Diese Art von Problem führt immer zu Verzeichnisberechtigungen.
DoubleJosh
1

Eine präzisere Antwort IMO.

Ihr Verzeichnis verfügt nicht über ausführbare Berechtigungen, die von CD benötigt werden .

Fix:

$ sudo chmod +x ./log

Rekursiv:

$ sudo chmod -R +x ./log

+ x fügt das Attribut executable hinzu. Sie können das Attribut jederzeit mit -x entfernen

Justin Fortier
quelle