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

Как запустить сценарий оболочки от имени другого пользователя без ввода пароля

Я хотел бы автоматизировать одну работу в hudson, но hudson всегда использует пользователя hudson для запуска скриптов. Я хочу запустить сценарий от имени другого пользователя.

Я просмотрел ответы ServerFault, но нашел только решение, использующее su команда, которая требует, чтобы я ввел пароль целевого пользователя. Это не будет работать для автоматических скриптов.

Может ли кто-нибудь помочь с этим? Спасибо.

Ты можешь использовать sudo сделать это. Во-первых, вам нужно изменить /etc/sudoers файл, чтобы добавить правило, разрешающее hudson user, чтобы стать другим пользователем рассматриваемого сценария. Предположим, у вас есть user1 аккаунт, который нужно запустить /usr/local/bin/my_script.sh.

Бегать visudo изменить sudoers файл и добавьте подобное:

hudson ALL=(user1) NOPASSWD: /usr/local/bin/my_script.sh

Затем используйте следующие sudo команда для запуска скрипта из хадсона:

sudo -u user1 /usr/local/bin/my_script.sh

Это очень важно, что вы используете visudo изменить sudoers файл, чтобы проверить файл на наличие ошибок, прежде чем поместить его на место. Также я бы посоветовал быстро прочитать man sudoers чтобы четко понять, что делает вышеупомянутое, прежде чем добавлять его в вашу конфигурацию.

Комментируя Defaults requiretty вход в /etc/sudoers или другие включенные файлы suders должны помочь.

Что касается ошибки perl - вы, вероятно, используете другой PERL5LIB или другой двоичный файл perl для этого пользователя - и это не будет передано в sudo (если вы не используете -E или env_keep). Проверьте свою среду и, возможно, разрешения.

sudo -u hudson command запустит команду от имени пользователя hudson. Его необходимо настроить в вашем файле sudoers, где вы также можете настроить его так, чтобы пароль не требовался.