php创建带有效期的linux账户
发布时间:2010-12-20 18:56:00 作者:佚名
我要评论
看到有人问如何用 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 截止日期
首先 确认是否安装了 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 截止日期
相关文章

集成系统级Claw模式! Deepin 官宣发布 25.1 版本
deepin操作系统发布了最新的 25.1 版本更新,该版本基于 deepin 25 正式版积累的多轮内测成果,在 AI 能力、内核版本、桌面环境、文件管理器以及系统安全等方面进行了更新2026-04-13
又一代老硬件退场! Linux 内核正式放弃Intel 486 CPU
在过去的几十年间,CPU 的架构已经经历了飞速发展,x86 系列就是其中之一,而 i486 则属于该系列中的一个,当前,i486 的CPU处理器已经够老,从 Linux 7.1 开始将不再有对2026-04-09
我把 Linux 中最常用、最实用、最常被问到的命令按照实际使用场景分类整理,方便你快速查阅和记忆,内容覆盖日常运维、开发调试、性能分析、文件处理、网络、安全、系统管2026-04-08
一分钟内检查Linux服务器性能? 9个性能检测常用的基本命令
今天我们来看看Linux系统中用于性能监控的一系列命令,这些命令可以快速查看机器的负载情况,详细请看下文介绍2026-03-18
Linux作为操作系统领域灵活性和可定制性的基石,提供了大量满足不同用户需求的发行版,今天分享适合高级用户的15款Linux发行版2026-03-10
开箱即用? 这4个高手级Linux发行版远没你想象的那么安全易用
如果你正在纠结用哪个发行版?零基础新手别被“高端”“极客”“声明式”这些词冲昏头脑,先用好用的,再慢慢进阶2026-03-10
这几款SSH工具真的够用了! Linux好用的ssh工具推荐
在Linux上使用SSH,您需要安装一个SSH客户端,今天整理找到的8 款 SSH / 终端工具,从免费开源到企业级商用,从轻量化命令行到一站式工具箱,每款都做了介绍与对比,希望能2026-03-09
在Linux系统下有两种用户,即高级用户root,普通用户,高级用户root可以在系统中做任何事情,普通用户仅可在Linux系统中做有限的事情,下面我们就来看看切换方法2026-02-28
揭秘当前登录用户的身份! Linux中使用logname命令的技巧
logname命令就是这样一个简单但强大的工具,它能帮助我们轻松获取当前登录用户的用户名,今天,我们就来深入探索一下这个命令的工作原理、使用方法和最佳实践2026-02-26
在 Linux 系统中,DNS 缓存是一种将域名和 IP 地址映射关系缓存在本地的机制,可以加快域名解析速度,并减轻 DNS 服务器的负载2026-02-26




最新评论