首页 > 系统 > Linux > 正文

php创建带有效期的linux账户

2020-06-13 12:35:48
字体:
来源:转载
供稿:网友
看到有人问如何用 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>'; 

主要函数说明 

复制代码
代码如下:

$username 用户名 
$pass 密码明文 
$password 用crypt将密码加密 
$edate 有效期 
$expire_date 截止日期 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表