"Autorizzazione negata" a un file che possiedo?


13

Il mio utente, bob, non può accedere ai file che possiede (teoricamente). Sto eseguendo Fedora Core 8. Probabilmente è più facile mostrarlo che dire:

> 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

Il ls -alsi distingue come molto strano. Elencherà i file che non ho i permessi per vedere, ma non mi mostrerà i permessi?

Quindi le domande sono: che cosa potrebbe causare questo? E cosa posso fare per ripararlo?

Risposte:


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

Non sembra che Bob abbia i permessi di esecuzione per ./log, quindi non ci riesce cd.

Ma

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

dimostra che lo fa. Ma non sembra che stiano puntando allo stesso file (permessi diversi, modtime diverso).

Prova sudo ls -ail ./loge ls -ailper vedere se l'inode è lo stesso.


10

Le cose sono più semplici della corruzione del filesystem o di selinux. Come puoi vedere, manca l'autorizzazione x (eseguibile) nella directory di registro. In realtà per le directory x significa che qualcuno è in grado di passare a quella directory. Basta fare un "chmod + x log" per correggere quel perm e dovresti essere in grado di accedervi.


> In realtà per le directory x significa che qualcuno è in grado di passare a quella directory Wow. Continuo a dimenticarlo; Grazie.
yPhil

6

Ho visto cose del genere quando il filesystem è stato danneggiato o se si dispone di un'unità guasta. La correzione di solito è eseguire fsck sul filesystem e lasciare che corregga gli errori che ha trovato.


L'ho fatto circa un'ora fa su uno dei miei file server. +1
Thomas Denton,

2

Inoltre, controlla le impostazioni SE / Linux. A volte le autorizzazioni sul file non hanno nulla a che fare con la possibilità di accedervi o meno.


1
Sono d'accordo con @ David Mackintosh. Se SELinux è abilitato e se i file / le directory sono stati creati da qualcun altro e poi hanno cambiato la proprietà in bob, è probabile che ciò accada. poiché il contesto dei file rimane con l'autore originale e non sarà accessibile fino a quando il contesto non viene modificato anche dall'utente Bob.
Viky,

2

I file possono avere l'immutabile o aggiungere solo attributi estesi impostati. Ho avuto questo accadere prima e nemmeno root poteva cancellare il file.

Gli attributi estesi possono essere visualizzazioni tramite "lsattr" e modificati tramite "chattr"


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

Non sono sicuro del perché, ma il "." la voce in ./log/ non dispone delle autorizzazioni di esecuzione. Le autorizzazioni dovrebbero essere identiche a quelle per ./log.

Puoi provare chmod 755 ./log e chmod 755 ./log/. e vedere se uno dei due comandi corregge l'accesso?

Oltre a questo, consiglierei di eseguire un fsck sul filesystem perché sembra non essere sincronizzato.


1

Hai provato a cambiare la proprietà della directory con qualcun altro, quindi a Bob? Il consiglio di Zoredache è migliore, però: basta farlo!


2
Questo tipo di problema finisce sempre per essere permessi di directory.
doublejosh,

1

Una risposta più concisa IMO.

La tua directory non ha permessi eseguibili, che sono richiesti da cd .

fix:

$ sudo chmod +x ./log

ricorsivamente:

$ sudo chmod -R +x ./log

+ x sta aggiungendo l'attributo eseguibile. Puoi sempre rimuovere l'attributo facendo -x

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.