Я хочу выполнить скрипт bash, который переключает пользователя, а затем выполняет серию команд. Ни один из этих пользователей не имеет привилегий root. Я предполагаю, что мне нужно отредактировать файл sudoers, чтобы дать пользователю user1 (пользователю, выполняющему сценарий) привилегии, чтобы иметь возможность войти в систему как user2 без запроса пароля. Я искал этот пример, но я не нашел ни одного.

Заранее спасибо.

3 ответа3

1

В этом примере:

  • Пользователь, выполняющий скрипт = Фред
  • Пользовательский скрипт хочет запускать определенные команды как = boris
  • Команды, которые скрипт хочет запустить как boris = /bin /cat & /bin /rm

В файле 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
0

Поместите последовательность команд в файл, начните с #!/bin/sh и сделайте его исполняемым. Затем дайте пользователям разрешение на запуск этого скрипта с помощью visudo .

Осторожно: это может дать им возможность запустить любую команду. Альтернативой является написание программы на C, которая выполняет соответствующие команды. Даже в этом случае вам нужно следить за своим шагом, например, очищать переменные окружения, которые пользователь мог бы использовать для контрабанды таким образом, чтобы заставить ваши команды выполняться так, как вы этого не ожидали.

0

Файл sudoers довольно самодокументирован в моем опыте; он заполнен комментариями и примерами. Вы можете получить довольно детальную информацию о разрешениях, как упомянуто @reinierpost, и вам следует знать, что вы фактически даете этому пользователю права суперпользователя, разрешая ему использовать sudo.

Если вы просто хотите позволить пользователю запускать произвольные команды, вы, вероятно, добавите что-то вроде:

origuser           ALL = (ALL) ALL 

или если вы хотите обойти запрос пароля

origuser           ALL = NOPASSWD: ALL

Что касается переключения пользователей, вы можете использовать sudo -u [command] или sudo -u -i [command] если вам нужна среда пользователя «назначения».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .