777権限を持つsshfsマウントディレクトリの所有者はそのディレクトリを開くことができません(ACLなし、SELinuxなし)。

777権限を持つsshfsマウントディレクトリの所有者はそのディレクトリを開くことができません(ACLなし、SELinuxなし)。

したがって、sshfsのインストールに権限の問題があります。

root@server01:/mnt# sshfs -o uid=$(id -u www-data) -o gid=$(id -g www-data) user@host:/path mountpoint
root@server01:/mnt# ls -Zlah
total 12K
drwxr-xr-x  3 root     root     ? 4.0K Nov 29 20:00 .
drwxr-xr-x 23 root         1001 ? 4.0K Nov 29 13:03 ..
drwxrwxrwx  1 www-data www-data ? 4.0K Nov 29 18:53 mountpoint
root@server01:/mnt# getfacl mountpoint/
# file: mountpoint/
# owner: www-data
# group: www-data
user::rwx
group::rwx
other::rwx
root@server01:/mnt# sudo -u www-data ls -lah
ls: cannot access mountpoint: Permission denied
total 8.0K
drwxr-xr-x  3 root root 4.0K Nov 29 20:00 .
drwxr-xr-x 23 root 1001 4.0K Nov 29 13:03 ..
d?????????  ? ?    ?       ?            ? mountpoint

おそらく問題はここにあります。

root@server01:/mnt# mount
# unrelated stuff skipped
user@host:/path/ on /mnt/mountpoint type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)

ここでは、マウントされたuidとgidの両方が0、つまりルートと呼ばれます。しかし、私のmountコマンドでlsをrootとして使用すると、すべてがwww-dataのgid / uid 33に属していることがわかります。

ベストアンサー1

sshfs = FUSE、rootとしてインストールしてから、他のユーザーを使用してアクセスしようとしています。

冗談/テストです。通常のユーザーとしてsshfsを実行してからroot、CDに切り替えることができます。ああ、権限が拒否されました。どのようにルートを拒否できますか?ルートです...

アクセスするユーザーとして sshfs を実行します。

更新された例:

**test**@mike-laptop4:/mnt$ sshfs [email protected]:/home/mike moo
test@mike-laptop4:/mnt$ ls moo/
src
mike@mike-laptop4:/mnt$ ls moo 
ls: cannot access 'moo': Permission denied
mike@mike-laptop4:/mnt$ sudo su
root@mike-laptop4:/mnt# ls moo 
ls: cannot access 'moo': Permission denied

その逆:

**mike**@mike-laptop4:/mnt$ sshfs [email protected]:/home/mike moo
mike@mike-laptop4:/mnt$ ls moo
src
test@mike-laptop4:/mnt$ ls moo
ls: cannot access 'moo': Permission denied
mike@mike-laptop4:/mnt$ sudo su
root@mike-laptop4:/mnt# ls moo
ls: cannot access 'moo': Permission denied

更新され拡張されたソリューション:

ソリューション1:データアクセスに必要なユーザーとしてインストールされます(セキュリティ設定)。

$ sshfs [email protected]:/home/mike moo

このオプションを使用すると、インストールしたユーザーのみがデータにアクセスできます。


次の2xソリューションに必要です(rootとしてインストールしない限り、sshfsにrootを使用しないでください)。

/etc/fuse.conf user_allow_other

ソリューション2:ボックス内のすべてのユーザーにアクセスを許可します。

$ sshfs -o allow_other [email protected]:/home/mike moo

文字通り、元のホストのすべてのユーザーがファイルを作成、編集、削除できます。これはほとんどの場合悪い考えであり、PCI環境ではイメージングを許可できません。

リモートのすべてのデータが危険にさらされるだけでなく、ローカルユーザーが後で他のローカルユーザーが使用できるデータを操作する危険もあります。

解決策3:マシンのすべてのユーザーを許可しますが、ローカルファイルシステムの権限を尊重します。

$ sshfs -o allow_other,default_permissions [email protected]:/home/mike moo

ローカルファイルシステムで承認されたユーザーのみがマウント内のファイルにアクセス/編集できるため、このオプションは以前のオプションよりも適しています。

グループベースの権限も設定できます。

おすすめ記事