PHP调用Linux命令权限不足问题解决方法

业务背景:  yourcmd为我的linux程序,它对权限要求非常严格,当用php去执行yourcmd程序

系统:CentOS 6.3

apache是php的执行用户

用exec函数去执行linux系统上的程序/usr/local/yourcmd/sbin/yourcmd

php代码如下:

代码如下:

<?php
$conf_file = "/var/www/html/webroot/test.tmp";
$command = "sudo /usr/local/yourcmd/sbin/yourcmd -t -f {$conf_file}";
exec($command,$out);
print_r($out);

测试结果为没有权限

代码如下:

Array ( [0] => sudo: no tty present and no askpass program specified )

解决步骤:


代码如下:

$ visudo

1)注释以下行

代码如下:

#Defaults    requiretty

2)在文件末尾加入以下

代码如下:

apache ALL=(ALL) NOPASSWD: ALL
Cmnd_Alias yourcmd = /usr/local/yourcmd/sbin/yourcmd

最后测试结果

代码如下:

Array ( [0] => Warning: memory is too small: 1044725760 [1] => test configure is ok )

(0)

相关推荐

  • 如何在Apache和Nginx禁止上传目录里PHP的执行权限

    Apache下禁止指定目录运行PHP脚本 在虚拟主机配置文件中增加php_flag engine off指令即可,配置如下: Options FollowSymLinks AllowOverride None Order allow,deny Allow from all php_flag engine off 另外一种方法,是设置在htaccess里面的,这个方法比较灵活一点,针对那些没有apapche安全操作权限的网站管理员: Apache环境规则内容如下:Apache执行php脚本限制 把

  • 理清PHP在Linxu下执行时的文件权限方法

    一.文件权限及所属 1.文件有三种类型的权限,为了方便期间,可以用数字来代替,这样可以通过数字的加减,用一个数字就能标识这个文件的权限了,例如7=4+2+1,表示读写执行3个权限都有,6=4+2,表示有读写权限没有执行权限等等 2.联想web应用的rbac权限管理等,linux下同样有用户权限的管理,用户有用户名和用户组,一般创建用户时同时会创建同名的用户所属组. 先root账号登录随便新建一个目录和一个文件 #新建目录 mkdir abc #新建文件 touch abc.txt #查看 ls

  • 让PHP以ROOT权限执行系统命令的方法

    用来作为解决php以root权限执行一些普通用户不能执行的命令或应用的参考. 其实php里的popen()函数是可以解决这个问题的,但是由于某些版本的linux(如我使用的Centos 5)对系统安全的考虑, 使得这个问题解决起来麻烦了好多.先来看一个网友使用popen()函数的例子. 复制代码 代码如下: /* PHP中如何增加一个系统用户 下面是一段例程,增加一个名字为james的用户, root密码是 louis.仅供参考 */ $sucommand = "su root --comman

  • PHP调用Linux命令权限不足问题解决方法

    业务背景:  yourcmd为我的linux程序,它对权限要求非常严格,当用php去执行yourcmd程序 系统:CentOS 6.3 apache是php的执行用户 用exec函数去执行linux系统上的程序/usr/local/yourcmd/sbin/yourcmd php代码如下: 复制代码 代码如下: <?php $conf_file = "/var/www/html/webroot/test.tmp"; $command = "sudo /usr/local

  • 快速自学Linux命令的4种方法

    如果你想成为Linux高手,那么掌握一些Linux命令是必不可少的.下面是自学Linux命令的4种方法. 一.每日提示 学习Linux命令的一种渐进式方法是:在每次打开终端时,让它显示"每日提示".这会向你介绍一些有用的命令及其高级使用技巧. 在.bashrc中(/home/.bashrc)增加如下一行: echo "Did you know that:"; whatis$(ls /bin | shuf -n 1) 你只需要增加这行就够了!如果你想让它更娱乐化一些,

  • 在Python中调用Ping命令,批量IP的方法

    如下所示: #!/usr/bin/env python #coding:UTF-8 ''''''' Author: jefferchen@163.com 可在命令行直接带目的IP,也可将IP列表在文本文件中. pingip.py -d DestIP DestIP示例: a)单个: 192.168.11.1 b)多个: 192.168.11.1;172.16.8.1;176.13.18.2 c)网段: 192.168.11.1-127 文本文件:ip.txt 目的IP多行存储 ''''''' im

  • SpringBoot 监控管理模块actuator没有权限的问题解决方法

    SpringBoot 1.5.9 版本加入actuator依赖后,访问/beans 等敏感的信息时候报错,如下 Tue Mar 07 21:18:57 GMT+08:00 2017 There was an unexpected error (type=Unauthorized, status=401). Full authentication is required to access this resource. 肯定是权限问题了.有两种方式: 1.关闭权限:application.prop

  • golang代码中调用Linux命令

    目录 传统方案--crontab 分布式任务调度 go执行shell命令 实际我们在golang代码中调用Linux命令 1.普通调用 2.结合协程调用,可控制中断调用 传统方案--crontab 缺点 配置任务时,需要SSh登录脚本服务器进行操作 服务器宕机,任务将终止调度,需要人工迁移 排查问题低效,无法方便的查看任务状态与错误输出 分布式任务调度 优点 可视化Web后台,方便进行任务管理 分布式架构.集群化调度,不存在单点故障 追踪任务执行状态,采集任务输出,可视化log查看 go执行sh

  • 利用Golang如何调用Linux命令详解

    本文介绍的是Golang使用 os/exec 来执行 Linux 命令,分享出来供大家参考学习,下面来看看详细的介绍: 下面是一个简单的示例: package main import ( "fmt" "io/ioutil" "os/exec" ) func main() { cmd := exec.Command("/bin/bash", "-c", `df -lh`) //创建获取命令输出管道 stdou

  • Erlang中执行linux命令的两种方法

    os.cmd(Cmd) os模块提供了cmd函数可以执行linux系统shell命令(也可以执行windows命令).返回一个Cmd命令的标准输出字符串结果.例如在linux系统中执行os:cmd("date"). 返回linux的时间. 这种比较简单,一般情况下,也满足了大部分需求. erlang:open_port(PortName, PortSettings) 当os.cmd(Cmd) 满足不了你的需求的时候,就可以用强大的open_port(PortName, PortSett

  • PHP mkdir()无写权限的问题解决方法

    使用mkdir创建文件夹时,发现这个函数有两个参数,第二个参数是为新创建的文件夹指定权限. 但是如果直接用mkdir('文件地址', 0777);时 发现新文件夹的权限并不是777,一般情况下会是022. 因为mkdir在给文件夹制定权限时,会跟当前登录操作系统用户的umask(用户缺省权限属 性)值进行位"与",得到的值才是最终权限值. umask 是什么? 我们创建文件的默认权限是怎么来的?如何改变这个默认权限呢? 当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是

  • perl调用外部命令(g)awk的方法

    但是,linux系统的常用小工具awk天生对列操作友好,有时直接在perl中调用awk比写相应的perl脚本要方便有效的多.比如用system插入awk语句: 复制代码 代码如下: system(gawk '{print $1}' $filename); 执行该l语句,你会发现这行会报错,提示你使用了read-only 的变量$1.那么,如何处理两种生态系统下的冲突呢?有一个简单的解决办法: 复制代码 代码如下: my $i="$1";system(gawk '{print $i}'

  • Go语言中调用外部命令的方法总结

    目录 引子 运行命令 显示输出 显示到标准输出 输出到文件 发送到网络 保存到内存对象中 输出到多个目的地 运行命令,获取输出 分别获取标准输出和标准错误 标准输入 环境变量 检查命令是否存在 封装 总结 引子 在工作中,我时不时地会需要在Go中调用外部命令.前段时间我做了一个工具,在钉钉群中添加了一个机器人,@这个机器人可以让它执行一些写好的脚本程序完成指定的任务.机器人倒是不难,照着钉钉开发者文档添加好机器人,然后@这个机器人就会向一个你指定的服务器发送一个POST请求,请求中会附带文本消息

随机推荐