全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 3283|回复: 10
打印 上一主题 下一主题

[疑问] 用php创建带有效期的linux账户 ZT

[复制链接]
跳转到指定楼层
1#
发表于 2010-8-6 09:47:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
转自  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代码请把<后面的空格去掉,否则无法正常使用)



  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  截止日期
复制代码
我是用的lnmp 没有apache ,所以测试的时候就把www用户
  1. www ALL=NOPASSWD:/usr/sbin/useradd
复制代码
结果 http://ua.xiaod.in/
填入账号密码和月数点提交后
vps上实际没有添加成功。google了半天,也大多问为什么开不了,理论上好像是木有问题滴。。。。。

[ 本帖最后由 WAKAKA 于 2010-8-6 10:23 编辑 ]
2#
发表于 2010-8-6 09:56:03 | 只看该作者
su到www用户看看能不能用useradd命令。
3#
 楼主| 发表于 2010-8-6 09:59:30 | 只看该作者
原帖由 Porter 于 2010-8-6 09:56 发表
su到www用户看看能不能用useradd命令。

测试时候忘了重启
重启后在ssh里面 www用户可以使用useradd了,但是浏览器里面还是不行

[ 本帖最后由 WAKAKA 于 2010-8-6 10:19 编辑 ]
4#
发表于 2010-8-6 11:13:17 | 只看该作者
这样做是很危险滴。
5#
发表于 2010-8-6 11:30:24 | 只看该作者
原帖由 Porter 于 2010-8-6 09:56 发表
su到www用户看看能不能用useradd命令。
6#
发表于 2010-8-6 11:49:02 | 只看该作者
…你看看你的
sudo允许的账户和web的账户是都相同

我当时就是用nginx测试的 并且成功的 我在blog发的东西几乎都是测试过得才发的

原帖地址http://fd.vvwvv.eu.org/thread-22009-2-1.html 17楼

我继续呼呼去…
7#
 楼主| 发表于 2010-8-6 11:49:05 | 只看该作者
原帖由 herolee 于 2010-8-6 11:13 发表
这样做是很危险滴。

是滴
灰常危险...
不过我想试试=.=
8#
发表于 2010-8-6 11:50:26 | 只看该作者
原帖由 zyypp 于 2010-8-6 11:49 发表
…你看看你的
sudo允许的账户和web的账户是都相同

我当时就是用nginx测试的 并且成功的 我在blog发的东西几乎都是测试过得才发的

原帖地址http://fd.vvwvv.eu.org/thread-22009-2-1.html 17楼

我继续呼呼去… ...


继续……呼呼…… 那么会睡 哼哼
9#
 楼主| 发表于 2010-8-6 11:53:39 | 只看该作者
原帖由 zyypp 于 2010-8-6 11:49 发表
…你看看你的
sudo允许的账户和web的账户是都相同

我当时就是用nginx测试的 并且成功的 我在blog发的东西几乎都是测试过得才发的

原帖地址http://fd.vvwvv.eu.org/thread-22009-2-1.html 17楼

我继续呼呼去… ...


我的  sudoers 最下面添加了
  1. www ALL=NOPASSWD:/usr/sbin/useradd
复制代码
我的 nginx.conf 最上面是
  1. user  www www;
复制代码
这样 sudo允许的账户和web的账户 是不是就是相同了啊。 别走啊~~
10#
发表于 2010-8-6 18:15:09 | 只看该作者
我又重试了一遍依然正常啊

下面是我重新测试是的步骤刚才的步骤
1、输入 visudo
2、按 shift+g
3、按 o
4、输入 www  ALL=NOPASSWD:/usr/sbin/useradd
5 、按 :wq
6、创建php文件
8、用浏览器打开这个页面并添加账户
9、用cat /etc/shadow 查看用户列表 看最后一行是否有刚才添加的账户
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-10-31 06:53 , Processed in 0.069876 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表