我可以远程访问服务器。我将其设置umask
为 0007。我将我的服务器名称称为“sme”,将我的本地名称称为“lme”。所以我做了以下事情:
sme@server$ touch f1
sme@server$ ls -l f1
-rw-rw---- 1 sme 0 Jun 16 18:46 f1
现在我转到本地计算机:
lme@local$ umask
0007
lme@local$ mkdir server
lme@local$ sshfs sme@server /home/sme /server/ -o umask=0000
lme@local$ touch server/f2
lme@local$ ls -l server/f2
-rwxrwxrwx 1 lme 1001 0B Jun 16 18:48 server/f2
首先,我注意到本地的任何用户都拥有 f2 的完全权限。为什么?我将umask
其他用户的权限设置为 7,因此他们的文件权限应为 0。
在服务器端检查:
sme@server$ ls f2
-rw-r----- 1 sme 0 Jun 16 18:48 f2
当我登录服务器时,我没有设置执行权限。我的服务器组无法写入该文件。此外,该文件的所有者不是本地用户“lme”,而是服务器用户“sme”。然后,我sshfs
在检查后尝试指定服务器用户的 uid 和 gid :
# Get server user's id and group id
sme@server$ id
uid=1059(sme) gid=1001(server-group) groups=1001(server-group)
# Remount the server's root
lme@local$ umount server/
lme@local$ sshfs sme@server /home/sme /server/ -o umask=0000 -o uid=1059 -o gid=1001
lme@local$ touch server/f3
lme@local$ ls -l server/f3
-rwxrwxrwx 1 lme 1001 0B Jun 16 18:50 server/f3
但:
sme@server$ ls -l
-rw-r----- 1 sme 0 Jun 16 18:50 f3
指定uid
和gid
tosshfs
不会更改有关文件权限的任何内容。另外,组所有者在服务器上为 0,而从本地挂载点列出时为 1001。矛盾的是,我的本地用户看到为我的服务器用户创建的所有文件设置的每个文件权限。
但是我可以看到,首先检查从本地到服务器创建的文件,所有者的名称发生变化:从本地检查已安装的文件夹,本地用户“lme”是文件所有者,但从服务器检查,用户“sme”拥有所有权。其次,本地的组权限设置并不遵循服务器端。服务器组没有写权限。第三,传入参数的掩码与sshfs
本地用户的掩码和服务器用户的掩码都不匹配。
我希望我的服务器的用户和组能够访问本地用户创建的任何文件和文件夹。我想知道如何做到这一点,最重要的是任何解释和/或文档解释如何umask
与sshfs
.到目前为止,我发现的小文档(其他论坛帖子)比其他任何内容都更令人困惑。