Я читал все sudo сообщения на serverfault, но я все еще не могу выяснить то, что я делаю неправильно. Обычно я наконец нахожу решение, но не на этот раз:
Я хочу, чтобы апачский пользователь смог выполнить эту команду как пользователь "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.
Любая идея горячо приветствовалась бы :-)
Denis
Если вы не хотите запускать команду от имени root, вам нужно указать имя пользователя, поэтому
su - apache -s /bin/bash
sudo -u hremotessh /home/hremotessh/scripts/redirect.sh 8892 8893
- это правильный синтаксис для проверки команды sudo.
Так как вам не предлагается ввести пароль пользователя apache, кажется, что sudo настроена правильно.
Результирующее предупреждение: hremotessh отсутствует в файле sudoers.
указывает, что в скрипте redirect.sh используется другая команда sudo
. И нет (действительной) политики sudo для этого пользователя.
У меня была аналогичная проблема, когда я пытался запустить код python3 как sudo из скрипта и не мог ввести пароль из скрипта. Решением было отредактировать visudo, чтобы python3 работал как sudo без запроса пароля, а НЕ запускал скрипт python3 как sudo. Поэтому я считаю, что вам нужно запускать apache как sudo без запроса пароля, НЕ запускать сценарий .sh как sudo без пароля.