所以我的 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。
答案1
sshfs = FUSE,您正在以 root 身份安装,然后尝试使用其他用户进行访问。
开个玩笑/测试一下,你可以以普通用户身份sshfs,然后切换到root,cd,哦,权限被拒绝,root怎么会被拒绝,是root...
以您要访问的用户身份运行 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 身份安装,否则 root 不应用于 sshfs);
/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
由于只有本地文件系统授权的用户才被允许访问/编辑挂载中的文件,因此该选项比上一个选项更容易被接受。
还可以设置基于组的权限。