Может ли PHP не иметь прав root, если он запускается через задание root cron?

В /etc/crontab я вижу такую ​​работу:

15 15 * * * root /usr/local/bin/php /path/to/script.php

Итак, с некоторыми другими настройками, cat этот скрипт php не имеет root-доступа, когда запущен?

Мой системный администратор говорит, что это безопасно, и PHP-скрипт не имеет root-доступа. Но я сомневаюсь.

2 ответа

Я бы использовал оболочку для сценария. то есть:

#!/bin/bash
RUNAS=user1

if [ "${USER}" == "root" ]
then
  # use sudo to change user
  sudo -u $RUNAS -H /usr/local/bin/php /path/to/script.php
else
  # run as the current user
  /usr/local/bin/php /path/to/script.php
fi

в противном случае вы можете просто добавить sudo к задаче cron:

15 15  *   *   *   root    sudo -u user1 -H /usr/local/bin/php /path/to/script.php

Используйте что-то вроде этого, если вы хотите избежать запуска скрипта от имени root:

15 15  *   *   *   anotheruser    /usr/local/bin/php /path/to/script.php

В вашей версии скрипт INDEED запускается как root. Строка cron говорит об этом прямо.
Я думаю, что ваш системный администратор и у вас было недоразумение, и он имел в виду это:
если php-fpm или apache-mod-php запустят скрипт, он запустится с пользователем php-fpm или apache, запущенным от своего имени.

Другие вопросы по тегам