¿Por qué no puedo encontrar read / run / user / 1000 / gvfs aunque se esté ejecutando como root?


34

¿Alguien puede decirme qué estoy haciendo mal, qué es esto o cómo solucionarlo? Estoy ejecutando Fedora 18 y obtengo el error que se muestra

[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

No está haciendo nada malo y mi sugerencia sería simplemente ignorar el error. Si eso no es aceptable, ¿qué tal si excluimos el punto de montaje GVFS en la findlínea de comando?
Tripleee

Respuestas:


33

No estás haciendo nada malo, y no hay nada que arreglar. /run/user/$uid/gvfso ~$user/.gvfses el punto de montaje para la interfaz FUSE a GVFS . GVFS es una implementación de sistema de archivos virtual para Gnome, que permite a las aplicaciones Gnome acceder a recursos como servidores FTP o Samba o al contenido de archivos zip como directorios locales. FUSE es una forma de implementar controladores de sistema de archivos como código de usuario (en lugar de código de núcleo). La puerta de enlace GVFS-FUSE hace que los controladores del sistema de archivos GVFS sean accesibles para todas las aplicaciones, no solo para las que usan bibliotecas Gnome.

Administrar los límites de confianza con los sistemas de archivos FUSE es difícil, porque el controlador del sistema de archivos se ejecuta como un usuario sin privilegios, a diferencia del código del núcleo para los sistemas de archivos tradicionales. Para evitar complicaciones, de manera predeterminada, los sistemas de archivos FUSE solo son accesibles para el usuario que ejecuta el proceso del controlador. Incluso la raíz no puede pasar por alto esta restricción.

Si está buscando un archivo solo en sistemas de archivos locales, pase -xdeva find. Si desea atravesar múltiples sistemas de archivos locales, enumere todos.

find  / /home -xdev -name ngirc

Si el archivo ha estado presente desde ayer, puede intentarlo en su locate ngirclugar ( locatebusca en una base de datos de nombres de archivo que normalmente se actualiza todas las noches).

Si desea atravesar los puntos de montaje GVFS, deberá hacerlo como el usuario apropiado.

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

Gracias por la gran explicación sobre GVFS y FUSE. Intenté ejecutar 'find' como en tu ejemplo y funcionó muy bien.
kal

¿Cómo evita FUSE que el root acceda a los archivos? Seguramente root tiene la capacidad de deshabilitar tales protecciones.
Akinos

1
@Nat Root puede cambiar el fluido de su proceso al uid objetivo, por lo que, en un sentido de seguridad, pasar por alto la protección es trivial. Pero la función de control de acceso en el núcleo niega el acceso a la raíz. Este fenómeno también ocurre con otros sistemas de archivos, por ejemplo, root no puede acceder a directorios privados en NFS sin cambiar al UID del propietario.
Gilles 'SO- deja de ser malvado'

2
para "evitar complicaciones" ... Bueno, seguro creó una gran complicación ya que no puedo usar el comando mount para asignar la ruta compartida a un nombre de carpeta más limpio. Acceso denegado a la raíz cuando uso sudo mount.
Nuzzolilo

@ Nuzzolilo No tengo idea de lo que estás hablando. Si tiene un problema, haga una nueva pregunta y asegúrese de explicar su escenario.
Gilles 'SO- deja de ser malvado'

10

Es un problema de fusibles . Ningún usuario excepto el propietario puede leer. Para evitar la configuración predeterminada, intente habilitar la opción user_allow_other. Esta opción se especifica agregándola a /etc/fuse.conf. No tiene valor, solo especifique la opción en una línea en blanco.


Gracias. Realmente no entiendo qué es el fusible, pero después de leer un poco del informe de errores en su comentario y el comentario de don_crissti, ¿supongo que esto tiene que ver con un disco duro USB que he enchufado o mi servidor samba? ¿Hay algún problema de seguridad que debería tener en cuenta al habilitar "user_allow_other" y hay otras opciones de montaje que debería tener en cuenta? Gracias.
kal

1
Gracias, pero esta no es realmente una solución para mí si nadie más puede usar el sistema. ¿Cómo puedo saber quién es el dueño? Intenté desmontar / desconectar mi disco duro externo y apagar mi servidor samba. Todo lo que realmente quiero hacer es poder buscar un archivo en todo el sistema de archivos sin comprometer la seguridad. ¿Existe una alternativa a FUSE y hay una manera de saber exactamente para qué se utiliza? Gracias.
kal

askubuntu.com/questions/715637/… Intenté la sugerencia de @Christopher pero no se respetan las opciones de la línea de comandos. Sospecho que el daemon auto launcher está configurado de cierta manera, pero no puedo encontrar la documentación de configuración para hacerlo
Nuzzolilo

3

Si obtiene el permiso y otros detalles para gvfs según lo siguiente

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

luego desmonta tus gvfs usando el siguiente comando. Su problema se resolverá después de seguir este proceso.

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

GVFS (Sistema de archivos virtuales de GNOME) es el sistema de archivos virtual para el escritorio de GNOME, que permite a los usuarios acceder fácilmente a datos remotos a través de SFTP, FTP, WebDAV, SMB y datos locales a través de la integración de udev para que no tenga miedo al desmontar este .


3

Este es un hilo antiguo, pero en los informes de errores de gnome es un problema abierto reciente, por lo que puede ser útil para cualquiera que busque horas para encontrar una solución para solucionar problemas de gvfs-fuser, que parecen estar estrechamente relacionados.

Mensaje de error de fusión:

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'.

Encontré el problema de gvfs-fuser al intentar usar meld / diff / kdiff sobre ftp. Parece que el problema es entre fuser y gvfs. El problema parece no ocurrir en 3.15.1, pero comienza a notificarse en 3.15.2. (¿La nueva versión de Python?) La solución es una solución alternativa, no una solución: los archivos / directorios se copiarán pero aún se muestra el error.

La respuesta de Christopher define el problema y proporciona la solución.

Otra posible solución es usar sshfs (vea este comentario y este hilo ). Para obtener más información sobre gvfs-commands, consulte ¿Cuál es la diferencia entre los comandos gvfs y los comandos comunes como cat, ls, cp?

Los posibles errores relacionados incluyen GNOME # 317875 y GNOME # 768281 .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.