Почему не удается найти read /run /user /1000 /gvfs, хотя он работает от имени root?

Может ли кто-нибудь сказать мне, что я делаю неправильно, что это такое или как это исправить? Я запускаю Fedora 18 и получаю сообщение об ошибке

[[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
27 голосов | спросил kal 29 Mayam13 2013, 03:10:21

4 ответа


27

Вы ничего не делаете неправильно, и ничего не исправить. /run/user/$uid/gvfs или ~$user/.gvfs - точка монтирования для интерфейс FUSE для GVFS . GVFS - это реализация виртуальной файловой системы для Gnome, которая позволяет приложениям Gnome обращаться к ресурсам, таким как серверы FTP или Samba, или содержимое zip-файлов, таких как локальные каталоги. FUSE - это способ реализовать драйверы файловой системы в качестве кода пользователя (вместо кода ядра). Шлюз GVFS-FUSE делает драйверы файловой системы GVFS доступными для всех приложений, а не только для тех, которые используют библиотеки Gnome.

Управление границами доверия с файловыми системами FUSE затруднительно, поскольку драйвер файловой системы работает как непривилегированный пользователь, в отличие от кода ядра для традиционных файловых систем. Чтобы избежать осложнений, по умолчанию файловые системы FUSE доступны только пользователю, выполняющему процесс драйвера. Даже root не может обойти это ограничение.

Если вы ищете файл только для локальных файловых систем, передайте -xdev в find. Если вы хотите пересечь несколько локальных файловых систем, перечислите их все.

find  / /home -xdev -name ngirc

Если файл присутствует со вчерашнего дня, вы можете попробовать locate ngirc (locate выполняет поиск через базу данных имен файлов, которая обычно обновляется каждую ночь) .

Если вы хотите пересечь точки монтирования GVFS, вам нужно будет сделать это как соответствующий пользователь.

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
ответил Gilles 30 Mayam13 2013, 04:37:13
8

Это проблема с предохранителем . Ни один пользователь, кроме владельца, не может читать. Чтобы обойти настройку по умолчанию, попробуйте включить параметр user_allow_other. Этот параметр указывается путем добавления его в /etc/fuse.conf. Он не имеет значения, просто укажите параметр на пустой строке.

ответил Christopher 29 Mayam13 2013, 03:25:57
2

Если вы получаете разрешение и другие данные для gvfs в соответствии со следующими

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

затем просто отключите свои gvfs, используя следующую команду. После выполнения этого процесса ваша проблема будет решена.

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

GVFS (виртуальная файловая система GNOME) - это виртуальная файловая система для рабочего стола GNOME, которая позволяет пользователям легко получать доступ к удаленным данным через SFTP, FTP, WebDAV, SMB и локальные данные через интеграцию udev, поэтому вам не нужно бояться отключив его.

ответил Mohd Meesam 25 Jam1000000amMon, 25 Jan 2016 09:47:14 +030016 2016, 09:47:14
2

Это старый поток, но в отчетах об ошибках gnome это недавняя открытая проблема, поэтому может быть полезно любому, кто ищет часы для решения проблемы с gvfs-fuser - все это, по-видимому, тесно связано.

Ошибка Msg из meld:

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

Я столкнулся с проблемой gvfs-fuser, пытающейся использовать meld /diff /kdiff над ftp. Кажется, проблема заключается в том, что между фьюзером и gvfs. Проблема, похоже, не возникает в 3.15.1, но начинает сообщаться в 3.15.2 (новый python ver?) Решение является обходным решением, а не исправлением - файлы /каталоги будут копироваться, но ошибка все еще отображается.

ответ Кристофера определяет проблему и предоставляет решение.

Другим возможным решением является использование sshfs (см. этот комментарий и этот поток ). Для получения дополнительной информации о gvfs-commands, см. В чем разница между командами gvfs и общими командами, такими как cat, ls, cp?

Вероятно связанные ошибки включают GNOME # 317875 и GNOME # 768281 .

ответил doubt 4 AM00000070000003931 2017, 07:01:39

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132