Debian
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,也就是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
這個選項比上一個更容易接受,因為只有本地文件系統授權的使用者才能訪問/編輯掛載中的文件。
也可以設置基於組的權限。