从脚本运行非root用户程序

时间:2011-08-19 10:13:27

标签: linux

我有一个与此主题密切相关的问题: Best practice to run Linux service as a different user

但我需要解决方案才能在“每个”Linux发行版中工作。

我想从脚本中以非root用户身份运行程序。这样,当init.d以root身份在引导时启动服务时,脚本将以我指定的非root用户身份启动进程。当然,解决方案不应该提示输入密码。

我认为这是部署应用程序时的正常/正确程序。

我怎么能这样做?

非常感谢

2 个答案:

答案 0 :(得分:3)

一种好方法是从实际程序中删除权限。然后将该用户作为参数传递。在里面你可以用非常标准的方式处理它(setuid()

否则su -c 'your command' different_user可以在任何linux上正常工作。 (只要存在different_user)

答案 1 :(得分:1)

有两种方法:

  1. sudo命令 - 您需要将原始用户添加到/etc/sudoers这样的条目,即程序可以在没有(NOPASSWD)的情况下运行
  2. seteuid()系统调用(如果可以修改程序)
  3. 如果您是root,也可以使用su(有关详细信息,请参阅@ cnicutar的回答)