首页 > 系统相关 >php:在linux上用sudo提升权限(centos 8 / PHP 7.4.2)

php:在linux上用sudo提升权限(centos 8 / PHP 7.4.2)

时间:2022-11-05 18:56:36浏览次数:68  
标签:centos sudo user easy home lhdop img2 php

一,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

说明:作者:刘宏缔 邮箱: [email protected]

二,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

三,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,sudo,user,easy,home,lhdop,img2,php
From: https://www.cnblogs.com/architectforest/p/16860835.html

相关文章

  • Thinkphp6笔记十九:加载自定义配置
    适用场景:加载自己的某些配置1.创建配置文件app/config/test.php或者app/admin/test.php<?phpreturn['rule'=>['alibaba'=>[],'ebay'=>[],......
  • Centos7安装MySQL
    一、卸载系统自带的mariadb1、查看系统自带的mariadbrpm-qa|grepmariadb   2、卸载rpm-e--nodeps mariadb-libs-5.5.68-1.el7.x86_64二、mysql安装1、......
  • CentOS 7(Linux)安装Docker
    CentOS7(Linux)安装Docker一、分别执行下列命令添加并更新yum源    yum update    yuminstallepel-release-y    yumcleanall    y......
  • php实现生成并下载word文件到本地
    要给最常用出租屋管理系统增加个合同功能,mark下知识点。要生成合同就需要使用phpword。安装phpword包通过composer安装phpword包。因为是使用thinkphp架构,安装挺方便的......
  • php原生类
    php原生类前言在php中除了php内置函数还有很多内置类,这些内置类可以和内置函数一样调用。看一下php内置类中可用的魔术方法<?php$classes=get_declared_classes();......
  • php 解压zip 格式的文件
    <?php/***function:解压zip格式的文件*/classUnzip{publicfunction__construct(){//initcodehere...header("content-type......
  • PHP WEB怎么实现大文件上传
    ​PHP用超级全局变量数组$_FILES来记录文件上传相关信息的。1.file_uploads=on/off 是否允许通过http方式上传文件2.max_execution_time=30 允许脚本最大执行时间......
  • php注解使用示例
    今天看到php注解的介绍文章很感兴趣,动手实际试了试挺好玩,写这篇文章记录下php从8开始支持原生注解功能了,我们可以写个小的例子看看注解怎么玩。 先确定我们的任务目标......
  • Centos9网卡配置
    Centos9网卡配置文件已修改,如下[root@bogon~]#cat/etc/NetworkManager/system-connections/ens18.nmconnection[connection]id=ens18uuid=8d1ece55-d999-3c97-866b-d2e......
  • Linux磁盘挂载(CentOS 7)
    例如我们这里挂一个50G的磁盘到服务器首先查看可挂载磁盘情况[root@yanshi/]#fdisk-l磁盘/dev/sda:32.2GB,32212254720字节,62914560个扇区Units=扇区of1......