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