Sudoers - 特定のユーザーが特定のコマンドを実行できるようにする

Sudoers - 特定のユーザーが特定のコマンドを実行できるようにする

Pythonスクリプトを呼び出す必要があるPHPスクリプトがあります。しかし、私はPythonスクリプトをwww-data(phpユーザー)ではなくpycertで実行したいと思います。だから私はwww-dataがsudoersファイルからスクリプトを実行することを許可しようとしましたが、うまくいかないようです。 PHPコード:

exec("timeout --preserve-status -k 10 15s sudo -u pycert /bin/python /var/www/files/certs/creation/cert.py $file", $resulta, $result);

Vesudoファイル:

www-data ALL=(pycert:pycert) NOPASSWD:/bin/python /var/www/files/certs/creation/cert.py /var/www/files/certs/creation/cert-[0-9a-ZA-Z]+

これはauth.logです。

sudo: www-data : command not allowed ; TTY=pts/1 ; PWD=/var/www/files.git ; USER=pycert ; GROUP=pycert ; COMMAND=/bin/python /var/www/files/certs/creation/cert.py /var/www/files/certs/creation/cert-Wi1S9a

私は何が間違っていましたか?

ベストアンサー1

まず、「visudoファイル」のようなものはありません。 Visudoはsudoersファイルを変更するエディタです。

第二に、これがどのLinuxディストリビューションであるかについて言及を省略しました。これにより、必要なアクセス制御システムが存在するかどうかについての手がかりを提供できます。

第三に、必要に応じて簡単に再現できる作業に問題を分割するのではなく、最終結果を構築しようとしています。つまり、一般的な対話型ユーザーアカウントを使用してsudo操作を実装しようとしています。

第四に、指示を読んでいない。特に「注意してください。これは正規表現ではありません。」部分です。[0-9a-ZA-Z]+繰り返されるアルファベット文字と数字の集合を一致させるのではなく、リテラル「+」が後に続く単一のアルファベット文字または数字と一致します。

頑張って...

user ALL=(pycert:pycert) NOPASSWD:/bin/python /var/www/files/certs/creation/cert.py /var/www/files/certs/creation/cert-*

おすすめ記事