linux中获取root权限 php执行shell

有的时候,通过php做很多系统操作的时候,并不如直接利用bash来的快。php-fpm默认是apache用户,直接改成root账户,是启动不了的。这样的话,apache用户无法执行root才能执行的命令。所以我们要先使php-fpm的启动用户,拥有执行shell的权限,以及shell内部执行命令的权限。

一,获取root权限

1,给具体进程指定无密码访问

# visudo       //添加以下内容,文件最下面有例子,照着写 
apache ALL=(ALL) NOPASSWD:/etc/init.d/srs 
调用的时候

$result = shell_exec("/usr/bin/sudo /etc/init.d/srs start"); 
2,批定用户无需密码,切换root账号
# visudo 
apache ALL=(ALL) NOPASSWD: ALL 
直接可以用sudo su切换成root用户,权限远大于上面的方法,权限越大,安全性越低。
3,针对某个shell脚本,开放权限
如果说第一方法,满足不了要求,第二方法权限过大,不安全,那么第三种方法可以试试

# visudo 
apache ALL=(ALL) NOPASSWD: UPLOADVIDEO 
Cmnd_Alias UPLOADVIDEO = /var/www/srs/upload.sh 
调用方法根一般调用方法一样。
还有一点很重要就是visudo时注释掉,#Default requiretty,因为php调用shell时,用不到终端
二,php调用shell怎么调试
不好调试,无log可查,只能看输出,nginx,php的log没有调用shell的相关信息,我有一些以经验,屡试不爽
1,检查php启动用户权限,文件本身能被执行,php启动用户也要能执行该文件的权限。以前遇到过一个情况是,php执行一个shell怎么都执行不了,后来才发面,没有chmod +x操作。
2,php是可以捕获取shell的输出的,但是要知道,不是所有命令执行都是有输出的,也就是说,成功,失败,或者没执行没办法区别,搞不清。这个时候,我们可以shell脚本中输出,用echo就可以。这样我们可以知道,执行到什么地方,可以知道,在什么地方出错了。
3,直接通过su切换到php的启动用户,然后在linux命令行下执行,有人问了,nologin用户无法su,那就直接useradd一个,改一下php的启动用户。如果用php的启动用户测试成功,通过php脚本去执行,基本也是能通过的。
4,在这里要注意一点,路径问题,相对路径和绝对路径,尽量用绝对路径。

时间: 2024-10-28 23:48:56

linux中获取root权限 php执行shell的相关文章

android中获取root权限的方法以及原理(转)

一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的"越狱"有一个更深层次的认识. 二. Root 的介绍 1. Root 的目的 可以让我们拥有掌控手机系统的权限,比如删除一些system/app下面的无用软件,更换开关机铃声和动画,拦截状态栏弹出的广告等. 2. Root的原理介绍 谷歌的android系统管理员用户就叫做root,该帐户拥有整个系统至高无上的权利,它可以访问和修改你手机几乎所有的文件,只有root才具备最高级别

linux中使用root权限都删除不了的文件该怎办?

  在linux系统中,root用户拥有最高权限,可以干任何事情,但是有些时候,root用户却不能删除一个小小的一般文件.其实只要root用户更改下这个文件的属性,还是可以删除的. 1.首先删除一个文件,提示'Operation not permitter',普通用户不能删除; 2.把用户升级到root用户,然后在删除,然后提示'Operation not permitter',居然root用户都无法删除,这个不太科学啊; 3.原来是文件的属性在里面作怪,只要登录超级用户,查看下文件的属性都有哪

android 中APK如何获取root权限?

问题描述 android 中APK如何获取root权限? android APK中如何获取到root权限,从而能切换到执行诸如exec = Runtime.getRuntime().exec(""su -c ""+abspath); 语句?eng版本 具有root权限吗?可是执行时报错:su: uid xxx not allowed to su adb root 和system root有区别吗? user版本如何仅在开发的APK中获取root权限?user版本在我

Android 操作系统获取Root权限 原理详细解析_Android

android root权限破解分析 许多机友新购来的Android机器没有破解过Root权限,无法使用一些需要高权限的软件,以及进行一些高权限的操作,其实破解手机Root权限是比较简单及安全的,破解Root权限的原理就是在手机的/system/bin/或/system/xbin/目录下放置一个可执行文件"su",这是一个二进制文件,相当于电脑上的exe文件,仅仅在系统中置入这个"su"文件是不会给手机的软件或硬件造成任何故障. 下面的代码是android系统原版的

获取Root权限,让你玩转安卓

  疑问一:Root权限是什么? 疑问二:获取Root权限有什么用? 疑问三:如何获得Root权限? 答疑一: Root是Linux等类UNIX系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权利,所有对象他都有可以操作的权利,所以很多黑客在入侵系统的时候,都要把权限提升到Root权限,也就是将自己的非法帐户添加到Root用户组.类比于Administrator是Windows NT内核系统中的超级管理员用户帐户,也拥有最高的权限.但不同的是,在WINDOWS下Administrator

Android 操作系统获取Root权限 原理详细解析

android root权限破解分析 许多机友新购来的Android机器没有破解过Root权限,无法使用一些需要高权限的软件,以及进行一些高权限的操作,其实破解手机Root权限是比较简单及安全的,破解Root权限的原理就是在手机的/system/bin/或/system/xbin/目录下放置一个可执行文件"su",这是一个二进制文件,相当于电脑上的exe文件,仅仅在系统中置入这个"su"文件是不会给手机的软件或硬件造成任何故障. 下面的代码是android系统原版的

linux权限-linux给用户root权限的方法

问题描述 linux给用户root权限的方法 修改/etc/passwd的id值和在/etc/sudoers中增加一列用户名 ALL=(ALL:ALL) ALL 这两个方法有上面区别.除了这两个方法还有其他方法吗?为什么ubuntu第二个方法不行 解决方案 sudo adduser <username> sudo 解决方案二: ubuntu里把用户加到sudo组里去就可以了,当然执行命令还需要sudo 解决方案三: sudo adduser sudo 这个就可以解决你的问题 解决方案四: 把你

新漏洞可获取root权限 所有安卓机躺枪

Android系统的安全问题可以用源源不断来形容,最近一个新的严重漏洞被发现,该漏洞甚至可以获取root权限. 安全专家David Manouchehri日前公布了这个名为脏牛(Dirty COW)的Linux漏洞的源代码,该漏洞允许攻击者在内核操作中不断提升自己的权限并作为合法用户来执行远程代码. 该漏洞由安全专家Phil Oester发现,之后Manouchehri在上周末通过存放在GitHub上的源代码证明同样也能够利用该漏洞入侵Android设备. 相关推特 Manouchehri表示使

Android手机获取root权限并实现关机重启功能的方法

本文实例讲述了Android手机获取root权限并实现关机重启功能的方法,是Android程序设计中非常常见的重要功能.现分享给大家,供大家在Android程序开发中参考之用. 具体功能代码如下: /* * 执行命令 * @param command * 1.获取root权限 "chmod 777 "+getPackageCodePath() * 2.关机 reboot -p * 3.重启 reboot */ public static boolean execCmd(String c