php:在linux上用sudo提升权限(centos 8 / PHP 7.4.2)
2023-09-14 08:59:32 时间
一,php中查看当前用户:
php代码:
public function ocr() { $daemon_user = getenv('USERNAME') ?: getenv('USER'); $script_user = get_current_user(); return Result::Success(["daemon_user"=>$daemon_user,"script_user"=>$script_user]); }
访问时返回:
{
code: 0,
msg: "success",
data:{
daemon_user: "nginx",
script_user: "lhdop",
}
}
说明:daemon_user是正在执行当前脚本的用户,通常是php-fpm.conf中指定的user/group
script_user是脚本文件的owner,可以通过以下命令查看:
[root@blog controller]# ll total 24 -rw-rw-r-- 1 lhdop lhdop 1582 Oct 20 15:13 Auth.php -rw-rw-r-- 1 lhdop lhdop 1610 Oct 20 15:13 Home.php -rw-rw-r-- 1 lhdop lhdop 11804 Nov 5 18:08 Image.php -rw-rw-r-- 1 lhdop lhdop 1308 Oct 20 15:13 Index.php
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
或: https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,linux中配置sudo
1,python脚本
easy.py
import easyocr import sys reader = easyocr.Reader(['ch_sim','en'], gpu = False,verbose = False) path = sys.argv[1] result = reader.readtext(r''+path) print(result)
返回:
[lhdop@blog img2]$ python3 easy.py /home/lhdop/img2/text.jpeg [([[237, 41], [387, 41], [387, 127], [237, 127]], '推文', 0.9029050204465915), ([[36, 443], [761, 443], [761, 558], [36, 558]], '今天听到一个笑话:', 0.7776902087822264), ([[798,....
2,bash脚本
easy.sh
#!/bin/bash /usr/bin/python3 /home/lhdop/img2/easy.py ${1}
说明:使用bash脚本是为了在sudoers中只允许执行指定的脚本,避免安全问题
执行:
[lhdop@blog img2]$ /home/lhdop/img2/easy.sh /home/lhdop/img2/text.jpeg [([[237, 41], [387, 41], [387, 127], [237, 127]], '推文', 0.9029050204465915),
([[36, 443], [761, 443], [761, 558], [36, 558]], '今天听到一个笑话:', 0.7776902087822264),
([[798,448], [894, 448], [894, 552], [798, 552]], '美', 0.9923826635401589),
([[40, 562], [675, 562], [675, 674], [40, 674]], '国捅了欧盟一刀,', 0.6283286688234799),
...]
3,配置sudoers
[root@blog ~]# visudo
在root ALL=(ALL) ALL 一行后增加一行:
nginx ALL=(ALL) NOPASSWD:/home/lhdop/img2/easy.sh
如下:
root ALL=(ALL) ALL nginx ALL=(ALL) NOPASSWD:/home/lhdop/img2/easy.sh
NOPASSWD:表示执行后面的脚本时不需要输入密码
ALL:可以从任何主机运行
(ALL):作为谁执行,ALL
(ALL):作为谁执行,ALL
三,php调用sudo脚本
public function ocr() { $daemon_user = getenv('USERNAME') ?: getenv('USER'); $script_user = get_current_user(); $cmdtmb="sudo -u lhdop /home/lhdop/img2/easy.sh /home/lhdop/img2/text.jpeg"." 2>&1"; $rettmb=shell_exec($cmdtmb); return Result::Success(["daemon_user"=>$daemon_user,"script_user"=>$script_user,"cmd"=>$cmdtmb,"ret"=>$rettmb]); }
返回:
{ code: 0, msg: "success", data:{ daemon_user: "nginx", cmd: "sudo -u lhdop /home/lhdop/img2/easy.sh /home/lhdop/img2/text.jpeg 2>&1", script_user: "lhdop", msg: "this is home", ret: "[([[237, 41], [387, 41], [387, 127], [237, 127]], '推文', 0.9029050204465915),
([[36, 443], [761, 443], [761, 558], [36, 558]], '今天听到一个笑话:', 0.7776902087822264),
([[798, 448], [894, 448], [894, 552], [798, 552]], '美', 0.9923826635401589),
([[40, 562], [675, 562], [675, 674], [40, 674]], '国捅了欧盟一刀,', 0.6283286688234799),
...] " } }
四,查看php和linux版本:
查看linux版本
[root@blog ~]# more /etc/redhat-release CentOS Linux release 8.0.1905 (Core)
查看php版本
[root@blog ~]# /usr/local/soft/php7/bin/php --version PHP 7.4.2 (cli) (built: Apr 20 2022 16:49:58) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies
相关文章
- CentOS 8.1下搭建LEMP(Linux+Nginx+MySQL+PHP)环境(教程详解)
- Linux下批量删除用户的方法(linux批量删除用户)
- 马士兵Linux教程:初步掌握步骤(马士兵linux教程)
- php在Linux上的配置与使用(php配置linux)
- 如何在Linux中配置PHP(linux怎么配置php)
- Linux下切换至中文环境(linux切换中文)
- 深入探索Linux文件中的宝藏(查找linux文件内容)
- 在Linux系统中使用中文:一步一步轻松完成(linux中文方框)
- 在 Linux 上安装 PHP 快速指南(linux下载php)
- Linux搭建PHP网站实现快速上线(linux架设php网站)
- 迈出新步伐:Linux下快速PHP升级(linux下php升级)
- 安装Linux下的XAMPP环境(linux安装xampp)
- 学习Linux脚本,打开新的大门(linux脚本学习)
- Linux安装GDB:一步一步进行(linux安装gdb)
- 备份数据库Linux下 Expdp实现高效数据库备份(linux下expdp)
- CentOS下关闭Linux防火墙的指南(关闭linux的防火墙)
- 如何在Linux上安装最佳播放器(linux安装播放器)
- 「Linux的最小化快捷键一览」(linux最小化快捷键)
- 使用PHP连接Linux,轻松实现物联网设备管理。(php连接linux)
- Linux IPC技术简介(ipclinux)
- Linux用户修改,轻松搞定!(linux修改user)
- 学习PHP提升Linux技能(php学linux)
- Linux服务器搭建:建立强大的IT环境(搭建linux环境)
- 脚本定时执行PHP脚本任务:Linux下的解决方案(linux定时php)
- 开启Linux之旅:学习LINUX系统登录(linux系统登录)
- 如何查询 Linux 系统位数?(查询linux位数)
- 如何在Linux终端中设置不同颜色的字体?(linux终端颜色)
- 使用PHP编辑器轻松编写Linux平台代码(php编辑器linux)
- Linux挂载Windows共享:实现无缝网络体验(linux挂载windows共享)