我可以 运行 一个包含 setuid() 而没有 sudo 的 C 程序吗?

Can I run a C program containing setuid() without sudo?

我正在尝试从多个用户执行 C 程序,并尝试以程序中的其他用户身份登录以访问文件。但是我收到错误

setuid: Operation not permitted

我可以做一些不需要每次都使用 sudo 的事情吗?比如,授予程序的完全访问权限以根据需要使用 setuid 而无需每次都调用 sudo?

您只需使用 chmod:

在程序的可执行文件本身上使用 setuid
sudo chmod u+s executable

根据系统和您在其中的权限,您可以将程序的所有者或组更改为具有 setuid 权限的人,然后设置 setuidsetgid 通过 chmod:

在可执行文件上的模式
chgrp wheel my-awesome-program
chmod g+s my-awesome-program

chown superduperuser my-awesome-program
chmod u+s my-awesome-program

请注意,这样做会造成潜在的安全漏洞。如果有人可以覆盖您的程序,他们就可以使用它来获得特权。请谨慎执行此操作。