Directory che un utente può leggere, ma root non può?


9

Sotto il mio homedir c'è una directory chiamata ".gvfs". Come mio normale account utente, posso leggerlo bene:

~ $ ls -lart ~raldi/.gvfs
total 4
dr-x------  2 raldi raldi    0 2009-05-25 22:17 .
drwxr-xr-x 60 raldi raldi 4096 2009-05-25 23:08 ..
~ $ ls -d ~raldi/.gvfs
dr-x------ 2 raldi raldi 0 2009-05-25 22:17 /home/raldi/.gvfs

Tuttavia, come root non posso "ls" o persino "ls -d":

# ls ~raldi/.gvfs
ls: cannot access /home/raldi/.gvfs: Permission denied
# ls -d ~raldi/.gvfs
ls: cannot access /home/raldi/.gvfs: Permission denied

E, solo per assicurarsi:

# echo $UID $EUID
0 0

Questa è solo una semplice installazione domestica di Ubuntu 8.10, niente NFS o qualcosa di strano. Vedo che la directory è contrassegnata come non leggibile dal mondo (e non in grado di x-world), ma ho pensato che nulla di tutto ciò fosse applicabile quando si è root. Ad esempio, posso creare una directory mode-000 in / tmp e consegnarla a un utente non root, e root non ha problemi a leggerlo, scriverlo, qualunque cosa.

Qualche idea di cosa stia succedendo?


È interessante notare che si ottengono gli stessi sintomi quando si utilizza sshfs come utente normale e quindi si tenta di eseguire qualsiasi tipo di operazione sul punto di montaggio come root. L'utente root non ha autorizzazioni per visualizzare il punto di montaggio. Non puoi nemmeno vedere i permessi, ls -l restituisce tutti i punti interrogativi per tutti i bit di permesso.
GodEater,

1
"Questa è solo una semplice installazione domestica di Ubuntu 8.10, niente NFS o qualcosa di strano". Uhm, la miccia è "qualcosa di strano"
Thomas,

Risposte:


21

Da: http://bugzilla.gnome.org/show_bug.cgi?id=534284

Questo è tutto sfortunato, ma è una decisione che è stata presa dalle persone fuse a livello di kernel (l'utente diverso da quello che ha montato i fs non può accedervi, incluso il root) e non c'è niente che possiamo fare al riguardo.

Vedi anche: https://bugs.launchpad.net/gvfs/+bug/225361

La soluzione sembra essere quella di aggiornare il file /etc/fuse.conf e abilitare l' opzione user_allow_other . Potrebbe anche essere necessario quindi ottenere gvfs per passare il allow_root o allow_other, ma non sono sicuro di come farlo.

Ovviamente potrebbe essere molto più semplice rinunciare a tutti gli strumenti della GUI come gvfs e montare i filesystem dalla riga di comando, dove hai il controllo completo su come viene montato qualcosa.


5

La .gvfsdirectory è il filesystem dello spazio utente di Gnome VFS che fornisce un percorso diretto del filesystem per i filesystem virtuali (ad esempio montaggi di samba remoti, montaggi di webdav) in modo che Gnome possa passare percorsi a programmi che non sono sensibili a VFS quando operano su file remoti.

Poiché è un mount e un'applicazione FUSE, può negare i permessi di root: l'agente che esegue i controlli di accesso in questo caso è l'applicazione FUSE, non il kernel.

Per impostazione predefinita, il gvfsdemone consente solo al proprietario di attraversare la directory.


0

Potrebbero essere alcune cose, in ordine di probabilità

  • controlla / var / log / messages (o / var / log / syslog) per possibili danni al filesystem
  • stai usando SELinux?
  • google suggerisce che lsattr ~ raldi / .gvfs potrebbe indicare capacità speciali applicate a quel file.

Ho eseguito fsck sul disco e non ha riscontrato alcun problema. Non sto usando SELinux. Se eseguo lsattr come account utente, non viene generato alcun output. Se lo eseguo come root, ricevo un errore "permesso negato".
Raldi,

Sembra che Zoredache abbia la risposta
Dave Cheney
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.