我知道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 位未设置。