为什么umask 001没有设置执行权限?

时间:2013-10-29 22:02:46

标签: linux

我是Linux新手。我正在使用umask命令进行一些试验。我将umask设置为001,但是当我创建一个文件并显示一个长列表时,新文件不会显示允许执行权限。我想知道为什么?

Screenshot

3 个答案:

答案 0 :(得分:1)

Umask有点特别。一点意味着你实际上是在禁用权限。它的实现是:

(not umask) & filemode

文件模式是用户想要创建的内容。

所以你禁用了执行位:

001 -> complement -> 110 -> rw- 

您要尝试的掩码是110(位)或006(八进制):)

答案 1 :(得分:1)

umask告诉系统从creat()调用时给出的模式位掩码中删除哪些位。 umask通常表示为八进制数,每个数字由3位组成(r = 4,w = 2,x = 1)。三个八进制数字代表“用户”,“组”,“其他”。

如果creat使用666的模式rw-777的{​​{1}},则由程序决定。在这种情况下,显然使用了rwx。 (通常使用666创建一个文件,除非它应该是可执行文件。在这种情况下,使用666。这对于编译器来说就是重要的。)

非常常见的777umask(八进制)。它将022666)转换为rw-rw-rw-644)和rw-r--r--777)转换为rwxrwxrwx({{1}这些分别是最终应用于文件的文件模式。

您的umask 755只能关闭“其他”群组的rwxr-xr-x位。因此001将成为x777),而776将保持rwxrwxrw-666)。

答案 2 :(得分:0)

可能是系统管理员设置了一个umask异常,默认情况下不允许执行权限。有关更多信息,请参阅此文章: http://boulderapps.co/on-create-a-new-file-why-are-the-execute-permissions-not-set-to-my-umask