【译】Sticky Bits, UID's and GID's

译自: Sticky Bits, UID's and GID's

 

Sticky Bits, UID's and GID's

文件权限中的特殊设置-如何理解和管理它们

Understanding File Permissions
How do I use chmod to manage file permissions?
Sticky Bits, UID's and GID's

概述

您可以使用3位数字表示任何文件许可权值,或使用chmod对其进行管理。 但是,实际上,您可以使用4位数字来达到相同的结果,例如777等于0777,依此类推。 这个附加的八进制值代表一些特殊功能,称为“粘滞位”,“ UID” 和 “GID”。

了解特殊的八进制值

在常规文件权限内,未设置特殊选项。 范围从0到7的八进制值表示用于读取,写入和执行文件等的选项。 但是,如上所述,当使用此附加八进制时,值(仍在0-7范围内)表示以下选项:

特殊选项八进制分解备忘单

0 - No options set
1 - Sticky Bit set
2 - SGID set
3 - Sticky Bit and SGID Set
4 - SUID set
5 - Sticky Bit and SUID Set
6 - SGID and SUID set
7 - Sticky Bit GID and UID Set

其分别代表的8进制数值为:

SUID:4

SGID:2

Sticky Bit: 1

什么是粘性位?

粘滞位是文件权限中的一种特殊设置,有助于限制访问权限,超出普通文件权限所能提供的范围。 简而言之,粘滞位可确保只有文件/目录的所有者才能删除或重命名文件。 但是,应注意,root用户也可以编辑和删除文件。

如何设置粘性位

在很大程度上,使用chmod时,设置“粘滞位”就像任何普通文件权限一样。 例如,通常,如果您想将文件设置为777权限,则可以执行以下操作。

通常更改权限

$ chmod 777 myfile.txt

Confirming the change using ls -l
$ ls -al

output being:
-rwxrwxrwx 1 root root 4096 Sep 24 2016 myfile.txt

为了使用粘滞位将文件更改为具有777的相同权限,可以使用八进制1777,如下所示:

粘滞位更改权限

$ chmod 1777 myfile.txt

Confirming the change using ls -l
$ ls -al

output being:
-rwxrwxrwxt 1 root root 4096 Sep 24 2016 myfile.txt

注意不同之处,其中777的常规文件许可权的符号值为“ -rwxrwxrwx”,而带有“粘滞位”的则为“ -rwxrwxrwxt”。 粘滞位在其符号值的末尾附加了“ t”。 该字母“ t”表示已设置“粘性位”。

检测粘滞位

运行ls -l 命令查看文件权限

$ ls –l
-rwxrwxrwxt 1 root root 4096 Sep 24 2013 your_file.txt
drwxrwxrwxt 1 root root 4096 Sep 24 2013 your_directory

请注意输出,对于文件和目录,其文件许可权的符号值分别为 -rwxrwxrwxt 和 drwxrwxrwxt。 如上所述,权限符号值上的附加字母 “t” 表示已设置“粘滞位”。

什么是SGID(SETGUID)-什么是SUID(SETUID)

在某些情况下,用户需要执行或操作文件或程序,因此需要提升的特权。 在这种情况下,可以设置SUID或SGID,以提供执行所需的权限。 SETUID或SETGID二进制文件分别在有关文档中执行命令的同时执行。 通常,在用户需要提升的权限并且没有管理员或root用户访问权限的情况下,需要SUID或SGID

设置和检测SGID

$ chmod 2777 myfile.txt

Confirming the change using ls -l
$ ls -al

output being:
-rwxrwsrwx 1 root root 4096 Sep 24 2016 myfile.txt
# chmod 2777 changes myfile.txt to permissions 777 with an SGID

请注意,符号许可权值为 -rwxrwsrwx,第二个三元组 “rws” 从该名称后附加一个 “s” 而不是一个 “x”。 字母 “s” 表示已为相关文件或目录设置了SGID。

设置和检测SUID

$ chmod 4777 myfile.txt

Confirming the change using ls -l
$ ls -al

output being:
-rwsrwxrwx 1 root root 4096 Sep 24 2016 myfile.txt
# chmod 4777 changes myfile.txt to permissions 777 with an SUID

请注意,符号许可权值为 -rwsrwxrwx,在第一个三元组 “rws” 的后面附加了 “s” 而不是 “x”。 该字母 “s” 表示已为所讨论的文件或目录设置了SUID。

为什么有大写字母?

在某些文件权限内,在某些情况下,您可能会看到大写字母“ S”或“ T”代替普通的小写字母。 以下是这些情况,参考文献及其含义的细分:

-属主权限三元组大写

例如,许可4236在其符号值 "--wS-wxrw-" 内包含一个大写 "S" 。 这表示已设置 SUID,但是属主没有执行权限。

- 属组权限三元组大写 S

例如,许可2767在其符号值 "-rwxrwSrwx" 内包含一个大写 "S"。 这表示已设置了 SGID,但是属组没有执行权限。

- 大写 T

大写字母 表示已设置 "粘滞位",但是其他组没有执行权限。 有关示例,请参见许可权1774,其符号值为 "-rwxrwxr-"。

上一篇:20201224 字符串常用操作


下一篇:31. 为创建大量实例节省内存