“我不明白linux中二进制的SUID和cap_setuid之间的区别。那么,SUID和setuid之间的区别”
问问题
163 次
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 回答