如果通过 root cron 作业运行 PHP,它是否可以没有 root 权限?

如果通过 root cron 作业运行 PHP,它是否可以没有 root 权限?

/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

相关内容