当我在Linux上运行umask时,0022中的第一个数字有何意义?

当我在Linux上运行umask时,0022中的第一个数字有何意义?

我知道0022和022在指代方面没有区别关联。我有文件 1.c,权限为 0066。但是当我将文件 1.c 的模式更改为 1066,然后当我使用 ls -l 检查文件的权限时,它会影响权限。每次不同的权限位都会随着第一个数字的变化而变化。它实际上意味着什么?

[vm4 ~]# ls -l 1.c
----rw-rw- 1 root root 10 Dec 23 22:48 1.c
[vm4 ~]# chmod 1066 1.c
[vm4 ~]# ls -l 1.c
----rw-rwT 1 root root 10 Dec 23 22:48 1.c
[vm4 ~]# chmod 2066 1.c
[vm4 ~]# ls -l 1.c
----rwSrw- 1 root root 10 Dec 23 22:48 1.c
[vm4 ~]# chmod 5066 1.c
[vm4 ~]# ls -l 1.c
---Srw-rwT 1 root root 10 Dec 23 22:48 1.c

答案1

是的,0022 和 022 之间是有区别的。对于 umask 来说不是,但是对于 chmod 来说是有区别的。

每个用户、组和其他人的权限由三个字母描述。
这通常rwxrwxrwx(或-需要时)在ls输出中:

$ touch 1.c
$ ls 1.c
-rw-r--r-- 1 user user 0 Feb 13 09:01 1.c

其中每个设置的位都用字母表示,未设置的位用 表示-

因此:
rwx 表示 111,对于八进制数 7 来说是二进制。
rw- 表示 110,对于八进制数 6 来说是二进制。
r-- 表示 100,对于八进制数 4 来说是二进制。

但除了基本的 rwx 之外,还有一些其他字母代表要设置的附加权限。这些权限也是 3 位,写成四位八进制数,表示如下:

对于文件:

0644  ==>  rw-r--r--
1644  ==>  rw-r--r-T           # sticky bit (ignored in linux)

0644  ==>  rw-r--r--
2644  ==>  rw-r-Sr--           # Group ID does not match. 
0655  ==>  rw-r-xr-x
2644  ==>  rw-r-sr-x           # Run with group ID: SGID

0644  ==>  rw-r--r--
2644  ==>  rwSr--r--           # User  ID does not match. 
0755  ==>  rwxr-xr-x
2744  ==>  rwsr-xr-x           # Run with User ID: SUID

完整权限(7):

$ chmod 7777 1.c; ls -l 1.c
-rwsrwsrwt 1 user user 0 Feb 13 09:01 1.c

对于目录:

SGID means that new files inside this dir will inherit group owner.
SUID Mostly ignored in Linux and Unix. BSD varies.
Sticky Protect files inside from being modified by a different user.

链接:
-粘性位
在 Linux 中:Linux 内核忽略文件上的粘滞位。
当在目录上设置粘滞位时,该目录中的文件只能由 root 或目录所有者或文件所有者取消链接或重命名。
-设置UID和设置GID
-目录以及设置用户 ID 和设置组 ID 位 -系统管理指南:安全服务

答案2

额外的位是set-user-ID位、set-group-ID位和粘性位。请参阅man 2 chmod获取更多信息。该位的 Sset-user-ID显示为大写 S,因为相应的 x 位未设置。

相关内容