sshfs mount, sudo odmawia zgody

53

Używam sshfsdo montowania folderu z niektórymi projektami Pythona przez ssh do mojego ~/katalogu.

$ mkdir -p ~/mount/my-projects
$ sshfs [email protected]:/home/user/my-projects ~/mount/my-projects

Mogę wykonać większość poleceń, jakich można się było spodziewać:

$ ls ~/mount/my-projects
some-python-project

Ale jeśli spróbuję cokolwiek zrobić sudo, nie powiedzie się to z odmową zgody:

$ sudo ls ~/mount/my-projects
ls: cannot access /home/user/mount/my-projects: Permission denied

To, co faktycznie próbuję osiągnąć, to przetestowanie skryptu instalacyjnego pakietu python na moim komputerze lokalnym:

$ cd ~/mount/my-projects/some-python-project
$ sudo python setup.py install
użytkownik369450
źródło

Odpowiedzi:

93

Uważam, że musisz użyć allow_otheropcji sshfs. Aby to zrobić, powinieneś to nazwać sudo w następujący sposób:

sudo sshfs -o allow_other user@myserver:/home/user/myprojects ~/mount/myprojects

Bez tej opcji tylko użytkownik, który uruchomił sshfs, może uzyskać dostęp do montowania. Jest to ograniczenie dotyczące bezpieczników. Więcej informacji można uzyskać, pisząc man fuse.

Powinieneś również zauważyć, że (przynajmniej na Ubuntu) musisz należeć do grupy „bezpieczników”, w przeciwnym razie powyższe polecenie będzie narzekać na brak dostępu, /etc/fuse.confgdy zostanie uruchomiony bez „sudo”.

garethTheRed
źródło
2
Dobra pierwsza odpowiedź!
slm
13
Zobacz także allow_rootopcję zezwalania roottylko. Pamiętaj jednak, że te opcje są domyślnie ograniczone do rootowania, chyba że dodasz user_allow_otherlinię do /etc/fuse.conf.
Stéphane Chazelas,
7

sshfsto proces użytkownika, więc nie trzeba go uruchamiać sudo.

Jeśli uruchomisz go jako sudo i użyjesz uwierzytelnienia klucza SSH, klucz zostanie przeszukany pod, /root/.ssha nie pod użytkownikiem /home/myuser/.ssh.

To samo dotyczy ~/.ssh/configpliku, którego sshfsmożna użyć.

Jeśli masz coś ~/.ssh/configtakiego:

Host remotehost
    HostName 111.22.33.44
    User root
    Port 1234
    IdentityFile ~/.ssh/id_rsa

wtedy możesz zamontować swojego zdalnego hosta jako zwykły użytkownik za pomocą:

sshfs remotehost: local_dir

Aby uruchomić pod rootem, możesz dołączyć -o IdentityFile /home/myuser/.ssh/id_rsado polecenia „raw” sshfslub utworzyć /root/.ssh/configpełną ścieżkę do klucza SSH użytkownika:

Host remotehost
    HostName 111.22.33.44
    User root
    Port 1234
    IdentityFile /home/myuser/.ssh/id_rsa

Teraz sshfs remotehost: local_dirbędzie również działał pod rootem.

Za pomocą swojego .ssh/configmiejsca możesz kopiować całe foldery między hostami za pomocą (zdalnie na lokalnie) scp -r remotehost:remotedir localdirlub (lokalnie na zdalnie) scp -r localdir remotehost:remotedir, więc w przypadku jednorazowej operacji możesz nawet nie potrzebować sshfs.

W przypadku korzystania z pilota zdalnego względną ścieżkę jak w remotehost:remotedirczym remotedirbędzie względna do katalogu domowego użytkownika, czyli remotehost:remotedirjest równoważnyremotehost:/home/myuser/remotedir

ccpizza
źródło
1

Tym, co rozwiązało problem, było dodanie allow_otheropcji do polecenia w następujący sposób:

$ sshfs -o allow_other [email protected]:/home/user/my-projects ~/mount/my-projects

wtedy możesz otrzymać błąd:

opcja allow_other dozwolona tylko wtedy, gdy w pliku /etc/fuse.conf ustawiono opcję „user_allow_other”, aby rozwiązać tę kwestię w pliku /etc/fuse.conf za pomocą ulubionego edytora tekstu i odkomentować (usuń # z tyłu) user_allow_other

Jeśli to rozwiązało problem i udało Ci się uruchomić sshfs, świetnie! Jeśli nie, spróbuj dodać użytkownika do grupy bezpieczników za pomocą tego polecenia:

$ usermod -a -G mark fuse

a jeśli spowoduje to błąd informujący, że grupa bezpieczników nie istnieje, możesz łatwo utworzyć tę grupę poprzez:

$ sudo groupadd mynewgroup
Khashayar Motarjemi
źródło