2017-02-11 101 views
4

我试图从多个用户执行一个C程序,并试图以程序中的其他用户身份登录以访问文件。但我得到错误我可以在没有sudo的情况下运行包含setuid()的C程序吗?

的setuid:操作不允许

我可以做这样的事情我不需要每次使用sudo?就像,每次使用setuid都可以完全访问程序而不需要调用sudo?

+0

这个问题可能属于超级用户。你可以通过设置SUID文件属性来解决它,比如'sudo chmod u + s your_program' – flaviodesousa

+0

你也可以考虑在正确的用户下根据需要制作一个根目录的服务器(或者就此而言只需ssh到那个用户) 。 – eckes

回答

4

根据不同的系统,和你在它的权限,你也许可以在程序的所有者或组更改为一个有特权的setuid,然后经由chmod设置上的可执行的的setuidsetgid的模式:

chgrp wheel my-awesome-program 
chmod g+s my-awesome-program 

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

请注意,如果这样做,您可以创建一个潜在的安全漏洞。如果有人可以覆盖你的程序,他们可以使用它来获得特权。谨慎行事。

2

你只需要在程序的可执行文件本身使用setuid使用chmod

sudo chmod u+s executable 
相关问题