选择显示字体大小

在php中以root身份运行外部命令

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 ’正在创建用户<$username>...’; 
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 


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons