我/etc/crontab
看到这样的工作:
15 15 * * * root /usr/local/bin/php /path/to/script.php
那么,通过一些其他设置,运行时这个 php 脚本就没有 root 权限吗?
我的系统管理员说,它是安全的,PHP 脚本没有 root 访问权限。但我对此表示怀疑。
答案1
如果您想避免脚本以 root 身份运行,请使用以下命令:
15 15 * * * anotheruser /usr/local/bin/php /path/to/script.php
在您的版本中,脚本确实以 root 身份运行。cron 行明确说明了这一点。
我猜您的系统管理员和您之间有一个误解,他的意思是:
如果 php-fpm 或 apache-mod-php 运行该脚本,它将以用户 php-fpm 或 apache 的身份运行。
答案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-task 中:
15 15 * * * root sudo -u user1 -H /usr/local/bin/php /path/to/script.php