LINUX.ORG.RU

Как написать скрипт обновления сайта, если часть команд нужно выполнять под рутом?

 , , ,


0

2

Возник такой вопрос: имеется скрипт обновления сайта на Laravel.

Часть команд этого скрипта надо выполнять от определенного пользователя, а часть - от рута.


  • От пользователя выполняются всякие команды artisan, npm, composer.
  • От рута выполняются всякие команды обновления сервисов, установки прав и владельцев.


Последовательность такая, что сначала идут команды от пользвателя (остановка), потом от рута (остановка), потом опять от пользователя (обновление и запуск), потом от рута.

Мне бы хотелось, чтобы все это было сведено в один скрипт.

Вопрос: как это сделать? В sudoers прописывать все возможные комбинации разрешенных команд, которые выполнять через «su -»? Или есть какой-то другой способ?

★★★★★

Ответ на: комментарий от BMX


Для скриптов такой фокус не проходит.
Видимо сам скрипт выполняется от имени владельца, но права не распространяются на все запускаемые из него команды, утилиты, и т.п.



https://wiki.enchtex.info/doc/suid

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

можно небольшую прогу на C написать, которая будет вызывать команды от рута

https://stackoverflow.com/questions/33422004/setuid-bit-and-apt-get-strange-b...

но вообще это дичь, наверное :)

BMX ★★☆
()
Последнее исправление: BMX (всего исправлений: 1)

Не слушай дебила, советующего SUID на shell-скрипт.

Запуская весь скрипт от рута, а в нём sudo -u на пользователя, если лень заморачиваться наоборот.

anonymous
()
Ответ на: комментарий от anonymous

Не слушай дебила, советующего SUID на shell-скрипт.

я не это советовал

Запуская весь скрипт от рута, а в нём sudo -u на пользователя, если лень заморачиваться наоборот.

так ему под пользователем запускать нужно, если я правильно понял

BMX ★★☆
()

Запускай от рута, su -c 'sh' - user и так . Можно запускать через судо наверно, однако мне не нравится идея давать право исполнять команды пользователю от рута.

anonymous
()
Ответ на: комментарий от anonymous

Запуская весь скрипт от рута, а в нём sudo -u на пользователя, если лень заморачиваться наоборот.

Лорчую

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

так ему без sudo нужно, тут либо через бинарник дергать команды, либо вот более простое решение в другой теме предложили: При установке SUID бита на скрипт, whoami показывает пользователя, а не рута (комментарий)

хотя там тоже sudo, может я просто ОП не распарсил

BMX ★★☆
()
Последнее исправление: BMX (всего исправлений: 1)
Ответ на: комментарий от BMX

так ему без sudo нужно

Где? Про sudo ТС писал только что не хочет в sudoers каждую команду прописывать. Но в описанном аноном варианте sudoers трогать не надо, с дефолтным (во всяком случае для debian/ubuntu) конфигом sudo рут и так может выполнять любые команды от любого юзера

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

ок. та я уже понял, что по диагонали читал - тогда suid не советовал бы ему(

BMX ★★☆
()
Ответ на: комментарий от anonymous

я подумал, что у Xintrea проблема в том, чтобы не вводить каждый раз пароль рута/пользователя при запуске скрипта (на что в другом треде дали адекватное решение)

иначе вопрос слишком простым кажется - можно вообще было 2 скрипта написать и вызывать один из другого

BMX ★★☆
()
Последнее исправление: BMX (всего исправлений: 1)
Ответ на: комментарий от BMX

можно небольшую прогу на C написать, которая будет вызывать команды от рута

Такая прога уже написана. sudo называется.

anonymous
()
Ответ на: комментарий от anonymous

вот зачем ты сказал?! была интрига, накал эмоций...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.