web-dev-qa-db-ja.com

別のユーザーの権限でbashスクリプトを自動的に実行する

別のユーザーの権限で(自動的に)bashスクリプトを実行する方法はありますか? 「Sudo」は正しい方法だと思いますが、プロセスを自動化する方法がわかりません。

例えば。このようなものを実行したい(ユーザー「bla」は「blub」の下でプロセスを実行します):

Sudo <the user under which i want to run the process> <path to script>
4
nikeee

だから私はそれを正しく理解しました。

ユーザー「bla」がユーザー「blub」としてコマンドを実行したいですか?

次に、このようなものが機能する可能性があります。

Sudo -u blub /path/to/command

パスワードを要求されずにこれを行う必要がある場合は、次の行を/ etc/sudoersに追加します(visudoコマンドを使用)。

bla    ALL=(blub) NOPASSWD: /path/to/command
5
andrekeller

sUIDおよびSGIDビットのアクセス許可を操作できます( これは本当に危険な場合があることに注意してください

スクリプトを実行しているユーザーが属するグループにこのファイルを実行する権限を付与し、SUIDを介して、このスクリプトを実行するすべてのユーザーに、スクリプトを所有するユーザーとして実行するように設定します。

Sudo chmod 4751 /path/to/my/file
Sudo chgrp somegroup /path/to/my/file

次に、スクリプトをserB who is member of somegroupとして実行する必要があり、スクリプトはserAおよびとして実行されます。 somegroup

ls -l /path/to/my/file
-rwsr-xr-- userA somegroup /path/to/my/file
3
Thomas

Cgiからスクリプトを実行したかったのです。私のスクリプトはいくつかのディレクトリとファイルを生成し、nagiosユーザーがそれらを所有する必要がありました。これは私がしたことです:

edit /etc/sudoers using visudo command
Apache   ALL=(nagios) NOPASSWD: /usr/local/nagios/libexec/pangoo_lib/change_state_simulation

私のcgi(Apacheユーザー)から、スクリプトが実行されます。

Sudo -u nagios /usr/local/nagios/libexec/pangoo_lib/change_state_simulation