Как найдено вокруг сети или здесь, я могу использовать Альфонса, чтобы смонтировать долю Windows и даже получить доступ к ней через терминал, через ~/.gvfs/share on server/
каталог, такой как:
ls ~/.gvfs/share\ on\ server/
К сожалению, когда я пытаюсь получить доступ к тому же каталогу от команды через sudo
, например.
sudo ls ~/.gvfs/share\ on\ server/
который перестал работать с:
ls: cannot access /home/user/.gvfs/share\ on\ server/: Permission denied
Любые предложения о том, как добраться sudo
доступ к существующим смонтированным Альфонсами долям? Или, как выполнить Альфонса для получения sudo
доступ к долям?
Gigolo - это фронтенд к gvfs
. gvfs
использует FUSE (Filesystem in Userspace) для монтирования сетевых устройств (например, общих папок Windows). Такие точки монтирования обычно не могут быть прочитаны другими пользователями, кроме пользователя, который их монтировал, даже с помощью root
. Почему? Карл Ауэр предлагает здесь, что причина в том, что
То, что у вас есть root доступ на одной системе, не означает, что вы должны иметь доступ к файлам, к которым у других людей есть доступ. системы. Я уверен, что именно поэтому директорией .gvfs управляет То есть, если вы являетесь пользователем A на машине X и монтируете какую-то директорию с машины Y (где у вас также есть логин) в какое-то место на машине X, то
root
на машине X не сможет это прочитать, потому чтоroot
на машине X обычно вообще не имеет никакого доступа к машине Y.Помня об этом, если вы хотите разрешить
root
доступ к вашей~/.gvfs
директории, вы можете действовать следующим образом.1) Отредактируйте файл
/etc/fuse.conf
и прокомментируйте строку, которая читает#user_allow_other
. Позже это позволит вашему пользователю запустить демон gvfs-fuse с опциейallow_root
, что вам и нужно. Следующая команда делает это быстро за вас:$ sudo sed -i -e 's/#user_allow_other/user_allow_other/' /etc/fuse.conf
2) Добавьте своего пользователя в группу
fuse
, чтобы вы могли прочитать файл/etc/fuse.conf
. В противном случае изменение на предыдущем шаге не будет иметь никакого эффекта.$ sudo addgroup USERNAME fuse $ newgrp fuse
Замените, конечно же,
USERNAME
своим именем пользователя. Командаnewgrp
избавляет от необходимости выходить из системы и возвращаться обратно, чтобы изменение группы вступило в силу. Убедитесь, что он работает, отправив команду:
$ groups
и убедитесь, что предохранитель
fuse
указан среди групп, к которым принадлежит ваш пользователь. Если он не работает, выйдите из системы и снова войдите в нее. В любом случае, ваш пользователь должен иметь возможность прочитать/etc/fuse.conf
, прежде чем вы перейдете к следующему шагу.3) Теперь вы можете перезапустить демона gvfs-fuse с помощью опции
allow_root
. Сначала размонтируйте ваш каталог~/.gvfs
:$ fusermount -zu $HOME/.gvfs
Далее, чтобы перезапустить демона, выполните следующие команды на Ubuntu 13.10:
$ killall gvfsd-fuse $ /usr/lib/gvfs/gvfsd-fuse -o allow_root $HOME/.gvfs
В более старых версиях Ubuntu вместо них могут быть:
$ killall gvfs-fuse-daemon $ /usr/lib/gvfs/gvfs-fuse-daemon -o allow_root $HOME/.gvfs
4) Перезагрузите Gigolo и снова смонтируйте ваш общий ресурс Windows.
root
теперь должен быть в состоянии прочитать ваш~/.gvfs
каталог.Вот так!
Чтобы эти изменения стали постоянными:
Чтобы эти изменения стали постоянными, вы можете записать три команды из шага 3 в небольшой скрипт, который вы автозапускаете во время входа в систему. Может быть, есть более чистые способы сделать это, но это должно сработать. Ваш скрипт будет содержать что-то вроде:
!#/bin/bash fusermount -zu $HOME/.gvfs killall gvfsd-fuse /usr/lib/gvfs/gvfsd-fuse -o allow_root $HOME/.gvfs
Запишите это в файл и сделайте его исполняемым:
chmod 755 /path/to/the/file
Теперь этот скрипт должен автоматически выполняться во время входа в систему. Чтобы узнать, как автоматически запускать приложения, обратитесь к Как автоматически запускать приложения при входе в систему?.
Дополнительную информацию по этому вопросу можно найти здесь: https://lists.ubuntu.com/archives/ubuntu-users/2008-November/165644.html
18.04 у меня было аналогичное требование, когда я хотел разрешить root доступ к телефону Android, установленному в gvfs
, для резервного копирования файлов. Я подумал, что стоит задокументировать, что я сделал для людей, ищущих решение в Google. Необходимые шаги были взяты из ответа @Malte Skoruppas
и изменены для 18.04.
18.04 точка монтирования gvfs находится по адресу / run / user / $ UID / gvfs
, а не ] $ HOME / .gvfs
. В моем случае UID = 1000.
После входа в систему ситуация такова:
gvfsd-fuse
работает:
$ pgrep gvfsd-fuse -l
1856 gvfsd-fuse
Монтирование существует:
$ mount | grep gvfs
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
И root не имеет разрешения на чтение каталога
# ls /run/user/1000/gvfs
ls: cannot access '/run/user/1000/gvfs': Permission denied
Обычный пользователь имеет права на чтение для /etc/fuse.conf
, поэтому нам не нужно создавать группу fuse и добавлять в нее нашего пользователя.
$ grep allow /etc/fuse.conf
# Set the maximum number of FUSE mounts allowed to non-root users.
# Allow non-root users to specify the allow_other or allow_root mount options.
user_allow_other
Чтобы предоставить root
доступ, я сделал следующее:
$ fusermount -zu /var/run/user/1000/gvfs/
$ pkill gvfsd-fuse
$ /usr/lib/gvfs/gvfsd-fuse -o allow_root /var/run/user/1000/gvfs/
$ mount | grep gvfs
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000,allow_other)
После этого root может получить доступ к каталогу.
Я не знаю, почему mount показывает allow_other
, а не ] allow_root
. Если я запустил gvfsd-fuse
с -o allow_other
, поведение будет таким же.