web-dev-qa-db-ja.com

パスワードなしで別のユーザーとしてスクリプトを実行する方法

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

次のコマンドを実行してください。

su user2 -C script.sh

しかし、パスワードなしで実行することができます。

User1ではuser2の下でのみscript.shを実行できるだけで、他には何も実行できないため、これも非常に制限的にする必要があります。

私はsudoersファイルを使ってこれをやろうとしました、そして、何時間もの試みの後にたまたま混乱しました。

誰かがこれをどのように達成できるかの明確な例を(use sudoersのような一般的なものではなく)提供できれば、それは大いに感謝されるでしょう。

137
user788171

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

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

コマンドパスは絶対パスでなければなりません!それからSudo -u user2 /home/user2/bin/test.shシェルからuser1を呼び出します。完了しました。

111
pyroscope

実行してみてください。

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

あなたがそのユーザとしてSudoへの許可を持っていれば、これはusernameとしてコマンドを実行します。

190
Jeronimo Robles
`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
0
C Jaskoski