![setuid 在 Pop!_OS 中未按预期工作](https://linux22.com/image/176190/setuid%20%E5%9C%A8%20Pop!_OS%20%E4%B8%AD%E6%9C%AA%E6%8C%89%E9%A2%84%E6%9C%9F%E5%B7%A5%E4%BD%9C.png)
所以我试图尝试一下setuid
。根据我的理解,它允许用户在所有者的上下文中运行二进制文件。所以我用 C 编写了一个程序,它/root
在只有“root”用户可以执行的目录中执行写操作。我编译了它,并将生成的二进制文件的所有者更改为“root”,并setuid
使用以下命令添加了权限:
$ chmod u+s binary_generated
文件权限看起来像这样
-rwsrwxr-x 1 root root 21112 Jun 29 11:26 binary_generated
所以现在我的普通用户应该能够使用 root 用户上下文执行这个二进制文件,并且它应该允许我写入/root
目录。但它仍然给我Permission Denied
错误:
[!!] Fatal Error in main() while opening file: Permission denied
我正在使用 Pop!_Os 20.04 和 Linux 5.4.0-7634-generic
我认为它必须与内核或操作系统中的安全功能有关。