从其他用户运行可执行文件

时间:2015-10-12 13:52:07

标签: linux centos executable rpm init.d

创建rpm规范文件时,我在%pre部分创建了一个新用户和组。但是,出于安全考虑,此新用户无权从shell登录。现在,当我安装rpm时,这个新用户已成功创建。但是,我希望使用新创建的用户启动已安装的rpm服务。目前我只是写; ' filePath / file.exe file.cfg'执行file.exe及其配置文件,即我的" init.d'中的file.cfg。文件以启动服务。如何修改此命令以启动相同的服务但​​是与我在安装rpm时创建的用户一起启动?基本上我想在我的init.d文件中执行程序,但是通过不同的用户执行,如果我的必需用户是超级用户,就像我用sudo一样。任何反馈都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

安装rpm和运行服务的初始起点是特权。例如,在我的CentOS 6机器上,我在/etc/passwd

中看到了
games:x:12:100:games:/usr/games:/sbin/nologin

但以root身份运行,我可以这样做:

$ sudo -u games /bin/sh
sh-4.1$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin
sh-4.1$ id
uid=12(games) gid=100(users) groups=100(users) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
sh-4.1$ cd
sh-4.1$ pwd
/usr/games

在您的服务脚本中,您可以使用sudo作为另一个用户运行给定进程(尽管快速检查同一台计算机并未显示此操作)。

@msuchy指出runuser可能更可取。我发现这是相对较新的(根据Ubuntu runuser command?util-linux 2.23中出现 - lacking a date使得发行说明不太有用......)。其文档about PAM中的倾斜评论使得听起来好像绕过了一些安全检查。也许有人对那个有更好的评论。

相关问题