Ответ 1
Вызвать visudo
и добавить это:
user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh
Пути команд должны быть абсолютными! Затем вызовите sudo -u user2 /home/user2/bin/test.sh
из оболочки user1
. Готово.
У меня есть script.sh, который должен запускаться как user2. Однако этот script может запускаться только в user1 в моем приложении.
Мне нужна следующая команда:
su user2 -C script.sh
но может работать без пароля.
Я также хочу, чтобы это было очень ограничительным, так как в user1 может запускаться только script.sh под user2 и ничего больше.
Я пробовал делать это с файлом sudoers и просто бесконечно путался после нескольких часов попыток.
Если кто-то может предоставить явный пример того, как это может быть выполнено (вместо чего-то общего, например, использование sudoers), было бы очень полезно.
Вызвать visudo
и добавить это:
user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh
Пути команд должны быть абсолютными! Затем вызовите sudo -u user2 /home/user2/bin/test.sh
из оболочки user1
. Готово.
попробуйте запустить:
su -c "Your command right here" -s /bin/sh username
Это приведет к выполнению команды как имени пользователя, если у вас есть права на sudo в качестве этого пользователя.
'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