时间:2023-06-02 16:16:41 来源: 人气:
所以只能想办法让 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 截止日期,