Почему мои монтирования gvfs не отображаются в ~ / .gvfs или / run / user / <login> / gvfs?


35

Из того, что я прочитал, при монтировании сетевого ресурса через nautilus или gvfs-mountточка монтирования должна быть в ~/.gvfs. Мне кажется, что это не так: я пытался смонтировать общий ресурс FTP и SMB через nautilus, а также gvfs-mountпод Ubuntu Maverick и Natty, и ни в одном из случаев я не видел ни одной точки монтирования ~/.gvfs. Я могу получить доступ к общим ресурсам, которые можно найти в nautilus, но я хочу получить доступ через командную строку, поэтому мне нужна точка монтирования в файловой системе.

Редактировать: Отладка после ответа Джеймса Хенстриджа и комментария enzotib показала, что на моем ноутбуке gvfs-fuse-daemonработает и, следовательно, gvfs монтируется, в ~/.gvfsто время как на 2 рабочих станциях, где ~/.gvfsоставалось пустым, gvfs-fuse-daemonне работал. На всех 3 -х машин есть и другие GVFS запущенные процессы: gvfsd, gvfs-afc-volume-monitor, ...

На ноутбуке mount | fgrep gvfsдаёт

gvfs-fuse-daemon on /home/xxx/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=xxx)

Это поднимает вопросы:

  • Как монтируются акции без gvfs-fuse-daemonзапуска? Разве в этом случае не создается точка монтирования, и каждый ли доступ к общему ресурсу является вызовом библиотеки gvfs? Какой демон отвечает? gvfsd?
  • Какова роль gvfs-fuse-daemon? Это только создает точку монтирования предохранителя в ~/.gvfs?

Обновление: 12.10 и позже, монтируются под /run/user/<login>/gvfs.


2
Можете ли вы показать вывод mount | grep gvfs?
энзотиб

Ответы:


12

~/.gvfsКаталог должен быть FUSE крепление осуществляется с помощью gvfs-fuse-daemonпроцесса. Если каталог окажется пустым, это будет означать, что gvfs-fuse-daemonон запустился неправильно.

Вы можете попробовать запустить его вручную с помощью следующей команды:

/usr/lib/gvfs/gvfs-fuse-daemon ~/.gvfs

Если это не удастся, вы можете попробовать проверить, смонтировано ли там что-то еще, или даже удалить и заново создать каталог ~ / .gvfs. Если что-то по-прежнему не получается, не могли бы вы обновить свой вопрос и предоставить какие-либо сообщения об ошибках, напечатанные gvfs-fuse-daemon?

** 14.04 демон вызывается gvfsd-fuseи может быть найден в /usr/lib/gvfs/gvfsd-fuse.


1
Еще одно исследование показало, что gvfsdдолжен запускаться gvfs-fuse-daemonавтоматически, когда gvfsdполучает первый запрос на доступ к удаленной файловой системе. Также есть ошибка в ubuntu / debian, которая делает ~/.gvfsкаталог нечитаемым при gvfs-fuse-daemonсбое и выдает сообщение об ошибке Конечная точка транспорта не подключена .
Кинан

Было ли когда-нибудь решено, почему gvfsd не запускается gvfs-fuse-daemonавтоматически? Под RHEL он работает, как ожидается, для пользователей root, но не для непривилегированных пользователей.
Аарон Копли

В действительности не отвечает на вопрос «Какова роль gvfs-fuse-daemon» и «Как монтируются общие ресурсы без запуска gvfs-fuse-daemon?». gvfs-fuse-daemon позволяет использовать такие параметры, как allow_root, которые по умолчанию игнорируются при использовании gvfs-mount. Поэтому ответ на эти вопросы поможет решить эту вечную тайну.
Нуццолило

Есть еще одна оговорка! gvfs-mountтребует DBUS, и вы получите точку монтирования только тогда, когда gvfs-mountиспользуется ЖЕ СЕССИЯ DBUS как gvfs-fuse-daemon. Поэтому, если вы подключаетесь по SSH к компьютеру и запускаете dbus-daemonсеанс, вы также должны породить человека gvfs-fuse-daemonдля сеанса.
user1129682

Что ж, это 5 лет спустя, и это все еще кажется издателем
Стюарт Аксон

20

Решил проблему (вид).

В Ubuntu 12.10 точка монтирования появляется в /run/user/(your username)/gvfs/sftp\:host\=\192.168.xxx.xxx.

надеюсь, это поможет


4

В Ubuntu 12.10 пути были изменены:

$ mount |grep gvfs
gvfsd-fuse on /run/user/pcm/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=pcm)

3

На Debian 6.0 хрипит, с lxde и наутилусом. Я нашел каталог ~ / .gvfs тоже пустым. Я пытался бежать

/usr/lib/gvfs/gvfs-fuse-daemon ~/.gvfs

Но он сказал мне: / dev / fuse: В доступе отказано.

$ ll /dev/fuse
crw-rw---T 1 root fuse 10, 229 Dec 21 11:59 /dev/fuse

Я подумал, что, может быть, это потому, что я не в группе предохранителей, а затем я добавил свою учетную запись в эту группу. После перезагрузки монтирование gvfs правильно отображается в ~ / .gvfs.


3

У меня похожая проблема с моей системой 12.04 Precise.

Диски, которые выглядят смонтированными в Nautilus, не появляются ~/.gvfs, особенно после цикла приостановки / возобновления. gvfs-fuse-daemonработает, но его уничтожение и перезапуск не решают проблему.

Я обнаружил, что перезапуск Наутилуса после nautilus -qпричин gvfs-fuse-daemonи Наутилус снова сотрудничают - точки подключения снова появляются.


3

В более новых версиях Ubuntu gvfs по умолчанию подключается /run/user/$USER/gvfs/.

Вы можете проверить, где находится точка монтирования по умолчанию, посмотрев строку вашего пользователя gvfsd-fuse в /etc/mtab.


2

Я задал соответствующий вопрос для моей системы Debian, и ответ был таков:

apt-get install gvfs-fuse
adduser <username> fuse

Затем перезагрузите компьютер. После монтирования GVFS (через Nautilus) каталог общего доступа будет находиться в одном из двух мест, в зависимости от того, какая у вас версия Debian или Ubuntu:

/run/user/<username>/gvfs
~/.gvfs

Я уверен, что вам не нужно перезагружаться. Я systemctl --user restart gvfs-daemonсделал свое дело для меня.
Торкель Бьёрнсон-Ланген

0

Когда я хочу получить доступ к файлам, к которым открыт общий доступ, с компьютера с Windows (не просматривая Nautilus), я подключаю общий ресурс к папке в моем домашнем каталоге.

Например. Там, если 192.168.16.2в домене mydomainесть машина Windows с IP-адресом, в которой есть общая папка, sharedи у меня есть каталог в моем домашнем каталоге mnt, я могу подключить общий ресурс mntи получить к нему доступ, как если бы он находился в моем домашнем каталоге с помощью:

sudo mount -t cifs "//192.168.16.2/shared" /home/stacey/mnt -o credentials=credentials,uid=stacey,gid=stacey

где учетные данные содержат:

username=stacey
password=mypassword
domain=mydomain

Теперь я могу использовать ls /home/stacey/mntдля перечисления файлов и каталогов в общей папке sharedна192.168.16.2 и доступе к любому файлу в этой точке подключения , как я бы файл на моем локальном жестком диске.

Вы можете получить больше информации о монтировании SMB-ресурсов с:

man mount.cifs

Не то, что спросил ОП.
энзотиб

2
Нет, но Кинан сказал: «Но я хочу получить доступ через командную строку, поэтому мне нужна точка монтирования в файловой системе», поэтому я просто пытаюсь помочь.
Стейси Ричардс

Спасибо. Я должен был упомянуть, что я рассмотрел это решение, но у него есть 2 основных недостатка, которые делают его недопустимым: 1) файл учетных данных должен содержать пароль в виде простого текста, что недопустимо на общей машине, 2) для него требуются права суперпользователя и мне нужно решение, которое также работает на машинах, где у меня нет sudo
kynan

0

Сейчас...

#!/bin/bash
# Add to Cron
# */1 * * * * /root/fixGvfs
w | grep -v root | tail -n +3 | awk '{print $1}' > /tmp/fixGvfsUsers
while read usuario
do
  id=$(id -u $usuario)
  if [ ! -f "/tmp/fixGvfs${id}" ]; then
    umount /run/user/${id}/gvfs
    if [ $? -eq 0 ]; then
      su - $usuario -c "/usr/bin/pkill gvfs*"
      touch "/tmp/fixGvfs${id}"
    fi
  fi
done < /tmp/fixGvfsUsers

3
Краткое объяснение того, что собирается делать этот скрипт, было бы неплохо. Когда должен выполняться cron-job?
mook765
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.