通过 ssh/sshfs 与在计算机本身(同一用户)上创建文件时,修改后的掩码/有效不适用

通过 ssh/sshfs 与在计算机本身(同一用户)上创建文件时,修改后的掩码/有效不适用

我设置了类似的掩码setfacl -R -d -m m::rw .,它在本地机器上运行良好(我现在已经通过 ssh 连接了,它是无头的)。我可以让两个用户修改和读取目录。但是当我使用sshfs访问其中一个用户修改目录时,有效设置不是rw-,而是设置为r--。如果我手动 ssh 进入计算机并使用 sudo 作为用户创建文件,则不会发生这种情况。不过,我可以使用 sshfs 创建目录并且它可以工作。

答案1

我想出了一个暂时使用 inotify 的有点 hacky 的解决方案。

我编写了一个 shell 脚本,使用inotifywaitfrominotify-tools等待创建文件,然后当创建文件时,它将运行我的setfacl命令来设置共享目录,然后找到共享目录中的每个子目录并将其标记为可执行文件(我只希望目录可执行,如果需要,您可以排除该部分。)

这是脚本:

#!/bin/sh
while inotifywait -qqre create /share; do
    setfacl -R -m u:user2:rw /share
    for dir in $(tree /share); do
        setfacl -m u:user2rwx ${dir}
        setfacl -m u:user1:rwx ${dir}
    done
done

user2是通过 sshfs 访问共享的用户。

需要inotify-toolstree.你可能可以用find而不是做一些事情,tree但我想tree会更容易。

我可以向chmod +x文件添加对外部命令的支持(我无法像其他用户一样将文件标记为可执行)并记录想要标记为可执行的文件并重新添加可执行位。

我还没有在生产环境中进行彻底的测试(看看如果文件更改权限/权限时无法打开程序的行为方式),但从我所看到的来看它工作得很好。

我认为问题可能是它从我当前的系统获取掩码规则,但我不能 100% 确定。我无法以 root 或普通用户身份从远程系统更改 sshfs 目录的 acl,因此我无法从远程系统更改掩码权限。

相关内容