Назад | Перейти на главную страницу

Используйте sudo в сценарии оболочки

У меня есть доступ к учетной записи другого пользователя с помощью команды:

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