lot*_*ous 160 filesystems permissions
SUID
该粘着位应用到可执行程序标记系统,以保持节目的图像在内存中后,该程序运行完毕。
但我不知道它在内存中存储了什么。在这种情况下,我如何才能看到它们。?
slm*_*slm 215
这可能是我最讨厌的事情之一,人们总是搞砸。SUID/GUID 位和粘滞位是两个完全不同的东西。
如果你这样做,man chmod你可以阅读关于 SUID 和粘滞位的信息。该手册页可在这里为好。
摘抄
字母rwxXst为受影响的用户选择文件模式位:读取(r)、写入(w)、执行(或搜索目录)(x)、仅当文件是目录或已经对某些文件具有执行权限时才执行/搜索用户 (X),在执行 (s) 时设置用户或组 ID,限制删除标志或 粘滞位 (t)。
上面的手册页试图说的是,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 - 只设置了rwxr-xr-x位。
$ ls -lt b.pl
-rwxr-xr-x 1 root root 179 Jan 9 01:01 b.pl
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
guid & group 的可执行位已启用(小写 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
另一方面,粘滞位表示为t,例如/tmp目录:
$ ls -l /|grep tmp
drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp
Run Code Online (Sandbox Code Playgroud)
考虑到它的真正含义,这个位应该一直被称为“受限删除位”。启用此模式位后,它会创建一个目录,以便用户只能删除其中属于他们的文件和目录。
摘抄
受限删除标志或粘滞位
受限删除标志或粘滞位是单个位,其解释取决于文件类型。对于目录,它
可以防止非特权用户删除或重命名目录中的文件,除非他们拥有该文件或目录;这称为目录的受限删除标志,通常可在世界可写目录(如 /tmp)中找到。对于某些旧系统上的常规文件,该位将程序的文本图像保存在交换设备上,以便在运行时加载更快;这称为粘滞位。
“粘滞位应用于可执行程序,标记系统以在程序完成运行后将程序映像保留在内存中。”
我认为这是非常过时的信息,今天大多数现代 Unix 都忽略了这一点。在 Linux 中,粘性位仅与目录相关。请参阅此处和内容丰富的Wikipedia 文章。
无论如何,在那个旧行为中,图像(只有“代码”,而不是数据)只保存在虚拟内存中 - 通常交换,而不是在真实内存中,以便下次运行得更快。