在Mac / Linux上更改进程的用户所有者?

时间:2011-11-15 17:58:40

标签: macos process owner

我有一个以root身份运行的程序。这个应用程序调用另一个程序(processA)来运行。当processA运行时,它由root拥有,但我希望它的所有者是当前登录的用户。怎么做?

1 个答案:

答案 0 :(得分:3)

嗯,这有点棘手......取决于它是守护进程(服务)还是你运行这个命令/ app。

对于第二种情况,您可以使用“su”命令。 这是一个简短的例子。

<强> 1。我创建了一个带有以下内容的简单脚本(它将在后台睡眠100秒,并将输出与此脚本相对应的进程列表):

#!/bin/bash
sleep 100 &
ps faux | grep test.sh

<强> 2。我像这样运行“su”命令(我目前以“root”身份登录,我想以“沙盒”用户身份运行此脚本):

su - sandbox -c ./test.sh

sandbox =将运行此命令的用户名。 -c ./test.sh =表示它将执行此命令

第3。输出(第一列=拥有此流程的用户):

root@i6:/web-storage/sandbox# su - sandbox -c ./test.sh
sandbox  18149  0.0  0.0  31284  1196 pts/0    S+   20:13   0:00                      \_ su - sandbox -c ./test.sh
sandbox  18150  0.0  0.0   8944  1160 pts/0    S+   20:13   0:00                          \_ /bin/bash ./test.sh
sandbox  18155  0.0  0.0   3956   644 pts/0    S+   20:13   0:00                              \_ grep test.sh
root@i6:/web-storage/sandbox#

我希望它会有所帮助, 斯蒂芬