GNU/Linux >> Linux Esercitazione >  >> Linux

Perché non è possibile trovare Read /run/user/1000/gvfs anche se è in esecuzione come root?

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


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. gcc - /usr/bin/ld errore:impossibile trovare <library> in /usr/local/lib anche se ldconfig lo elenca e il percorso è stato aggiunto a ld.so.conf

  3. unix:///var/run/supervisor.sock nessun file di questo tipo

  4. Usa in modo sicuro find con sudo

  5. Cos'è questa cartella /run/user/1000?

Come scoprire da quale cartella è in esecuzione un processo?

Perché i contenuti di /dev/shm/ vengono rimossi automaticamente

Perché mettere cose diverse da /home in una partizione separata?

Come configurare ssh senza password con chiavi RSA

Perché sono necessari < o > per usare /dev/tcp

Devo modificare /etc/crontab o eseguire crontab -e come root?