今天在坛子(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代码:(请把<后面的空格去掉,否则无法正常使用)

  1. header("content-Type: text/html; charset=utf-8");
  2. header("Cache-Control: no-cache, must-revalidate");
  3. header("Pragma: no-cache");
  4. echo '< pre>';
  5. $submit                =        $_GET['submit'];
  6. $username        =        $_GET['username'];
  7. $pass                =        $_GET['pass'];
  8. $password        =        crypt($pass); //用crypt将密码加密
  9. $edate                =        $_GET['edate'];
  10. $self                =        $_SERVER['PHP_SELF'];
  11. echo '< form methode="GET" action="" >';
  12. echo '   用户名 < input type="text" name="username">< /input>';
  13. echo '   密码 < input type="text" name="pass">< /input>';
  14. echo '   有效期 < input type="text" name="edate">< /input>';
  15. echo '   < input type="submit" class="ssubmit" name="submit" value="submit">< /input>';
  16. echo '< /form>';
  17. If ($submit == "submit")
  18. {
  19.         $expire_date = date("Y-m-d",time()+($edate*24*60*60));
  20.         echo $username;//用户名
  21.         echo '< br/>';
  22.         echo $pass;//密码明文
  23.         echo '< br/>';
  24.         echo $edate;//有效期
  25.         echo '< br/>';
  26.         echo $expire_date;//截止日期
  27.         echo '< br/>';
  28.         system("/usr/bin/sudo /usr/sbin/useradd -e $expire_date -p $password $username");
  29. }
  30. echo '< /pre>';

主要函数说明
  1. $username  用户名
  2. $pass  密码明文
  3. $password  用crypt将密码加密
  4. $edate  有效期
  5. $expire_date  截止日期

本站文章除注明转载外,均为本站原创编译。
本站采用创作共享版权协议, 要求署名、非商业性使用和相同方式共享.
本站欢迎任何非商业应用的转载, 但须注明出自"HTOOY.ORG", 保留原始链接, 此外还必须标注原文标题和链接。
[ 既然来了,就再多踩一踩,顺便再留个小爪印吧!(*^__^*) …… ]