|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
小知识:Linux同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。
php实行linux体系下令的几个函数:
system函数
申明:实行内部步伐并显现输入材料。
语法:stringsystem(stringcommand,int[return_var]);
前往值:字符串
具体先容:
本函数就像是C语中的函数system(),用来实行指令,并输入了局。如果return_var参数存在,则实行command以后的形态会填进return_var中。一样值得注重的是若必要处置用户输出的材料,而又要避免用户耍把戏破解体系,则可使用EscapeShellCmd()。若PHP以模块式的实行,本函数会在每行输入后主动更新Web办事器的输入缓冲暂存区。若必要完全的前往字符串,且不想经由不用要的别的两头的输入界面,可使用PassThru()。
实例代码:
<?php
$last_line=system(ls,$retval);
echoLastlineoftheoutput:.$last_line;
echo<hr/>Returnvalue:.$retval;
?>
exec函数
申明:实行内部步伐。
语法:stringexec(stringcommand,string[array],int[return_var]);
前往值:字符串
具体先容:
本函数实行输出command的内部步伐或内部指令。它的前往字符串只是内部步伐实行后前往的最初一行;若必要完全的前往字符串,可使用PassThru()这个函数。
如果参数array存在,command会将array加到参数中实行,若不欲array被处置,能够在实行exec()之前呼唤unset()。如果return_var跟array二个参数都存在,则实行command以后的形态会填进return_var中。
值得注重的是若必要处置利用者输出的材料,而又要避免利用者耍把戏破解体系,则可使用EscapeShellCmd()。
实例代码:
<?php
echoexec(whoami);
?>
popen函数
申明:翻开文件。
语法:intpopen(stringcommand,stringmode);
前往值:整数
具体先容:
本函数实行指令开档,而该文件是用管道体例处置的文件。用本函数翻开的文件只能是单向的(只能读或只能写),并且必定要用pclose()封闭。在文件操纵上可以使用fgets()、fgetss()与fputs()。如果开档产生毛病,前往false值。
实例代码:
<?php
$fp=popen("/bin/ls","r");
?>
可是实行的下令要触及权限,举个例子:利用php实行"servicenetworkrestart"下令,重启收集。apache是以一个一样平常用户实行的,我盘算机利用apache用户,基本没有实行这个下令的权限。
办理举措:
1、绕开这个限定:
起首写个c步伐,比方/usr/local/a.c
#include<stdlib.h>
main()
{
uid_tuid,euid;
uid=getuid();
euid=geteuid();
if(setreuid(euid,uid))
perror("setreuid");
system("servicenetworkrestart");
}
编译文件,gcca.c-oa
这时候会在以后目次下天生步伐a
步伐的属主chmodu+s./a。
apache的uid为48。挪用setreuid后将无效用户id和实践用户id交换了。(必需在chmodu+s失效的情形下)使apache以后的uid为0如许就可以实行root下令了。
php步伐挪用a:
<?php
functionRestartNetwork(){
system("/usr/local/a");
}
RestartNetwork();
?>
2、编纂/etc/sudoers文件,大概利用visudo下令
Host_AliasSERVER=localhost,你的主机名
User_AliasUSERLIST=apache用户名
Cmnd_AliasCOMMANDLIST=/sbin/service#增加想让apache用户可使用的下令
#Defaultsrequiretty
......
修正完成后,保留/etc/sudoers只能是0440权限
然后,php就能够利用service下令
<?php
system("sudoservicenetworkrestart");
?>小知识:RHEL是很多大型企业采用的操作系统,但需要向RedHat购买使用权,有偿享受技术支持、版本升级等,所以推荐大家使用CentOS。 |
|