0

“我不明白linux中二进制的SUID和cap_setuid之间的区别。那么,SUID和setuid之间的区别”

4

1 回答 1

1

二进制文件的 SUID 意味着二进制文件在启动时被检测为不同的有效用户。例如:

$ cp `which id` nobody_id
$ sudo chown nobody nobody_id
$ sudo chmod +s nobody_id
$ ./nobody_id
.... euid=65534(nobody) groups= ...

您可以做同样的事情,但制作二进制 setuid-root以使二进制以root' 的权限运行。

CAP_SETUID是允许进程从代码更改 UID 的 Linux 功能:它可以授予代码执行setuid()系统调用的权限。这被认为是普通用户代码可以执行的特权。可以使用不影响文件所有权的文件功能将其提供给程序:

$ sudo setcap cap_setuid=ep my_program_binary

./my_program_binary下次运行时,它将在启用该功能的情况下运行。

于 2021-09-08T14:37:14.227 回答