Чому не можна знайти read / run / user / 1000 / gvfs, хоча він працює як root?


34

Може хтось скаже мені, що я роблю неправильно, що це таке, або як це виправити? Я запускаю Fedora 18 і показую помилку

[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

Ви нічого не робите, і моя пропозиція буде просто ігнорувати помилку. Якщо це не прийнятно, як щодо виключення точки монтажу GVFS з findкомандного рядка?
трійка

Відповіді:


33

Ви нічого не робите неправильно, і виправити нічого. /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

Дякуємо за чудове пояснення щодо GVFS та FUSE. Я спробував запустити "знайти", як у вашому прикладі, і він чудово працював.
кал

Як FUSE запобігає доступу root до файлів root? Безумовно, root має можливість відключити такі захисти.
Акінос

1
@Nat Root може змінити запобіжник свого процесу на цільовий uid, тому в сенсі безпеки обхід захисту тривіально. Але функція контролю доступу в ядрі забороняє доступ до root. Це явище трапляється і з іншими файловими системами, наприклад, root не може отримати доступ до приватних каталогів на NFS без переходу на UID власника.
Жил "ТАК - перестань бути злим"

2
щоб "уникнути ускладнень" ... Ну, безумовно, це створило одне величезне ускладнення, оскільки я не можу використовувати команду mount, щоб зіставити шлях спільного доступу до назви більш чистої папки. Доступ заборонений до root під час використання sudo mount.
Нуццоло

@Nuzzolilo Я поняття не маю, про що ти говориш. Якщо у вас є проблеми, поставте нове запитання і обов'язково поясніть свій сценарій.
Жил "ТАК - перестань бути злим"

10

Це питання запобіжників . Жоден користувач, крім власника, не може читати. Щоб обійти налаштування за замовчуванням, спробуйте ввімкнути параметр user_allow_other. Цей параметр задається додаванням його в /etc/fuse.conf. Він не має значення, просто вкажіть параметр у порожньому рядку.


Спасибі. Я насправді не розумію, що таке запобіжник, але прочитавши трохи звіту про помилку у вашому коментарі та коментаря don_crissti, я здогадуюсь, що це стосується жорсткого диска USB, який я підключив, або мого сервера samba? Чи є якісь проблеми із безпекою, які я повинен враховувати при включенні "user_allow_other" і чи є інші варіанти монтажу, які я повинен врахувати? Спасибі.
кал

1
Дякую, але це насправді не для мене рішення, якщо ніхто інший не може використовувати систему. Як я можу сказати, хто власник? Я спробував відключити / відключити зовнішній жорсткий диск та вимкнути сервер самби. Все, що я дійсно хочу зробити, - це можливість шукати файл у всій файловій системі без шкоди для безпеки. Чи є альтернатива FUSE і чи є спосіб точно сказати, для чого він використовується? Спасибі.
кал

askubuntu.com/questions/715637/… Я спробував пропозицію від @Christopher, але параметри командного рядка не дотримуються. Я підозрюю, що автоматичний запуск демона налаштований певним чином, але я не можу знайти документацію по конфігурації для цього
Nuzzolilo

3

Якщо ви отримуєте дозвіл та інші деталі для gvfs, як указано нижче

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

тоді просто демонтуйте свої файли gvfs за допомогою наступної команди. Ваша проблема буде вирішена після виконання цього процесу.

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

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


3

це стара тема, але у звітах про помилки 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. Здається, проблема полягає в тому, що між fuser та gvfs. Здається, проблема не виникає в 3.15.1, але починає повідомлятися в 3.15.2. (Новий python ver?) Рішення є вирішенням, а не виправленням - файли / каталоги копіюватимуться, але помилка все ще відображається.

Відповідь Крістофера визначає проблему і забезпечує рішення.

Іншим можливим рішенням є використання sshfs (див. Цей коментар і цю тему ). Для отримання додаткової інформації gvfs-commandsдив. У чому різниця між командами gvfs та загальними командами, такими як cat, ls, cp?

Можливо, пов’язані помилки включають GNOME № 317875 та GNOME # 768281 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.