我有一个与此主题密切相关的问题: Best practice to run Linux service as a different user
但我需要解决方案才能在“每个”Linux发行版中工作。
我想从脚本中以非root用户身份运行程序。这样,当init.d以root身份在引导时启动服务时,脚本将以我指定的非root用户身份启动进程。当然,解决方案不应该提示输入密码。
我认为这是部署应用程序时的正常/正确程序。
我怎么能这样做?
非常感谢
答案 0 :(得分:3)
一种好方法是从实际程序中删除权限。然后将该用户作为参数传递。在里面你可以用非常标准的方式处理它(setuid()
)
否则su -c 'your command' different_user
可以在任何linux上正常工作。 (只要存在different_user)
答案 1 :(得分:1)
有两种方法:
sudo
命令 - 您需要将原始用户添加到/etc/sudoers
这样的条目,即程序可以在没有(NOPASSWD
)的情况下运行seteuid()
系统调用(如果可以修改程序)如果您是root
,也可以使用su
(有关详细信息,请参阅@ cnicutar的回答)