ユーザーが別のユーザーとしてコマンドを実行できるようにする

ユーザーが別のユーザーとしてコマンドを実行できるようにする

目標は、www-dataユーザーにパスワードを尋ねることなく実行できるようにすることですsudo -u postgres -H osm2pgsql [some options here](これは自動的に実行されるスクリプトの一部となるため)。

sudoersファイルの次の行でそれができると思いました

www-data ALL=NOPASSWD: /usr/bin/sudo -u postgres -H osm2pgsql *

しかし、これはうまくいかないようです。何が間違っているのでしょうか?

答え1

必要な構文は

Defaults:www-data !requiretty
www-data ALL=(postgres) NOPASSWD: /usr/bin/osm2pgsql

ここで、/usr/bin/osm2pgsqlは の実際のパスに置き換える必要がありますosm2pgsql。 この!requiretty行により、ターミナルなしでスクリプトから sudo を実行できるようになります。 これにより、sudo -u postgres -H osm2pgsql任意のオプションを持つコマンドが機能するようになります。

答え2

試す:

www-data ALL=NOPASSWD: /path/to/osm2pgsql

関連情報