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

У меня есть 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
Другие вопросы по тегам