设置 sshfs 挂载的 umask

mas*_*ini 5 file-permissions umask sshfs

如果我在没有 umask 的情况下安装 sshfs 服务器,我会得到-rw-rw-r--新创建的文件。如果我尝试在浏览器上打开服务器上的 php 文件,则会收到以下错误:

Incorrect file/directory permissions: Above 755.
In order files to be processed by the webserver, their permissions have to be equal or below 755. 
Run Code Online (Sandbox Code Playgroud)

所以我尝试了umask=0022:新创建的文件有-rwxr-xr-x. 这些权限很好,因为上面的错误不再出现。但是,我不明白为什么新文件被设置为可执行文件......

您能解释一下吗?非常感谢...

Ale*_*idt 6

来自sshfs手册:

   -o umask=M
          set file permissions (octal)
Run Code Online (Sandbox Code Playgroud)

请注意,手册提到选项名称是umask。因此,它与您在 中使用的值不同chmod,其中7表示rwx(二进制111)。相反,正如其名称所示,umask它是一个mask

对于fuse,此掩码用作所需权限的反转。

然后,从http://wiki.gilug.org/index.php/How_to_mount_SFTP_accesses#General_working_of_umask,我们得到以下内容:

[umask i]模板掩码。与 chmod 相反,因为用于遮蔽创建文件和目录时要设置的权限。八进制值越高,限制越多(在二进制级别,位 1 遮蔽属性,位 0 允许属性)。

0 allows rwX
1 allows rw-
2 allows r-X
3 allows r--
4 allows -wX
5 allows -w-
6 allows --X
7 allows ---
Run Code Online (Sandbox Code Playgroud)

因此,如果您提供0022,则权限将如下所示:

  1. AND with 0777(参见umask手册页)仅考虑“用户”、“组”和“其他”权限(即丢弃掩码的第一部分)。

000 000 010 010 -> 0022

AND

000 111 111 111 -> 0777

=

000 000 010 010 -> 0022

  1. 颠倒三个权限。

000 010 010 -> 022

变成

111 101 101 -> 755

如果您不希望文件可执行,但希望它们可读可写(chmod 666),则应设置umask为:

110 110 110 = 666 <- chmod value
001 001 001 = 111 <- umask value
Run Code Online (Sandbox Code Playgroud)

  • 如果设置不可执行的 umask 位,则无法列出目录。 (2认同)