別のユーザーとしてコマンドを実行する

別のユーザーとしてコマンドを実行する

intelmqというプログラムを実行する権限を持つ というユーザーを作成しましたintelmqctl。次に というユーザーを作成し、そのユーザーとして実行したいapacheと思います。ファイルに次の行を追加しました:apacheintelmqctlintelmqsudoers

Defaults:apache !requiretty
apache ALL=(intelmq) NOPASSWD: /usr/bin/intelmqctl

ただし、ユーザーとして次のコマンドを実行しようとすると、毎回apache次の結果が返されます。

指示:sudo -u apache sudo -u intelmq /usr/bin/intelmqctl --type json stop abusech-ip-parser

出力:

Sorry, user apache is not allowed to execute '/bin/sudo -u intelmq /usr/bin/intelmqctl --type json stop abusech-ip-parser' as apache on localhost.localdomain.

CentOS 7を使用しています。

インストール時に何か失敗したのかもしれませんが、インストール時に実行した手順intelmqctlと問題自体のより詳しい説明は次のとおりです。https://github.com/certtools/intelmq/issues/981

sudo -iu apacheとして実行しようとするとroot、ユーザーに変更されapache、コマンド を実行するとsudo -u intelmq /usr/bin/intelmqctl、機能し、 を実行するためのすべてのオプションが表示されますintelmqctl

sudo -iu apacheただし、ユーザーとしてコマンドを実行すると、apache次の結果が返されます。Sorry, user apache is not allowed to execute '/bin/bash' as apache on localhost.localdomain.

答え1

そのバイナリに setuid 権限を追加し、所有権を intelmq に変更できます。

chmod u+s /usr/bin/intelmqctl
chown intelmq /usr/bin/intelmqctl

その後、この実行可能ファイルを intelmq のプロセス所有権で実行できます。

関連情報