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

情况是这样的,
我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 ?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

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

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

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

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

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

1个月前 评论
nidongde 1个月前

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

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

1个月前 评论
nidongde 1个月前

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

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

1个月前 评论

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

1个月前 评论

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

1个月前 评论

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