更多: zhilu jiaocheng

设置组标识 (SGID)

可执行文件的SGID权限

SGID 权限与 SUID 权限类似,唯一不同的是,当运行 SGID 的脚本或者命令时,它的运行就像文件所属组的成员一样。

# ls -l /usr/bin/write
-r-xr-sr-x  1   root tty 11484 Jan 15 17:55 /usr/bin/write

setgid 权限在组的执行字段中显示为“s”。

注意:- 如果组的执行字段中出现小写字母“l”,则表示 setgid 位打开,并且组的执行位关闭或者拒绝。

如何在文件上设置 GUID?

# chmod 2555 [path_to_file]

目录上的 SGID

对目录设置 SGID 权限后,在该目录中创建的文件属于该目录所属的组。

例如,如果在目录中具有写权限的用户在那里创建了一个文件,则该文件与该目录属于同一组,而不是该用户所在的组。

这在创建共享目录时非常有用。

如何在目录上设置 SGID

# chmod g+s [path_to_directory]
在Linux中什么是 SUID、SGID 和粘滞位?

在Linux中,有 3 种特殊权限可用于可执行文件和目录。

它们是:

  1. SUID权限
  2. SGID权限
  3. 粘滞位

设置用户标识 (SUID)

你有没有想过,一个非root用户在没有/etc/shadow文件的写权限的情况下,如何修改自己的密码。
嗯...有趣不是吗?
很好理解检查 /usr/bin/passwd 命令权限的技巧:

# ls -lrt /usr/bin/passwd
-r-sr-sr-x   1 root     sys        31396 Jan 20  2014 /usr/bin/passwd

如果我们仔细检查,我们会在权限字段中找到 2 个 S。
第一个 s 代表 SUID,第二个代表 SGID。

当设置了 SUID 位的命令或者脚本运行时,其有效 UID 成为文件所有者的 UID,而不是运行它的用户的 UID。

SUID 的另一个很好的例子是 su 命令:

# ls -l /bin/su 
-rwsr-xr-x-x 1 root user  16384 Jan 12 2014 /bin/su

setuid 权限在所有者的执行字段中显示为“s”。

如何在文件上设置 SUID?

# chmod 4555 [path_to_file]

说明 :
如果所有者的执行字段中出现大写的“S”,则表示 setuid 位打开,文件所有者的执行位“x”关闭或者被拒绝。

粘滞位

Linux中粘滞位的作用是什么?

粘滞位主要用于共享目录。

它对于 /var/tmp 和 /tmp 等共享目录很有用,因为用户可以创建文件、读取和执行其他用户拥有的文件,但不允许删除其他用户拥有的文件。

例如,如果用户 bob 创建了一个名为 /tmp/bob 的文件,则即使 /tmp 目录的权限为 777,其他用户 tom 也无法删除该文件。
如果没有设置粘滞位,则 tom 可以删除 /tmp/bob,因为/tmp/bob 文件继承父目录权限。

root 用户(当然!)和文件的所有者可以删除他们自己的文件。

粘滞位示例:

# ls -ld /var/tmp
drwxrwxrwt  2   sys   sys   512   Jan 26 11:02  /var/tmp
- T refers to when the execute permissions are off.
- t refers to when the execute permissions are on.

如何设置粘滞位权限?

# chmod +t [path_to_directory]
or 
# chmod 1777 [path_to_directory]
日期:2020-09-17 00:14:14 来源:oir作者:oir