sshfsマウント、sudoが許可を拒否


53

sshfsいくつかのpythonプロジェクトを含むフォルダーをssh経由で~/ディレクトリにマウントするために使用しています。

$ mkdir -p ~/mount/my-projects
$ sshfs user@example.com:/home/user/my-projects ~/mount/my-projects

期待どおりにほとんどのコマンドを実行できます。

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

しかしsudo、で何かを行おうとすると、許可が拒否されて失敗します:

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

私が実際に達成しようとしているのは、ローカルマシンでpythonパッケージのインストールスクリプトをテストすることです。

$ cd ~/mount/my-projects/some-python-project
$ sudo python setup.py install

回答:


93

allow_othersshfs のオプションを使用する必要があると思います。これを行うには、次のようにsudoで呼び出す必要があります。

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

このオプションがないと、sshfsを実行したユーザーのみがマウントにアクセスできます。これはヒューズの制限です。を入力すると、詳細が表示されますman fuse

また、(少なくともUbuntuでは) 'fuse'グループのメンバーである必要があることに注意してください。そうしないと、上記のコマンドは/etc/fuse.conf'sudo'なしで実行した場合にアクセスできないと文句を言います。


2
良い最初の答え!
slm

13
allow_root許可するオプションも参照してくださいroot。ただし、にuser_allow_other行を追加しない限り、これらのオプションはデフォルトでルートに制限されていることに注意してください/etc/fuse.conf
ステファンシャゼル

7

sshfsはユーザーランドプロセスであるため、で実行する必要はありませんsudo

sudoとして実行し、SSHキー認証を使用する場合、キーはユーザーのの下/root/.sshはなく下で検索されます/home/myuser/.ssh

同じことが使用可能な~/.ssh/configファイルにも当てはまりますsshfs

あなたが~/.ssh/config好きなら:

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

次に、通常のユーザーとしてリモートホストをマウントできます。

sshfs remotehost: local_dir

ルートの下で実行-o IdentityFile /home/myuser/.ssh/id_rsaするには、「raw」sshfsコマンドに追加するか/root/.ssh/config、ユーザーのSSHキーへのフルパスで作成します。

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

これsshfs remotehost: local_dirで、ルートの下でも動作するようになります。

あなたと.ssh/config場所であなたは(リモートローカルに)とホスト間のフォルダ全体をコピーすることができますscp -r remotehost:remotedir localdirか(ローカル、リモートに)scp -r localdir remotehost:remotedirあなたも必要がないことがありますので、シングル1・オフ動作のために、sshfs

あなたはのように相対リモートパスを使用する場合はremotehost:remotedir、次にremotedirユーザーのホームフォルダからの相対になり、つまりはremotehost:remotedir同等ですremotehost:/home/myuser/remotedir


1

私にとって問題を解決したのはallow_other、次のようにコマンドにオプションを追加することでした:

$ sshfs -o allow_other user@example.com:/home/user/my-projects ~/mount/my-projects

次に、エラーが表示される場合があります。

オプションallow_otherは、「user_allow_other」が/etc/fuse.confで設定されている場合にのみ使用できます。これは、お気に入りのテキストエディターで/etc/fuse.confに移動し、コメントを外します(後ろの#を削除します) user_allow_other

これで問題が解決し、sshfs正常に実行できる場合は、すばらしい!そうでない場合は、次のコマンドでユーザーをfuseグループに追加してみてください。

$ usermod -a -G mark fuse

ヒューズグループが存在しないというエラーが発生した場合は、次の方法で簡単にグループを作成できます。

$ sudo groupadd mynewgroup
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.