我试图从多个用户执行一个C程序,并试图以程序中的其他用户身份登录以访问文件。但我得到错误我可以在没有sudo的情况下运行包含setuid()的C程序吗?
的setuid:操作不允许
我可以做这样的事情我不需要每次使用sudo?就像,每次使用setuid都可以完全访问程序而不需要调用sudo?
我试图从多个用户执行一个C程序,并试图以程序中的其他用户身份登录以访问文件。但我得到错误我可以在没有sudo的情况下运行包含setuid()的C程序吗?
的setuid:操作不允许
我可以做这样的事情我不需要每次使用sudo?就像,每次使用setuid都可以完全访问程序而不需要调用sudo?
根据不同的系统,和你在它的权限,你也许可以在程序的所有者或组更改为一个有特权的setuid,然后经由chmod
设置上的可执行的的setuid或setgid的模式:
chgrp wheel my-awesome-program
chmod g+s my-awesome-program
或
chown superduperuser my-awesome-program
chmod u+s my-awesome-program
请注意,如果这样做,您可以创建一个潜在的安全漏洞。如果有人可以覆盖你的程序,他们可以使用它来获得特权。谨慎行事。
你只需要在程序的可执行文件本身使用setuid
使用chmod
:
sudo chmod u+s executable
这个问题可能属于超级用户。你可以通过设置SUID文件属性来解决它,比如'sudo chmod u + s your_program' – flaviodesousa
你也可以考虑在正确的用户下根据需要制作一个根目录的服务器(或者就此而言只需ssh到那个用户) 。 – eckes