Разрешить пользователю выполнять одну команду от имени другого пользователя

Разрешить пользователю выполнять одну команду от имени другого пользователя

Цель состоит в том, чтобы позволить 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

where /usr/bin/osm2pgsqlследует заменить на фактический путь osm2pgsql. !requirettyСтрока позволяет sudo из скрипта без терминала. Это позволяет команде sudo -u postgres -H osm2pgsqlс любыми параметрами работать.

решение2

Пытаться:

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

Связанный контент