|  | 
 
| 转自  http://www.htooy.org/blog/111/php-useradd 论坛里某位童鞋的博客       测试失败,不知道哪里有问题
   
 
 -----------------------------------------------------------------------
 今天在坛子(www.hostloc.com)里看到有人问如何用 php 创建带有效期的 linux 账户,我当时就给回复了一个 php 代码,后来我测试了一下才知道 useradd 这个系统命令之能用root执行.
 所以只能想办法让 webserver 调用这个命令了,平时想要提高权限只有 su 和 sudo 这两个命令,所以我就把思路放在这上面了,可是结果调用了这两个命令后也还是不行,在网上搜了搜知道可以修改 sudo 的配置来达到我想要的效果,好了不再废话了,下面进入正题.
 
 首先 确认是否安装了 sudo 命令
 然后修改 /etc/sudoers
 因为 /etc/sudoers 是只读文件所以要用 visudo 来修改
 在结尾加上一行
 用户名 ALL=NOPASSWD:/usr/sbin/useradd
 其上面的用户名改为你的执行 webserver 程序的用户名
 比如 apache 默认的用户名就是 apache
 
 然后再用下面的php代码就可以了(在主要的地方已经标上注释了)
 PHP代码
  请把<后面的空格去掉,否则无法正常使用) 主要函数说明复制代码 
header("content-Type: text/html; charset=utf-8");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo '< pre>';
$submit                =        $_GET['submit'];
$username        =        $_GET['username'];
$pass                =        $_GET['pass'];
$password        =        crypt($pass); //用crypt将密码加密
$edate                =        $_GET['edate'];
$self                =        $_SERVER['PHP_SELF'];
echo '< form methode="GET" action="" >';
echo '   用户名 < input type="text" name="username">< /input>';
echo '   密码 < input type="text" name="pass">< /input>';
echo '   有效期 < input type="text" name="edate">< /input>';
echo '   < input type="submit" class="ssubmit" name="submit" value="submit">< /input>';
echo '< /form>';
If ($submit == "submit")
{
        $expire_date = date("Y-m-d",time()+($edate*24*60*60));
        echo $username;//用户名
        echo '< br/>';
        echo $pass;//密码明文
        echo '< br/>';
        echo $edate;//有效期
        echo '< br/>';
        echo $expire_date;//截止日期
        echo '< br/>';
        system("/usr/bin/sudo /usr/sbin/useradd -e $expire_date -p $password $username");
}
echo '< /pre>';
我是用的lnmp 没有apache ,所以测试的时候就把www用户复制代码 
$username  用户名
$pass  密码明文
$password  用crypt将密码加密
$edate  有效期
$expire_date  截止日期
结果 http://ua.xiaod.in/复制代码www ALL=NOPASSWD:/usr/sbin/useradd
填入账号密码和月数点提交后
 vps上实际没有添加成功。google了半天,也大多问为什么开不了,理论上好像是木有问题滴。。。。。
 
 [ 本帖最后由 WAKAKA 于 2010-8-6 10:23 编辑 ]
 | 
 |