Все, что мне нужно сделать, - это запустить определенный скрипт от имени конкретного пользователя, для которого nologin/false
оболочка указана в /etc/passwd
.
Я бы запустил скрипт от имени пользователя root, и он должен работать от имени другого пользователя. Бег:
~# su -c "/bin/touch /tmp/test" testuser
будет работать, но мне нужна корректная оболочка для тестируемого. Я знаю, что могу отключить пароль passwd -d testuser
и оставить оболочку /bin/bash
таким образом, что бы немного обезопасить себя, но мне нужна nologin/false
оболочка.
По сути, мне нужно то crontab
, что нужно делать, когда мы настраиваем задания на выполнение от имени конкретного пользователя, независимо от того, есть ли у него nologin/false
оболочка.
PS Я нашел этот поток, выполняя команду от имени пользователя nologin , но я понятия не имею, как выполнить concatenate
команду su -s /bin/sh $user
для скрипта, который мне нужно запустить.
root:root -rwsr-x---
?su -s /bin/bash -c 'exec /path/to/your/script &' test
runuser
, я хотел бы отметить, чтоsu -s SHELL
параметр делает команду runuser практически бесполезной :) Спасибо, Ян!Вы можете сделать это,
sudo -u
если у вас установлено:источник
sudo -u apache whoami
?sudo -u
, вероятно, не является хорошей идеей для запуска команд от имени пользователя nologin, потому что оно выявляетSUDO_USER
в среде, которая является реальной, вызывает команду. Может быть, я просто обдумываю это.Предоставив скрипт в качестве аргумента для выполнения в / bin / sh:
источник
только что понял :
su -s "/ bin / bash" -c "/ bin / touch / tmp / testuser" testuser
может есть лучший способ ?!
источник
на самом деле, лучший способ сделать это через runuser
см. справочную страницу для деталей
этот инструмент используется, чтобы справиться с ситуацией, как сказал разработчик в своем болге
Когда служба работает от имени пользователя root и хочет изменить UID с помощью оболочки, она должна использовать runuser.
http://danwalsh.livejournal.com/55588.html
я разместил этот ответ во многих дворцах, прости меня, если ты находишь это раздражающим
источник
Используйте sudo -u, чтобы указать пользователя. Также используйте флаг -i, чтобы также установить переменные окружения целевого пользователя.
источник
This account is currently not available.
Используйте команду su с командами shell -s и -c. Как показано ниже
источник