SSHFSマウント内のスクリプトを実行するためにsudoをどのように使用しますか?

SSHFSマウント内のスクリプトを実行するためにsudoをどのように使用しますか?

私が見つけたすべての同様の質問のトピックであるSSHFSマウントポイントマウントについて尋ねることはありません。

私のマウントポイント(/path/to/sshfs/mount/)が正しくマウントされており、私のユーザーとして予想されるすべてのファイルを一覧表示、読み書きできます。

スクリプトをローカルディレクトリにコピーする権限があります。ただし、スクリプトにはライブラリファイルとリソースを含む複数のサブディレクトリが必要なため、ローカルにコピーするのではなく、スクリプトがある場所でスクリプトを実行することをお勧めします。しかもそうではない。必要意図したタスクを実行するためにローカルコンピュータにコピーされます。

残念ながら、SSHFSマウントの場合、スクリプトはシステムディレクトリにいくつかのファイルをインストールし、システムに存在するさまざまなユーザーのファイルを更新する必要があるため、多くのタスクを実行するにはroot権限が必要です。

これは私のせいです:

$ cd /path/to/sshfs/mount/
$ sudo ./myscript.sh
sudo: unable to execute ./myscript.sh: Permission denied

私が行ったチェックは次のとおりです。

$ ls -la
-rwxr-x--- 1 myuser team   8173 Dec 15 06:33 myscript.sh

$ sudo -i
[sudo] password for myuser:
#

$ cat /etc/fstab
myuser@myserver:/path/to/sshfs/mount/ /path/to/sshfs/mount/  fuse.sshfs x-systemd.automount,_netdev,user,follow_symlinks,identityfile=/path/to/.ssh/key_file,allow_other,default_permissions   0 2

これは、必須ヒューズ.confオプションが有効になっていることを示します。

$ cat /etc/fuse.conf
user_allow_other

実行できるSSHFS構成は次のとおりです。

$ sudo /path/to/sshfs/mount/myscript.sh

ベストアンサー1

mount コマンドは、exec次のnoexecマウントオプションをサポートします。

  • exec:バイナリファイルの実行を許可します。

  • noexec:マウントされたファイルシステムでバイナリファイルを直接実行することはできません。

インストールオプションを指定しなくてもインストールnoexecオプションを指定すると、インストールオプションが適用されますusers

  • ユーザー:他の一般ユーザーがファイルシステムをマウントしても、すべてのユーザーがファイルシステムをマウントおよびマウント解除できます。

ユーザーオプションは、noexec、nosuid、およびnodevオプションを意味します。(オプションラインusers、exec、dev、suidなどの後続のオプションに置き換えられない限り)

このコマンドはnoexec暗黙的に適用されていることを示します。

findmnt /path/to/sshfs/mount  
myuser@myserver:/path/to/sshfs/mount/ fuse.sshfs rw,nosuid,nodev,noexec,relatime,user_id=0,group_id=0,default_permissions,allow_other

したがって、この問題に対する解決策は簡単です。execマウントオプションを追加するだけです。

おすすめ記事