web-dev-qa-db-ja.com

sshfsマウント、Sudoは許可を拒否されます

私はsshfsを使用して、いくつかのpython projects with ssh over ~/ディレクトリ。

$ mkdir -p ~/mount/my-projects
$ sshfs [email protected]:/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
57
user369450

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

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

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

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

100
garethTheRed

sshfsはユーザーランドプロセスなので、Sudoで実行する必要はありません。

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

sshfsが使用できる~/.ssh/configファイルについても同様です。

次のような~/.ssh/configがある場合:

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

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

sshfs remotehost: local_dir

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

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:remotedirremotehost:/home/myuser/remotedirと同等です。

7
ccpizza

私の問題を解決したのは、allow_otherオプションを次のようにコマンドに追加します。

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

それからあなたはエラーを得るかもしれません:

オプションallow_otherは、/ etc/Fuse.confで 'user_allow_other'が設定されている場合にのみ許可され、お気に入りのテキストエディターで/etc/Fuse.confへの頭を解決し、コメントを外します(#を削除します)user_allow_other

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

$ usermod -a -G mark Fuse

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

$ Sudo groupadd mynewgroup
2