3

ルートとして実行されているプログラムがあります。このアプリは、別のプログラム(processA)を呼び出して実行します。processAが実行されているとき、それはrootによって所有されていますが、その所有者を現在ログオンしているユーザーにする必要があります。どうやってするの?

4

1 に答える 1

4

それは少しトリッキーです...それがデーモン(サービス)であるか、このコマンド/アプリを実行するかによって異なります。

2番目のケースでは、 「su」コマンドを使用できます。これが短い例です。

1.次のコンテンツを含む簡単なスクリプトを作成します(バックグラウンドで100秒間スリープし、このスクリプトに対応するプロセスリストを出力します)。

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

2.次のように「su」コマンドを実行します(現在「root」としてログインしており、このスクリプトを「sandbox」ユーザーとして実行したい):

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#

ステファン、お役に立てば幸いです

于 2011-11-15T18:15:55.850 に答える