150

user2として実行する必要があるscript.shがあります。ただし、このスクリプトは、アプリケーションの user1 の下でのみ実行できます。

次のコマンドを実行したいと思います。

su user2 -C script.sh

ただし、パスワードなしで実行できます。

また、user1 では script.sh を user2 の下でしか実行できず、他には何も実行できないため、これを非常に制限したいと考えています。

私はsudoersファイルでこれをやろうとしましたが、何時間も試した後、際限なく混乱しました。

誰かがこれをどのように達成できるかの明示的な例を提供できれば(use sudoersのような一般的なものではなく)、大歓迎です。

4

3 に答える 3

195

実行してみてください:

su -c "Your command right here" -s /bin/sh username

これにより、そのユーザーとして sudo へのアクセス許可がある場合、ユーザー名としてコマンドが実行されます。

于 2012-09-20T16:51:56.907 に答える
126

これを呼び出しvisudoて追加します。

user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh

コマンド パスは絶対パスでなければなりません。次にsudo -u user2 /home/user2/bin/test.shuser1シェルから呼び出します。終わり。

于 2011-08-01T23:47:55.783 に答える
1
`su -c "Your command right here" -s /bin/sh username`

上記のコマンドは正しいですが、Red Hat で selinux が適用されている場合、cron は別のユーザーとしてスクリプトを実行できません。例; execl: couldn't exec /bin/sh execl: Permission denied

setroubleshoot と setools をインストールし、次を実行して許可する必要がありました。

yum install setroubleshoot setools
sealert -a /var/log/audit/audit.log
grep crond /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.p
于 2019-04-17T17:53:09.083 に答える