Как получить sudo доступ к долям, смонтированным Альфонсом

Как найдено вокруг сети или здесь, я могу использовать Альфонса, чтобы смонтировать долю 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 доступ к долям?

0
задан 18 July 2018 в 11:29

2 ответа

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

6
ответ дан 18 July 2018 в 11:29

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 , поведение будет таким же.

1
ответ дан 18 July 2018 в 11:29

Другие вопросы по тегам:

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