У меня есть доступ к учетной записи другого пользователя с помощью команды:
sudo su - other_user
У меня нет пароля. Похоже, что это единственная команда, которую позволяет мне sudo.
После этого я могу выполнять несколько задач, таких как копирование файлов и перезапуск сервера. Я хотел бы автоматизировать эти задачи, чтобы я мог выполнить сценарий, который получил бы права other_user и делал бы то, что должен делать. Тем не мение, sudo
порождает другую оболочку, которая, пока я не выйду из нее, блокирует выполнение скрипта. Можно ли управлять этой оболочкой и отправлять ей команды из моего скрипта?
Обновление 2011-11-01:
Я пробовал предложения из ответов и обеих этих команд:
sudo -u other_user whoami
sudo su - other_user -c "whoami"
спросить пароль.
К сожалению, найти не удалось sudoers посмотреть настройки. Ситуация меня немного раздражает, потому что у меня есть привилегии делать то, что я хочу, но я не могу это автоматизировать.
Использовать -c
вариант su
команда для выполнения команд от имени другого пользователя.
При необходимости вы также можете использовать вывод этих команд в своем сценарии или в оболочке.
Пример:
[infeligo@server ~] cat /home/kenny/secretfile.txt
cat: /home/kenny/secretfile.txt: Permission denied
[infeligo@server ~] sudo su - kenny -c "cat /home/kenny/secretfile.txt"
Dear diary: Today was a boring day at work. Good thing it's a friday!
[infeligo@server ~]
Использование su не совсем необходимо.
$ sudo -u other_user whoami
other_user