Я хотел бы автоматизировать одну работу в 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, где вы также можете настроить его так, чтобы пароль не требовался.