实例:用PHP实现Ftp用户的在线管理

2016-01-29 12:53 22 1 收藏

实例:用PHP实现Ftp用户的在线管理,实例:用PHP实现Ftp用户的在线管理

【 tulaoshi.com - PHP 】

  领导要我策划一个网页设计大赛和Flash创作大赛,要求必须实现在线报名和上传作品。通过FreeBSD+Apache+PHP+Mysql+FTP我实现了该要求。

  实现在线报名和上传作品的思路是利用网页表单收集用户填写的资料存储到Mysql数据库内,同时以该用户的注册名创建一个FTP上传账号并创建该用户的相应目录。

  FTP服务器是系统默认带的,采用系统用户的用户名和密码,创建系统用户就等于创建FTP用户,FreeBSD是属于UNIX阵营的操作系统,它没有象Linux一样的useradd和groupadd等创建用户和组的命令,其取而代之的是pw命令加上相应参数来实现,在Freebsd上以管理员的身份创建一个用户的命令是

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)以下是引用片段:
  echo | pw useradd [-g][groupname] [-s][shelldir][-h 0]

  参数g指定用户组,参数s指定用户的shell。

  如果是普通用户登陆的话还必须用到su命令,调用的方法是

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)以下是引用片段:
  su root –c ‘echo | pw useradd [-g][groupname] [-s][shelldir][-h 0] ’

  执行之后系统会要求输入管理员密码,输入密码就可以以管理员的身份执行这个命令了。

  实现这步操作的主要难点在于如何通过PHP来调用上面这些系统命令去创建一个用户,本例是使用PHP中的popen()函数来实现的,该函数执行指令打开文件,语法是int popen(string command, stringmode),其打开的文件只能是单向的,只能读或只能写,对应的“string mode”为’r’或’w’,“string command”就是命令字符串,在对文件的操作上可使用fgets()、fgetss()与fputs()函数,本例用fputs()函数往文件里面输入管理员密码。若是开档发生错误将返回 false值,最后函数要记得调用pclose()关闭。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

  下面我们来规划一下FTP用户的组,事先我们先用pw groupaddftpuser创建ftpuse组,让在线申请的用户为这个组的成员。为了安全起见,我们不应该给FTP用户Telnet权限,所以我们还要专门给他们创建一个shell,使得他们不能通过Telnet正常登陆系统,方法如下:先创建一个文件/bin/ftponly

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)以下是引用片段:
  #!/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运行系统命令的身份就是Apacheweb服务器运行的身份,初始的用户名和用户组都是nobody,所以先得建立一个wheel组的用户www供apache使用,接着更改Apache的配置文件httpd.conf中的user为www,group为wheel,重新启动Apache,就可以以新用户身份运行了。

  下面可以创建PHP源文件checkin.php了,代码如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

来源:http://www.tulaoshi.com/n/20160129/1487989.html

延伸阅读
标签: PHP
  上回说完了商品的列表显示方法。下面来谈谈显示商品详细信息的方法,这与我们在论坛中常用的显示帖子的方法大同小异。 ********显示详细信息的文件*********** detail.php <?php include "config.inc.php"; //显示商品详细信息 //用全局变量来做,可以方便地取到多个字段的值。 //有id,名字,价格,介绍,当前...
标签: PHP
以下是代码列表: -------------------------------------------------------------------------------- <!-- code for index.html begins here -- <html <head <basefont face=arial </head <body <table border=0 align=center <form action="actions.php" method=post <inpu...
标签: PHP
 By Vikram Vaswani Melonfire November 07, 2000    我们是一群PHP的忠实FANS,我们因各种不同的原因使用它-WEB站点的开发,画图,数据库的联接等 -我们发现,它非常的友好,强大而且易于使用   你可能已经看到PHP是怎样被用于创建GIF和JPEG图像,从数据库中动态的获取信息等等,但这只是冰山...
标签: PHP
By Vikram Vaswani Melonfire November 07, 2000 登录了FTP服务器,PHP提供了一些函数,它们能获取一些关于系统和文件以及目录的信息。 ftp_pwd() 如果你想知道你当前所在的目录时,你就要用到这个函数了。 -------------------------------------------------------------------------------- <? // get current...
标签: ASP
  编者(icech)按:这段程序的方法是利用XMLHTTP来读取腾讯网站的相应HTML代码获取QQ的头像,根据这个想法,我们还可以抓取很多其他网站的信息,如天气预报、新闻等等。 <script language="javascript" <!-- function getFaceImg(QQcode) { var Re=new RegExp("^[1-9]{1}\d+$","g"); if (!QQc...