【centos】【thinkphp】【laravel】指定其他用户身份执行 php think 或 php artisan 等命令

解决

创建一个shell文件,指定用户,然后要执行 php think xxxphp artisan xxx 等命令的时候,使用这个shell来执行

  • su root 切换到root用户(非必要)
  • cd ~ 进入家目录
  • mkdir bin 自定义一个bin目录
  • cd bin
  • touch tp233 创建一个tp233的文件,不需要后缀
  • vim tp233 编辑这个文件,写入如下内容:
    #! /bin/bash
    
    su -s /bin/bash -c "$1" www
    
  • 保存退出编辑器
  • vim /etc/profile 添加一个环境变量,使我们自定义的命令可以像 php -v 的方式全局调用
  • 打开这个文件后,切换成大写,按两次 G ,跳转到文件底部,添加如下内容:
    export TP233=/root
    export PATH=$TP233/bin:$PATH
    
  • 保存退出编辑器
  • source /etc/profile 刷新环境变量
  • cd /www/wwwroot/my_blog 进入到项目,假设我这个是thinkphp6的项目
  • tp233 'php think make:model User' 使用刚创建的shell执行命令
  • 进入 app/model 目录下 ll 打印一下就可以看到,User.php的所有组和创建者都是www用户了

原理

  • 最关键的是 su -s /bin/bash -c "$1" www 这一句话,su -s 是指定shell,-c "xxx" 指定执行语句,再后面就是指定用户

参考

posted @ 2021-06-11 23:07  蜜蜂老牛黄瓜  阅读(525)  评论(0编辑  收藏  举报