Как запустить скрипт от имени другого пользователя без пароля?
У меня есть script.sh, который должен быть запущен как user2. Тем не менее, этот скрипт может быть запущен только под user1 в моем приложении.
Я хотел бы выполнить следующую команду:
su user2 -C script.sh
но иметь возможность работать без пароля.
Я также хочу, чтобы это было очень ограничительным, так как в user1 можно запустить только script.sh под user2 и ничего больше.
Я пытался сделать это с файлом sudoers и только после бесконечных попыток запутался.
Если кто-то может предоставить явный пример того, как это можно сделать (вместо чего-то общего, например, использовать sudoers), это будет с благодарностью.
2 ответа
Вызов visudo
и добавьте это:
user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh
The command paths must be absolute! Тогда позвони 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