苏伊德
这粘性位应用于可执行程序,标记系统以在程序运行完成后将程序的映像保留在内存中。
但我不知道它在内存中存储了什么。在这种情况下,我如何才能看到它们?
答案1
这可能是我最讨厌的事情之一,人们总是把事情搞砸。 SUID/GUID 位和粘性位是两个完全不同的东西。
如果您这样做,man chmod
您可以阅读有关 SUID 和粘性位的信息。这手册页可在此处找到以及。
背景
摘抄
这些信读写器为受影响的用户选择文件模式位:读 (r)、写 (w)、执行(或搜索目录)(x)、仅当文件是目录或已具有某些用户的执行权限时才执行/搜索 (X ),在执行时设置用户或组 ID、限制删除标志或 粘性位(t)。
SUID/GUID
上面的手册页试图说明的是,x 位在用户八进制(rwx 的第一组)和组八进制(rwx 的第二组)的 rwxrwxrwx 中所占据的位置可以采取附加状态,其中 x 变为安.斯.当发生这种情况时,该文件在执行时(如果它是一个程序而不仅仅是一个 shell 脚本)将使用该文件的所有者或组的权限运行。
因此,如果该文件由root拥有并且SUID位打开,则程序将以root身份运行。即使您以普通用户身份执行它。同样的情况也适用于 GUID 位。
摘抄
SETUID 和SETGID 位
如果文件的组 ID 与用户的有效组 ID 或用户的补充组 ID 之一不匹配,则 chmod 会清除常规文件的 set-group-ID 位,除非用户具有适当的权限。其他限制可能会导致 MODE 或 RFILE 的 set-user-ID 和 set-group-ID 位被忽略。此行为取决于底层 chmod 系统调用的策略和功能。如有疑问,请检查底层系统行为。
chmod 保留目录的 set-user-ID 和 set-group-ID 位,除非您另外明确指定。您可以使用 u+s 和 gs 等符号模式设置或清除这些位,也可以使用数字模式设置(但不能清除)这些位。
SUID/GUID 示例
没有 suid/guid- 只是一些位rwxr-xr-x已设置。
$ ls -lt b.pl
-rwxr-xr-x 1 root root 179 Jan 9 01:01 b.pl
suid 和用户的可执行位启用(小写 s)- 比特RWSR-XRX已设置。
$ chmod u+s b.pl
$ ls -lt b.pl
-rwsr-xr-x 1 root root 179 Jan 9 01:01 b.pl
suid 已启用且可执行位已禁用(大写 S)- 比特rwSr-xr-x已设置。
$ chmod u-x b.pl
$ ls -lt b.pl
-rwSr-xr-x 1 root root 179 Jan 9 01:01 b.pl
guid 和组的可执行位启用(小写 s)- 比特rwxr-sr-x已设置。
$ chmod g+s b.pl
$ ls -lt b.pl
-rwxr-sr-x 1 root root 179 Jan 9 01:01 b.pl
启用 GUID 并禁用可执行位(大写 S)- 比特rwxr-Sr-x已设置。
$ chmod g-x b.pl
$ ls -lt b.pl
-rwxr-Sr-x 1 root root 179 Jan 9 01:01 b.pl
粘性位
另一方面,粘性位表示为t
,例如目录/tmp
:
$ ls -l /|grep tmp
drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp
该位应该一直被称为“限制删除位”,因为这就是它的真正含义。启用此模式位后,它会创建一个目录,用户只能删除其中自己拥有的文件和目录。
摘抄
限制删除标志或粘性位
限制删除标志或粘性位是单个位,其解释取决于文件类型。对于目录,它
可以防止非特权用户删除或重命名目录中的文件,除非他们拥有该文件或目录;这称为目录的限制删除标志,通常在 /tmp 等全局可写目录中找到。对于某些旧系统上的常规文件,该位将程序的文本图像保存在交换设备上,以便运行时加载速度更快;这称为粘性位。
答案2
答案3
什么是粘性位?
粘滞位是在目录上设置的权限位,仅允许该目录中文件的所有者或 root 用户删除或重命名该文件。没有其他用户拥有删除其他用户创建的文件所需的权限。
这是一项安全措施,旨在避免删除关键文件夹及其内容(子目录和文件),尽管其他用户拥有完全权限。
答案4
我在这个答案中错过的是,目录的粘性位也以某种方式使用,设置后,该目录中新文件的组与该目录的组相同。