在PHP中运行只有root用户才可以运行的外部程序,一直是个老问题,用常规的办法很难实现。这是因为一般情况下,PHP是作为APACHE的一个模块的,也就是说,PHP是APACHE的一部分,而APACHE除了suEXEC机制外,是不能以不同的用户ID来执行命令的,但suEXEC机制只能CGI有效。
网上曾经有一篇文章,说用调用"su - -c COMMAND"可以实现,但经过多次试验,发现不行,因为su命令必须在STDIN上输入root的密码。
怎么办?用常规的方法难以奏效,只能再想其它的方法了。成功的关键在于能有一个可以切换用户ID但又可以在命令上输入密码(或不用输入密码)的工具。有这样的工具吗?有,它就是super。
下面就具体说说如何来做?
要注意的是,安装和配置super,都要以root身份来进行。
第一步,切换到root下
第二步,安装super
先到ftp://ftp.mdtsoft.com/pub/super下载super-3.14.0-1.i386.rpm。这是一个RPM文件,其它包括了两个工具:setuid和super,以及它们的文档和man手册。用下面的命令将它安装到系统中:
% rpm -Uvh super-3.14.0-1.i386.rpm
你还可以用这个命令来查看这个RPM中的文件:
% rpm -qpl super-3.14.0-1.i386.rpm
从结果可以看到,两个工具都将被安装到/bin目录下。
第三步,配置super
super的配置文件是/etc/super.tab。这是一个文本文件,格式也比较复杂。不过,我们这里只要很简单的加上几行就可以了。至于详细的说明,可以通过man super.tab来查看。
假设运行Apache的用户是nobody,我们欲通过super来增加系统用户(调用useradd命令),那么我们只要在super.tab文件中加入以下这行:
auser /sbin/useradd nobody,hunte
第一段是super能够识别的命令的别名;第二段是该别名所对应的系统命令的全路径;第三段是可以运行该命令的用户列表,用逗号分隔。这里除了nobody外,还一个叫hunte的普通用户,是用于下面的测试。当然,你应该用你系统中有的任意一个普通用户。
至此,super的配置就算好了。
第四步,测试
以第三步中指定的非nobody用户登录,运行:
% /bin/super auser testuser
如果前面的配置没什么错误的话,用户testuser应该是成功地创建了。可以用:
% cat /etc/passwd | grep testuser
命令来验证一下。
第五步,在PHP中调用该命令
下面是PHP代码:
if ($username)
{
//应该检查新用户是否已经存在
echo '正在创建用户...';
system(escapeshellcmd("/bin/super auser $username"));
}
?>
使用super,使得在PHP中以root身份运行外部命令不再是难事。试试看吧。
测试环境:RedHat Linux 7.0 (Kernel 2.4.3) Apache 1.3.9 PHP 4.0.4pl1

如何在Linux系统中执行.sh文件?在Linux系统中,.sh文件是一种被称为Shell脚本的文件,用于执行一系列的命令。执行.sh文件是非常常见的操作,本文将介绍如何在Linux系统中执行.sh文件,并提供具体的代码示例。方法一:使用绝对路径执行.sh文件要在Linux系统中执行一个.sh文件,可以使用绝对路径来指定该文件的位置。以下是具体的步骤:打开终

PyCharm是一款非常流行的Python集成开发环境(IDE),它提供了丰富的功能和工具,使得Python开发变得更加高效和便捷。本文将为大家介绍PyCharm的基本操作方法,并提供具体的代码示例,帮助读者快速入门并熟练操作该工具。1.下载和安装PyCharm首先,我们需要前往PyCharm官网(https://www.jetbrains.com/pyc

为什么win7不能运行exe文件在使用Windows7操作系统时,许多用户可能会遇到一个常见的问题,即无法运行exe文件。exe文件是Windows操作系统中常见的可执行文件,它们通常用于安装和运行各种应用程序。然而,有些用户可能会发现,当他们尝试运行exe文件时,系统并不会响应或给出错误信息。造成这个问题的原因有很多。下面将列举一些常见的原因以及相应的解

为什么win7不能运行bat文件最近,许多使用Windows7操作系统的用户反映他们无法运行.bat文件。这引发了广泛的讨论和疑惑。为什么一个良好运行的操作系统不能运行一个简单的.bat文件呢?首先,我们需要了解一下.bat文件的背景。.bat文件,也称为批处理文件,是一种纯文本文件,包含了一系列的命令,这些命令可以被Windows命令解释器(cmd.ex

在Python中,我们可以使用PyExecJS库或Python的js2py库来运行Javascript代码。PyExecJs库提供了一个一致的API,可以使用各种JavaScript引擎(包括Node.js、JavaScriptCore和Google的V8引擎)从Python中运行JavaScript代码。js2py库允许您通过解析JavaScript代码并在Python中解释它来在Python中执行JavaScript代码。本文将教我们如何使用PyExecJS库从Python中运行javasc

大家知道matlab怎么运行m文件吗?下文小编就带来了matlab运行m文件的方法教程,希望对大家能够有所帮助,一起跟着小编来学习一下吧!1、首先打开matlab软件,选择左上角的“打开”,如下图所示。2、然后选择要运行的m文件,并且打开,如下图所示。3、在窗口按F5来运行程序,如下图所示。4、我们可以在命令行窗口和工作区看运行结果,如下图所示。5、直接点击“运行”也可以运行文件,如下图所示。6、最后可以在命令行窗口和工作区看m文件的运行结果,如下图所示。上面就是小编为大家带来的matlab怎么

对于微软公司的新系统windows10,小伙伴就想要知道win10系统哪个版本的操作系统运行的是最快最流畅的,版本的更新其实是对于系统内容功能的更新、缺陷的修复。win10哪个版本运行最快1、win10每个版本的的差别主要在各自功能上2、除了不同功能之外其它方面都是相同的3、在运行速度上win10各个版本都没有很大差别,主要还是看自身电脑的配置~win10家庭版:1、win10家庭版相当于win8.1的核心版,入门级的一个系统版本。2、win10家庭版特定国家版相当于win8.1的OEM中文版,


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver CS6
视觉化网页开发工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中