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

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

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

Мне нужна следующая команда:

su user2 -C script.sh

но может работать без пароля.

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

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

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

4b9b3361

Ответ 1

Вызвать visudo и добавить это:

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

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

Ответ 2

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

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

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

Ответ 3

'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