Я прочитал все сообщения sudo о serverfault, но до сих пор не могу понять, что делаю не так. Обычно я наконец нахожу решение, но не в этот раз:
Я хочу, чтобы пользователь apache мог выполнять эту команду как пользователь «hremotessh»:
sudo /home/hremotessh/scripts/redirect.sh 8892 8893
Поэтому я добавил это в visudo:
apache ALL=(hremotessh) NOPASSWD: /home/hremotessh/scripts/redirect.sh
Но sudo все еще спрашивает пароль?
sudo /home/hremotessh/scripts/redirect.sh
[sudo] password for apache:
Я пробовал это, но не лучше:
sudo -u hremotessh /home/hremotessh/scripts/redirect.sh
hremotessh is not in the sudoers file. This incident will be reported.
Любая идея будет тепло приветствоваться :-)
Денис
Если вы не хотите запускать команду от имени root, вам нужно указать имя пользователя, поэтому
su - apache -s /bin/bash
sudo -u hremotessh /home/hremotessh/scripts/redirect.sh 8892 8893
- это правильный синтаксис для проверки команды sudo.
Поскольку вам не предлагается ввести пароль пользователя apache, похоже, sudo настроен правильно.
Получающееся предупреждение: hremotessh is not in the sudoers file.
указывает, что другой sudo
команда используется в скрипте redirect.sh. И для этого пользователя нет (действующей) политики sudo.
У меня была аналогичная проблема при попытке запустить код python3 как sudo из сценария и не вводить пароль из сценария. Решением было отредактировать visudo, чтобы python3 запускался как sudo без запроса пароля, а НЕ запускал скрипт python3 как sudo. Поэтому я считаю, что вам нужно запускать apache как sudo без запроса пароля, а НЕ запускать сценарий .sh как sudo без пароля.