具有 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,也就是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

由于只有本地文件系统授权的用户才被允许访问/编辑挂载中的文件,因此该选项比上一个选项更容易被接受。

还可以设置基于组的权限。

相关内容