User2として実行する必要があるscript.shがあります。ただし、このスクリプトは私のアプリケーションのuser1でしか実行できません。
次のコマンドを実行してください。
su user2 -C script.sh
しかし、パスワードなしで実行することができます。
User1ではuser2の下でのみscript.shを実行できるだけで、他には何も実行できないため、これも非常に制限的にする必要があります。
私はsudoersファイルを使ってこれをやろうとしました、そして、何時間もの試みの後にたまたま混乱しました。
誰かがこれをどのように達成できるかの明確な例を(use sudoersのような一般的なものではなく)提供できれば、それは大いに感謝されるでしょう。
visudo
を呼び出してこれを追加します。
user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh
コマンドパスは絶対パスでなければなりません!それからSudo -u user2 /home/user2/bin/test.sh
シェルからuser1
を呼び出します。完了しました。
実行してみてください。
su -c "Your command right here" -s /bin/sh username
あなたがそのユーザとしてSudoへの許可を持っていれば、これはusernameとしてコマンドを実行します。
`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