Как запустить скрипт от имени другого пользователя без пароля? - PullRequest
137 голосов
/ 02 августа 2011

У меня есть script.sh, который должен быть запущен как user2. Однако этот скрипт может быть запущен только под пользователем user1 в моем приложении.

Я бы хотел выполнить следующую команду:

su user2 -C script.sh

, но можно запускать без пароля.

Я также хочу, чтобы это было очень ограничительным, так как в user1 можно запускать script.sh только под user2 и ничего больше.

Я пытался сделать это с файлом sudoers, и после нескольких часов попыток просто запутался.

Если кто-то может предоставить явный пример того, как это можно сделать (вместо чего-то общего, например, использовать sudoers), это будет с благодарностью.

Ответы [ 3 ]

190 голосов
/ 20 сентября 2012

попробуйте запустить:

su -c "Your command right here" -s /bin/sh username

Это запустит команду под именем пользователя, если у вас есть права на sudo как этого пользователя.

111 голосов
/ 02 августа 2011

Позвоните visudo и добавьте:

user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh

Путь команды должен быть абсолютным !Затем позвоните sudo -u user2 /home/user2/bin/test.sh из user1 оболочки.Готово.

0 голосов
/ 17 апреля 2019
`su -c "Your command right here" -s /bin/sh username`

Вышеприведенная команда верна, но в Red Hat, если selinux применяет, она не позволит cron запускать сценарии от имени другого пользователя. пример; execl: couldn't exec /bin/sh execl: Permission denied

Я должен был установить setroubleshoot и setools и запустить следующее, чтобы разрешить это:

yum install setroubleshoot setools
sealert -a /var/log/audit/audit.log
grep crond /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.p
...