LINUX.ORG.RU

Сама команда от кого запускаться должна? От рута? Ну как-то так можно:

sudo php /var/www/update.php | sudo -u dima tee -a /var/www/logs/update.log

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

От рута, но должно все работать от dima, в том числе создание файлов. Или проще запускать сам скрипт sudo -u dima update.sh ? Раньше так и было, но решил сократить

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

Ну вот если надо, чтобы данные из файла уже записывались от юзера dima, можно использовать tee (запущенный от нужного пользователя). Ну или tee -a, если надо чтобы дописывалось, а не переписывалось. От кого запущены предыдущие команды перед пайпом в данном случае значения не имеет. Почему tee, а не >> — да потому что >> не команда, и её через sudo запустить не выйдет, запись будет производиться под тем пользователем, от которого запущен шелл.

То есть если у тебя php должен запускатья от рута, и запускаешь вообще всю эту строку ты от рута, то:

php /var/www/update.php | sudo -u dima tee -a /var/www/logs/update.log

Если php должен запускатья от dima (а команду изначально ты запускаешь от рута, то либо:

sudo -u dima php /var/www/update.php | sudo -u dima tee -a /var/www/logs/update.log
либо в скрипт, и скрипт запускать через sudo -u dima

Ну или несколько извращённый вариант

sudo -u dima bash -c 'php /var/www/update.php >> /var/www/logs/update.log'

Psych218 ★★★★★ ()
Последнее исправление: Psych218 (всего исправлений: 3)

Перенаправление осуществляется снаружи sudo - его делает сам шелл. То есть грубо говоря ты перенаправляешь выхлоп команды setsid, которая запускается догадайся из под кого :-)

Попробуй так:

setsid sudo -u dima bash -c 'php /var/www/update.php >> /var/www/logs/update.log' &

P.S. Тред не читай - сразу отвечай, выше IPR уже всё подсказал

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.