Qualcuno può dirmi cosa sto facendo di sbagliato, di cosa si tratta o come risolverlo? Sto eseguendo Fedora 18 e viene visualizzato l'errore
[[email protected] /]# find . -name ngirc
find: `./run/user/1000/gvfs': Permission denied
[[email protected] /]#
[[email protected] /]# pwd
/
[[email protected] /]# ls -ltr ./run/user/1000
ls: cannot access ./run/user/1000/gvfs: Permission denied
total 0
d?????????? ? ? ? ? ? gvfs
lrwxrwxrwx. 1 root root 17 May 28 12:30 X11-display -> /tmp/.X11-unix/X0
drwx------. 2 kal kal 120 May 28 12:30 keyring-QjDw4b
drwx------. 2 kal kal 40 May 28 12:30 gvfs-burn
drwx------. 2 kal kal 60 May 28 12:30 krb5cc_5f0bcaf94f916d6b61696e2251a4dbb3
drwx------. 2 kal kal 60 May 28 18:25 dconf
Risposta accettata:
Non stai facendo nulla di sbagliato e non c'è niente da sistemare. /run/user/$uid/gvfs
o ~$user/.gvfs
è il punto di montaggio per l'interfaccia FUSE su GVFS. GVFS è un'implementazione di filesystem virtuale per Gnome, che consente alle applicazioni Gnome di accedere a risorse come server FTP o Samba o al contenuto di file zip come directory locali. FUSE è un modo per implementare i driver del filesystem come codice utente (invece del codice del kernel). Il gateway GVFS-FUSE rende i driver del filesystem GVFS accessibili a tutte le applicazioni, non solo a quelle che utilizzano le librerie Gnome.
La gestione dei limiti di attendibilità con i filesystem FUSE è difficile, perché il driver del filesystem viene eseguito come utente senza privilegi, al contrario del codice del kernel per i filesystem tradizionali. Per evitare complicazioni, per impostazione predefinita, i filesystem FUSE sono accessibili solo all'utente che esegue il processo del driver. Anche il root non riesce a bypassare questa restrizione.
Se stai cercando un file solo su filesystem locali, passa -xdev
per find
. Se vuoi attraversare più filesystem locali, enumerali tutti.
find / /home -xdev -name ngirc
Se il file è presente da ieri, puoi provare a locate ngirc
invece (locate
effettua ricerche in un database di nomi di file che in genere viene aggiornato ogni notte).
Se vuoi attraversare i punti di montaggio GVFS, dovrai farlo come utente appropriato.
find / -name ngirc -path '/run/user/*/gvfs' -prune -o -path '/home/*/.gvfs' -prune -o -name ngirc -print
for d in /run/user/*; do su "${d##*/}" -c "find $d -name ngirc -print"; done