Может ли 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, запущенным от своего имени.