4

Есть ли способ выполнить скрипт bash под привилегиями другого пользователя (автоматически)? Я думаю, что "sudo" - правильный путь, но я не знаю, как автоматизировать процесс.

Например, я хочу запустить что-то вроде этого (пользователь "bla" запускает процесс под "blub"):

sudo <the user under which i want to run the process> <path to script>

3 ответа3

5

Так я понял это правильно.

Пользователь "bla" хочет запустить команду как пользователь "blub"?

Тогда что-то вроде этого может работать:

sudo -u blub /path/to/command

Если вам нужно сделать это без запроса пароля, добавьте следующую строку в /etc /sudoers (с помощью команды visudo):

bla    ALL=(blub) NOPASSWD: /path/to/command
3

вы можете работать с битовыми разрешениями SUID и SGID (обратите внимание, что это может быть очень опасно)

дать разрешения на выполнение этого файла группе, к которой принадлежит пользователь, которому вы выполняете сценарий, и задать с помощью SUID любого, кто запускает этот сценарий, запускать его как пользователя, владеющего сценарием

sudo chmod 4751 /path/to/my/file
sudo chgrp somegroup /path/to/my/file

Затем вам просто нужно выполнить скрипт как userB, который является членом somegroup, и он будет выполнен как userA и somegroup

ls -l /path/to/my/file
-rwsr-xr-- userA somegroup /path/to/my/file
0

Я хотел запустить скрипт из CGI. Мой скрипт генерирует несколько каталогов и файлов, и мне нужно, чтобы они принадлежали пользователю nagios. Вот что я сделал:

edit /etc/sudoers using visudo command
apache   ALL=(nagios) NOPASSWD: /usr/local/nagios/libexec/pangoo_lib/change_state_simulation

С моего cgi (пользователь apache) запускается скрипт:

sudo -u nagios /usr/local/nagios/libexec/pangoo_lib/change_state_simulation

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