COMMENTS

利用sudo为PHP批特权

有时候需要在web上执行一些特殊的终端命令。例如ps,为了在web上显示出当前的进程列表,因为我经常做一些系统方面的编程,所以有时候就不得不做这些高危险性的事情。用下边的方法就可以允许php用exec,system等函数来执行这些终端命令。
键入命令visudo,打开sudoers文件,编辑该文件
注释掉Defaults requiretty一行,并在文件末尾追加Apache ALL=NOPASSWD:/bin/ps
这样,在php中就可以用类似这样的语句去执行ps命令exec(”/usr/bin/sudo /bin/ps -e”); ,当然,ps的参数可以随意指定,和在终端下使用一样。需要注意的是这里使用的是apache服务器,不同的web服务器该方法应该不能混用。
不允许php来执行的命令有很多,比如chkconfig,想开启或关闭一个服务,这些只有root才能做的事情,普通用户都是没有权限的,跟何况要php去做。所以同样的会带来安全问题,总之慎用就好。

记之,与大家分享,以备后用。