Debian

777權限的sshfs掛載目錄的所有者無法打開它(沒有ACL,沒有SELinux)

  • November 30, 2016

所以我的 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,也就是root。但是在我的 mount 命令和使用 ls 作為 root 時,它告訴我一切都屬於 gid/uid 33,即 www-data。

sshfs = FUSE,您以 root 身份安裝,然後嘗試使用其他使用者訪問。

開個玩笑/測試,你可以sshfs作為普通使用者,然後切換到root,cd,哦,權限被拒絕,如何拒絕root,它是root…

以您要訪問的使用者身份執行 sshfs。

更新範例:

**test**@mike-laptop4:/mnt$ sshfs mike@192.0.2.0:/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 mike@192.0.2.0:/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 mike@192.0.2.0:/home/mike moo

使用此選項將只允許安裝使用者訪問數據。


以下 2x 解決方案需要(除非以 root 身份安裝,否則不應將 root 用於 sshfs);

/etc/fuse.conf user_allow_other

解決方案 2:允許框上的任何使用者訪問

$ sshfs -o allow_other mike@192.0.2.0:/home/mike moo

從字面上看,源主機上的任何使用者都可以創建、編輯、刪除文件,這在大多數情況下都是一個糟糕的主意,而且我無法在 PCI 環境中進行映像。

您不僅冒著遠端訪問所有數據的風險,而且冒著本地使用者操作數據的風險,這些數據稍後可以被另一個本地使用者使用。

解決方案 3:允許機器上的任何使用者,但尊重本地文件系統權限。

$ sshfs -o allow_other,default_permissions mike@192.0.2.0:/home/mike moo

這個選項比上一個更容易接受,因為只有本地文件系統授權的使用者才能訪問/編輯掛載中的文件。

也可以設置基於組的權限。

引用自:https://unix.stackexchange.com/questions/326883