【发布时间】:2018-04-27 07:10:37
【问题描述】:
我可以使用sudo 或su 作为另一个用户执行命令。通过结合exec,我可以将当前进程替换为sudo 或su,以及一个运行该命令的子进程。但我想用作为另一个用户运行的命令替换当前进程。我该怎么做?
以sleep inf 作为命令,someguy 作为用户进行测试:
exec su someguy -c 'sleep inf'
这给了我来自pstree:
bash───su───sleep
和
exec sudo -u someguy sleep inf
给予
bash───sudo───sleep
在这两种情况下,我只需要 sleep 命令,以 bash 作为父级。
我希望我可以通过 setuid() 和 exec() 的一些序列从 C 中做到这一点。
【问题讨论】:
-
目前 bash 被
su或sudo替换,它运行一个子sleep。您希望bash和sleep作为 bash 的子级吗? -
@TarunLalwani 我要 bash--sleep。
-
看看我发布的答案是否有帮助。在 Ubuntu 16.04 上测试
标签: linux bash shell exec sudo