Можно ли выполнить команду sudo от имени другого пользователя?
Я использую друпал и эгир. Aegir автоматизирует множество задач по созданию сайта. Aegir контролирует Apache, я вошел в систему как root и хочу перезапустить сервер Apache, но я хочу сделать это от имени Aegirs. К сожалению, я не знаю пароль Aegir, поэтому мне интересно, как сделать что-то другим пользователем.
3 ответа
sudo -u <username> <command>
sudo принимает параметр пользователя, который будет запускать его от имени этого пользователя.
В качестве альтернативы, поскольку вы являетесь пользователем root:
su <username> -c <command>
su aegir
это то, что вы ищете, предполагая, что имя пользователя aegir
, man su
даст вам больше информации о su
команда.
Этот пользователь, скорее всего, не сможет перезапустить Apache, если он работает на 80-м порту, если только он специально не настроен для этого. По умолчанию, root
единственный пользователь, который может привязать сервис к низкому номеру порта.
Вы должны быть в состоянии сделать следующее
runuser -l <username> -c <command>
например
runuser -l Aegir -c service httpd restart
Но если вы являетесь пользователем root, вы можете просто su для пользователя без пароля.
Су-Л Агир
J
Вы можете работать как пользователь, используя -u. Это не откроет программы, поскольку вы "вошли в систему" как этот пользователь, поэтому вам придется указать весь путь.
пример
jupyter notebook
Становится так, если обычный пользователь Ubuntu:
sudo -u ubuntu /home/ubuntu/.local/bin/jupyter notebook
Найдите местонахождение Jupyter:
which jupyter
#Result: /home/ubuntu/.local/bin/jupyter