为什么umask 077 不允许用户执行文件/目录?

Jus*_* me 10 umask

我正在使用 umask 077 。“其他”和“组”没有任何权限,但用户无法执行文件/目录。为什么umask 077 不允许所有者执行文件/目录?

小智 6

当您使用umask077 时,只有用户具有读、写和执行权限。用户肯定能够打开('执行')目录(在我的回答中查看更多关于为什么目录必须是可执行的)。但是,必须始终通过输入使文件可执行chmod u+x myfile;它们永远不会自动执行。umask在这个答案中给出了一些更有用的信息:

您的问题的可能可能性是您输入的值可能略有错误,这导致了不同的 umask,或者该值没有被永久设置。如果您进入umask 077终端,它只会对终端的那个会话有效;要使其对您的用户永久有效,只需将其添加umask 077到您的~/.profile. 的系统默认设置为umaskin /etc/login.defs; 它曾经/etc/profile. 另请参阅 的联机帮助页pam_umask,这是一个处理umask.

以下示例来自成功的设置umask 077

1)对于文件夹创建mkdir doc检查stat doc给予正确的权限和“可执行”文件夹:

File: `doc'
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 801h/2049d  Inode: 6425268     Links: 2
Access: (0700/drwx------)  Uid: ( 1000/    mike)   Gid: ( 1000/    mike)
Access: 2012-09-12 11:33:01.236675420 +0100
Modify: 2012-09-12 11:33:01.236675420 +0100
Change: 2012-09-12 11:33:01.236675420 +0100
 Birth: -
Run Code Online (Sandbox Code Playgroud)

2)对于文件创建touch new检查stat new给了正确的权限;该文件仅在您使用时才可执行chmod +x

File: `new'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d  Inode: 6303902     Links: 1
Access: (0600/-rw-------)  Uid: ( 1000/    mike)   Gid: ( 1000/    mike)
Access: 2012-09-12 11:34:58.272676270 +0100
Modify: 2012-09-12 11:34:58.272676270 +0100
Change: 2012-09-12 11:34:58.272676270 +0100
Run Code Online (Sandbox Code Playgroud)

A umaskof 077 将提供显示的权限,但如果您在umask 077正确设置后仍然遇到权限问题(如上所述),我们可以进一步研究它。


pre*_*ise 6

所述的umask值将被用于适当地修改默认fmask文件权限(许可基地0666)和DMASK对于目录/文件夹的权限(许可基地0777)。

有效的fmaskdmask值将通过减去umask值来计算(八进制计算)。

因此,umask 0022 将导致fmask获得值0644(即 0666 - 0022),而dmask将是 0755(即 0777 - 0022)。

umask的0077防止文件被不仅世界(由最终的八进制数字表示),而且您的任何访问创建组成员(由倒数第二个八进制数字表示)。

参考: