设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 站长学院 > PHP教程 > 正文

用PHP完成Ftp用户的在线管理

发布时间:2022-01-17 13:11 所属栏目:121 来源:互联网
导读:领导要我策划一个网页设计大赛和Flash创作大赛,要求必须实现在线报名和上传作品。通过FreeBSD+Apache+PHP+Mysql+FTP我实现了该要求。 Ftp服务器是系统默认带的,采用系统用户的用户名和密码,创建系统用户就等于创建FTP用户,FreeBSD是属于UNIX阵营的操作系
  领导要我策划一个网页设计大赛和Flash创作大赛,要求必须实现在线报名和上传作品。通过FreeBSD+Apache+PHP+Mysql+FTP我实现了该要求。
 
  Ftp服务器是系统默认带的,采用系统用户的用户名和密码,创建系统用户就等于创建FTP用户,FreeBSD是属于UNIX阵营的操作系统,它没有象Linux一样的useradd和groupadd等创建用户和组的命令,其取而代之的是pw命令加上相应参数来实现,在Freebsd上以管理员的身份创建一个用户的命令是
 
以下是引用片段:
 
  echo | pw useradd [-g][groupname] [-s][shelldir][-h 0]
 
  参数g指定用户组,参数s指定用户的shell。
 
  如果是普通用户登陆的话还必须用到su命令,调用的方法是
 
以下是引用片段:
 
  su root –c ‘echo | pw useradd [-g][groupname] [-s][shelldir][-h 0] ’
 
  执行之后系统会要求输入管理员密码,输入密码就可以以管理员的身份执行这个命令了。
 
  下面我们来规划一下FTP用户的组,事先我们先用pw groupadd ftpuser创建ftpuse组,让在线申请的用户为这个组的成员。为了安全起见,我们不应该给FTP用户Telnet权限,所以我们还要专门给他们创建一个shell,使得他们不能通过Telnet正常登陆系统,方法如下:先创建一个文件/bin/ftponly
 
以下是引用片段:
 
  #!/bin/csh
 
  /bin/cat << XX
 
  You can ony use this username to login ftp server!
 
  And you can not use it to telnet to this system! XX
 
  sleep 10
 
  该文件中XX之间就是显示给用telnet登陆的用户看的信息。信息显示10秒钟就自动退出了。最后不要忘记用chmod +x /bin/ftponly给这个文件可执行属性。
 
  然后在/bin/shell文件中添加“/bin/ftponly”,在以后的命令里面我们就可以利用pw中-s参数把这个shell指定给FTP用户了。
 
  最后还要注意一个问题,su命令仅仅是wheel管理组的用户成员才可以使用,当PHP调用su命令的时候也必须以wheel组成员的身份运行,否则系统拒绝运行,而PHP运行系统命令的身份就是Apache Web服务器运行的身份,初始的用户名和用户组都是nobody,所以先得建立一个wheel组的用户www供apache使用,接着更改Apache的配置文件httpd.conf中的user为www,group为wheel,重新启动Apache,就可以以新用户身份运行了。
 
下面可以创建PHP源文件checkin.php了,代码如下:
 
以下是引用片段:
 
 
 
{ $rootpasswd="adminpassword"; //定义管理员密码
 
$creatuser ="su --login root -c 'echo ".$userpasswd." | pw useradd ".$username." -s /bin/ftponly -g ftpuser –s /bin/ftponly -h 0' "; //这是利用su和pw命令创建用户的用到的字符串
 
$fp=popen($creatuser,"w"); //调用popen()函数执行字符串中的命令,返回文句柄给$fp
 
fputs($fp,$rootpasswd); //写入管理员密码到文件$fp,相当于输入密码给系统
 
pclose($fp);//关闭文件
 
$creatdir="su --login root -c 'mkdir /home/".$username."'";//创建用户目录的命令字符串
 
$fp=popen($creatdir,"w");//执行命令创建用户目录
 
fputs($fp,$rootpasswd); //输入管理员密码
 
pclose($fp);
 
$creatdir="su --login root -c 'mkdir /home/".$username."/public_html'";
 
$fp=popen($creatdir,"w"); //执行命令创建用户网站根目录
 
fputs($fp,$rootpasswd); //输入管理员密码
 
pclose($fp);
 
$creatdir="su --login root -c 'chown ".$username." /home/".$username."'"; //改变用户目录的所有者为用户自己,初始为运行Apache的用户www。
 
$fp=popen($creatdir,"w"); //执行命令
 
fputs($fp,$rootpasswd); //输入管理员密码
 
pclose($fp);
 
$creatdir="su --login root -c 'chown ".$username." /home/".$username."/public_html'"; //改变网站根目录的归属
 
$fp=popen($creatdir,"w");
 
fputs($fp,$rootpasswd);
 
pclose($fp);
 
echo "恭喜".$username.",您的的FTP账号已经申请成功!请到FTP上登陆,请注意,您没有Telnet权限";}
 
else{?>

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读