问下我应该用什么用户去执行定时任务?

情况是这样的,
我nginx的进程master是root用户,子进程是nginx用户的,然后我php的进程master是root用户,子进程是www用户的,然后我mysql进程是用户是mysql。然后我的代码用户是project,所有代码都是这个用户控制
然后我想执行定时任务类似这种的

* * * * * root php /www/wwwroot/food-safety-supervision/artisan schedule:run >> /dev/null 2>&1

我现在想知道我应该用哪个用户,是root还是nginx还是www还是project ?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

最佳实践应该是,把项目的所有者和所有组改为 www:www,项目目录权限设置为 775,project 用户加入 www 用户组,执行定时任务用 www 用户。

如果用 root 产生的日志文件 www 无法写入(除非你用把项目权限设置为 777),但 777 是最不推荐的方式!

6个月前 评论
nidongde 6个月前
讨论数量: 5

最佳实践应该是,把项目的所有者和所有组改为 www:www,项目目录权限设置为 775,project 用户加入 www 用户组,执行定时任务用 www 用户。

如果用 root 产生的日志文件 www 无法写入(除非你用把项目权限设置为 777),但 777 是最不推荐的方式!

6个月前 评论
nidongde 6个月前

最佳实践应该是,把项目的所有者和所有组改为 www:www,项目目录权限设置为 775,project 用户加入 www 用户组,执行定时任务用 www 用户。

如果用 root 产生的日志文件 www 无法写入(除非你用把项目权限设置为 777),但 777 是最不推荐的方式!

6个月前 评论
nidongde 6个月前

执行定时任务应该和 FPM 的 worker 进程在一个用户组,如果用 root 用户执行的话,当定时任务创建日志时,所属用户和用户组都是 root ,默认情况下,Laravel 的日志文件权限是 0644 ,即非文件属主用户对文件只有只读权限,会导致日志写入失败。所以,我们一般在 www 用户的 crontab 中添加定时任务,这样能避免很多文件权限引起的问题。

温馨提示: 不管采用哪种方式,其核心就是文件属主创建的文件,必须能被其他合法用户正常使用。其次,项目的整体权限,应尽量保持统一规范。

6个月前 评论

你的php-fpm是哪个用户执行的,或者说 你的php运行是哪个用户,就用那个用户

6个月前 评论

如果有独立的计划任务服务器,用户和用户组你可以自己定义(非root即可,用户建议设置noLoginShell),如果和业务混合部署,建议跟fpm/cli(非fpm框架)用户保持一致即可。

6个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!