我是 Linux 新手。我一直在练习一些命令。我的问题是关于何时使用不同的 umask 创建不同的文件。例如:
umask 222,据我所知,与 777 - 222 = 555 相同,所以当我创建一个新文件(称之为“newfile”)时,那么newfile的权限应该是r-xr-x-r-x(或者我错了?)
无论如何:“newfile”是使用r--r--r--权限创建的。
我的umask价值/etc/profile是:
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
Run Code Online (Sandbox Code Playgroud)
我的 uid 是 1002。
注意:只是为了记录,我已经阅读了所有 umask 问题和文档man,但我还不能理解。
Mik*_*kel 13
大多数程序创建的文件没有设置执行位 ( 0666== -rw-rw-rw-)。执行位几乎只能由编译器在安装可执行文件期间或由用户手动设置。
然后应用 umask,以确定实际权限。
create 0666 rw-rw-rw-
umask 0222 r-xr-xr-x
effective 0444 r--r--r--
Run Code Online (Sandbox Code Playgroud)
请注意,它实际上不是减法,而是补码的按位与。
所以它需要0777- 0222= 0555,并且
OCTAL BINARY HUMAN-READABLE
0666 0110110110 -rw-rw-rw-
& 0555 0101101101 -r-xr-xr-x
0444 0100100100 -r--r--r--
Run Code Online (Sandbox Code Playgroud)
另请参阅无法解释 ACL 行为
Wiki 对umask有很好的描述。0 位表示创建过程指定的任何内容都会经过,而 1 表示不会发生。
所以“222”意味着忽略用户、组和其他人的写入权限,但保留读取和执行位。
在您的示例中,无论创建的 newfile 都没有设置执行位(通常当您创建新文件时,您不会使其可执行),这就是为什么您得到的r--r--r--不是r-xr-xr-x.
| 归档时间: |
|
| 查看次数: |
4501 次 |
| 最近记录: |