Я хочу выполнить сценарий удара, который переключает пользователя и затем выполняет ряд команд. Ни одно из этого пользователи не имеет полномочия пользователя root. Я предполагаю, что должен отредактировать sudoers файл для предоставления user1 (пользователь, выполняющий сценарий) полномочия смочь зарегистрироваться как user2 без подсказки пароля. Я искал этот пример, но я не нашел никого.
Заранее спасибо.
В этом примере:
В sudoers файле (visudo) имеют:
fred ALL=(boris) NOPASSWD:/bin/cat, (boris) NOPASSWD:/bin/rm
Затем в сценарии:
#!/bin/sh
sudo -u boris cat /home/boris/privatefile
sudo -u boris rm /home/boris/privaterubbish
Если Вы хотите позволить fred выполнять какую-либо команду, поскольку boris используют это в sudoers:
fred ALL=(boris) NOPASSWD:ALL
Поместите ряд команд в файле, заставьте его запуститься с #!/bin/sh
, и сделайте это исполняемым файлом. Затем дайте пользовательское разрешение запустить тот скрипт с visudo
.
Остерегайтесь: это, вероятно, предоставит Escape им для выполнения любой команды. Альтернатива должна записать программу C, которая выполняет рассматриваемые команды. Даже затем необходимо ступать осторожно, например, убрать environmentvariables, который пользователь мог использовать, чтобы ввезти контрабандой способы заставить команды выполниться способами, которыми Вы не ожидали.
sudoers файл симпатичен сам документирующий, по моему опыту; это заполнено комментариями и примерами. Можно стать довольно детализированными с полномочиями как @reinierpost упомянутый, и необходимо знать, что Вы эффективно даете этому пользовательскому суперпользователю полномочия, разрешая их использовать sudo.
Если Вы будете просто надеяться позволять пользователю выполнять произвольные команды, то Вы будете, вероятно, добавлять что-то как:
origuser ALL = (ALL) ALL
или если Вы хотите обойти подсказку пароля
origuser ALL = NOPASSWD: ALL
Насколько переключающиеся пользователи идут, Вы могли бы использовать sudo -u [command]
или sudo -u -i [command]
если Вам нужна среда 'целевого' пользователя.