Как получить доступ sudo к акциям, смонтированным Gigolo
Как можно найти в Интернете или здесь, я могу использовать Gigolo для монтирования общего ресурса 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
доступ к существующим установленным на Gigolo ресурсам? Или как запустить Жиголо, чтобы получить sudo
доступ к акциям?
2 ответа
Жиголо это фронтенд gvfs
, gvfs
использует FUSE (Файловая система в 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
для того, чтобы сделать резервную копию файлов. Я подумал, что стоит задокументировать, что я сделал для людей, которые ищут решение. Необходимые шаги были взяты из @Malte Skoruppas
ответ и изменен на 18.04.
18 апреля точка монтирования 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
поэтому нам не нужно создавать группу предохранителей и добавлять в нее нашего пользователя.
$ 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)
После этого рут может получить доступ к директории.
Я не знаю почему маунт показывает allow_other
скорее, чем allow_root
, Если я бегу gvfsd-fuse
с -o allow_other
поведение такое же.