加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-07-07 15:20:40 所属栏目:PHP教程 来源:互联网
导读:领导要我策划一个网页设计大赛和Flash创作大赛,要求必须实现在线报名和上传作品。通过FreeBSD+Apache+PHP+Mysql+FTP我实现了该要求。 实现在线报名和上传作品的思路是利用网页表单收集用户填写的资料存储到Mysql数据库内,同时以该用户的注册名创建一个FTP
    领导要我策划一个网页设计大赛和Flash创作大赛,要求必须实现在线报名和上传作品。通过FreeBSD+Apache+PHP+Mysql+FTP我实现了该要求。
 
    实现在线报名和上传作品的思路是利用网页表单收集用户填写的资料存储到Mysql数据库内,同时以该用户的注册名创建一个FTP上传账号并创建该用户的相应目录。
 
 
  以下是引用片段:
 
    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] ’
 
    执行之后系统会要求输入管理员密码,输入密码就可以以管理员的身份执行这个命令了。
 
    实现这步操作的主要难点在于如何通过PHP来调用上面这些系统命令去创建一个用户,本例是使用PHP中的popen()函数来实现的,该函数执行指令打开文件,语法是int popen(string command, string mode),其打开的文件只能是单向的,只能读或只能写,对应的“string mode”为’r’或’w’,“string command” 就是命令字符串,在对文件的操作上可使用 fgets()、fgetss()与fputs()函数,本例用fputs()函数往文件里面输入管理员密码。若是开档发生错误将返回 false 值,最后函数要记得调用pclose()关闭。
 
    下面我们来规划一下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
 
  以下是引用片段:
 
   
 
  { $rootpasswd="adminpassword"; //定义管理员密码
 
  $creatuser ="su --login root -c 'echo ".$userpasswd." | pw useradd ".$username." -s /bin/ftponly -g ftpuser –s /bin/ftponly -h 0' "; //这是利用su和pw命令创建用户的用到的字符串
 
 
  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{?>

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读