2

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

截屏

4

3 回答 3

1

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

(not umask) & filemode

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

所以你禁用了执行位:

001 -> complement -> 110 -> rw- 

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

于 2013-10-29T22:08:27.037 回答
1

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

是否使用for或forcreat模式调用取决于程序。在这种情况下,显然是使用的。(通常创建一个文件,除非它应该是可执行的。在这种情况下,使用。这对编译器来说很重要。)666rw-777rwx666666777

一个很常见umask的是022(八进制)。它将666( rw-rw-rw-) 变成644( rw-r--r--) 和777( rwxrwxrwx) 变成755( rwxr-xr-x) 这些分别是最终应用于文件的文件模式。

您的 umask001只会关闭x“其他”组的一部分。因此777将变为776( rwxrwxrw-),并666保持666( rw-rw-rw-)。

于 2013-10-29T22:13:37.330 回答
0

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

于 2014-06-09T00:25:33.343 回答