Как запустить команду от другого пользователя Linux?
Добрый день.
Есть линукс (CentOS 7). На этом линуксе есть два обычных пользователя - "user1" и "user2".
Есть скрипт, который находится тут: "/home/user2/scripts/script1.sh".
User1 может запустить этот скрипт выполнив команду: "su user2 /home/user2/scripts/script1.sh", при этом консоль запросит пароль от user2.
Пароль я знаю, но как мне добавить этот пароль в команду, чтобы она выполнялась сразу, без запроса пароля?
Нашёл вариант "su user2:password /home/user2/scripts/script1.sh", но он не работает, говорит вот так "su: user user2:password does not exist".
Подскажите как побороть?
pstbin, если вам не подходят стандартные юниксовые пути решения проблем, у вас скорее всего проблемы в архитектуре вашего решения, а раз дело касается прав доступа - то и в безопасности.
Там просто какие-то невероятные возможности. Не знаю, как за обычного юзера, но за рута (запуск программы от рута без запроса пароля) делается вот так:
There is a race condition inherent to the way shebang (#!) is typically implemented:
собственно вам нужно сделать слдующее
1. положите файл например в /bin ( тут варианты имеются)
2. назовите его так как собираетесь его запускать например scrypt
3. Дайте ему права на запуск , и доп права
4. и гланое укажите интерпритатор в петвой строке файла.
5. убедитесь что этот интерпритатор есть в системе, поскольку это sh то он есть.
Собственно все.
ну и
Виктор Таран, Ссылки нет - я как-то давно пробовал ставить SetUID на скрипт, не получилось. Может, с тех пор поменялось...
Проще всего - действительно проверить.
Ужасающе безграмотный текст не вызывает у меня доверие. И упоминание "race condition" тут явно не по теме.