Переключение пользователей в скрипте bash

2197
eliocs

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

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

0

3 ответа на вопрос

1
Majenko

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

  • Пользователь, выполняющий скрипт = Фред
  • Пользовательский скрипт хочет запускать определенные команды как = 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 
Вы должны рассмотреть возможность переформатирования второго абзаца, например, в список. Daniel Beck 13 лет назад 0
Это именно то, что я ищу! eliocs 13 лет назад 0
0
reinierpost

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

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

0
thatothermitch

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

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

origuser ALL = (ALL) ALL 

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

origuser ALL = NOPASSWD: ALL 

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

Урк нет - это даст оригинатор *** Полный доступ к корню *** Majenko 13 лет назад 0
ты прав; я также отметил, что в моем ответе thatothermitch 13 лет назад 0
полный root-доступ не желателен в моем случае. eliocs 13 лет назад 0