Perché non riesco a trovare read / run / user / 1000 / gvfs anche se è in esecuzione come root?


34

Qualcuno può dirmi cosa sto facendo di sbagliato, di cosa si tratta o come risolverlo? Sto eseguendo Fedora 18 e viene visualizzato l'errore

[root@servername /]# find . -name ngirc
find: `./run/user/1000/gvfs': Permission denied
[root@servername /]# 
[root@thinktank /]# pwd
/
[root@thinktank /]# 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

Non stai facendo nulla di male e il mio suggerimento sarebbe semplicemente di ignorare l'errore. Se ciò non è accettabile, che ne dite di escludere il mount point GVFS dalla findriga di comando?
triplo

Risposte:


33

Non stai facendo nulla di male e non c'è nulla da risolvere. /run/user/$uid/gvfso ~$user/.gvfsè il punto di montaggio per l' interfaccia FUSE per 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 le directory locali. FUSE è un modo per implementare i driver del filesystem come codice utente (anziché come codice kernel). Il gateway GVFS-FUSE rende i driver del file system GVFS accessibili a tutte le applicazioni, non solo a quelle che usano le librerie Gnome.

Gestire i confini di fiducia con i filesystem FUSE è difficile, perché il driver del filesystem è in esecuzione come utente non privilegiato, 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 aggirare questa limitazione.

Se stai cercando un file solo su filesystem locali, passa -xdeva find. Se si desidera attraversare più filesystem locali, elencarli tutti.

find  / /home -xdev -name ngirc

Se il file è presente da ieri, puoi locate ngircinvece provare ( locatecerca attraverso un database di nomi di file che viene generalmente aggiornato di notte).

Se vuoi attraversare i punti di mount di GVFS, dovrai farlo come l'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

Grazie per l'ottima spiegazione su GVFS e FUSE. Ho provato a eseguire 'find' come nel tuo esempio e ha funzionato alla grande.
Kal

In che modo FUSE impedisce ai root di accedere ai file? Sicuramente root ha la capacità di disabilitare tali protezioni.
Akinos,

1
@Nat Root può modificare il fsuid del suo processo con il target uid, quindi in un certo senso bypassare la protezione è banale. Ma la funzione di controllo dell'accesso nel kernel nega l'accesso al root. Questo fenomeno si verifica anche con altri filesystem, ad es. Root non può accedere alle directory private su NFS senza passare all'UID del proprietario.
Gilles 'SO- smetti di essere malvagio' il

2
per "evitare complicazioni" ... Beh, ha sicuramente creato un'enorme complicazione poiché non posso usare il comando mount per mappare il percorso di condivisione su un nome di cartella più pulito. Accesso negato a root quando si usa sudo mount.
Nuzzolilo,

@Nuzzolilo Non ho idea di cosa tu stia parlando. Se hai un problema, fai una nuova domanda e assicurati di spiegare il tuo scenario.
Gilles 'SO- smetti di essere malvagio' il

10

È un problema di miccia . Nessun utente tranne il proprietario può leggere. Per aggirare la configurazione predefinita, provare ad abilitare l'opzione user_allow_other. Questa opzione viene specificata aggiungendola a /etc/fuse.conf. Non ha valore, basta specificare l'opzione su una riga vuota.


Grazie. Non capisco davvero cosa sia il fusibile, ma dopo aver letto un po 'dalla segnalazione di bug nel tuo commento e nel commento di don_crissti, immagino che questo abbia a che fare con un disco rigido USB che ho collegato o il mio server Samba? Ci sono problemi di sicurezza che dovrei considerare quando abilito "user_allow_other" e ci sono altre opzioni per il montaggio che dovrei considerare? Grazie.
Kal

1
Grazie, ma questa non è davvero una soluzione per me se nessun altro può usare il sistema. Come posso sapere chi è il proprietario? Ho provato a smontare / disconnettere il mio disco rigido esterno e spegnere il mio server Samba. Tutto quello che voglio davvero fare è essere in grado di cercare un intero file system senza compromettere la sicurezza. Esiste un'alternativa a FUSE e c'è un modo per dire esattamente a cosa serve? Grazie.
Kal

askubuntu.com/questions/715637/… Ho provato il suggerimento di @Christopher ma le opzioni della riga di comando non sono state rispettate. Sospetto che il daemon auto launcher sia configurato in un certo modo ma non riesco a trovare la documentazione di configurazione per farlo
Nuzzolilo,

3

Se stai ottenendo il permesso e altri dettagli per gvfs secondo quanto segue

d?????????? ? ?    ?      ?            ? gvfs

quindi basta smontare il tuo gvfs usando il seguente comando. Il problema verrà risolto dopo aver seguito questo processo.

umount ~/gvfs(umount /run/user/112/gvfs in my case).

GVFS (GNOME Virtual File System) è il file system virtuale per il desktop GNOME, che consente agli utenti un facile accesso ai dati remoti tramite SFTP, FTP, WebDAV, SMB e dati locali tramite l'integrazione udev, quindi non è necessario aver paura mentre si smonta questo .


3

questo è un vecchio thread ma nei bug di gnome riporta che è un recente problema aperto, quindi potrebbe essere utile a chiunque cerchi per ore una soluzione per risolvere i problemi di gvfs-fuser - che sembrano tutti strettamente correlati.

Messaggio di errore dalla combinazione:

Error copying '/media/root/5FDA03906F33F217/SAVE/rsyncTEST-usb/allusers' to '/run/user/0/gvfs/ftp:host=192.168.0.103/var/ftp/ftpd/images/PersistenceUSBs/rsync-meld/allusers'

[Errno 95] Operation not supported: '/run/user/0/gvfs/ftp:host=192.168.0.103/var/ftp/ftpd/images/PersistenceUSBs/rsync-meld/allusers'.

Ho riscontrato il problema gvfs-fuser nel tentativo di utilizzare meld / diff / kdiff su ftp. Sembra che il problema sia tra fuser e gvfs. Il problema sembra non verificarsi in 3.15.1 ma inizia a essere segnalato in 3.15.2. (La nuova versione di Python?) La soluzione è una soluzione alternativa, non una correzione: i file / le directory verranno copiati ma l'errore verrà comunque visualizzato.

La risposta di Christopher definisce il problema e fornisce la soluzione.

Un'altra possibile soluzione sta usando sshfs (vedi questo commento e questa discussione ). Per ulteriori informazioni su gvfs-commands, vedere Qual è la differenza tra i comandi gvfs e i comandi comuni come cat, ls, cp?

I bug eventualmente correlati includono GNOME # 317875 e GNOME # 768281 .

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.