目标是让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