亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 1519 | 回復(fù): 1
打印 上一主題 下一主題

用PHP實(shí)現(xiàn)Ftp用戶(hù)的在線(xiàn)管理 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-02-25 21:20 |只看該作者 |倒序?yàn)g覽
用PHP實(shí)現(xiàn)Ftp用戶(hù)的在線(xiàn)管理








最近接手一案子,要求必須實(shí)現(xiàn)在線(xiàn)報(bào)名和上傳作品。通過(guò)FreeBSD+Apache+PHP+Mysql+FTP我實(shí)現(xiàn)了該要求。

  實(shí)現(xiàn)在線(xiàn)報(bào)名和上傳作品的思路是利用網(wǎng)頁(yè)表單收集用戶(hù)填寫(xiě)的資料存儲(chǔ)到Mysql數(shù)據(jù)庫(kù)內(nèi),同時(shí)以該用戶(hù)的注冊(cè)名創(chuàng)建一個(gè)FTP上傳賬號(hào)并創(chuàng)建該用戶(hù)的相應(yīng)目錄。

  Ftp服務(wù)器是系統(tǒng)默認(rèn)帶的,采用系統(tǒng)用戶(hù)的用戶(hù)名和密碼,創(chuàng)建系統(tǒng)用戶(hù)就等于創(chuàng)建FTP用戶(hù),F(xiàn)reeBSD是屬于UNIX陣營(yíng)的操作系統(tǒng),它沒(méi)有象Linux一樣的useradd和groupadd等創(chuàng)建用戶(hù)和組的命令,其取而代之的是pw命令加上相應(yīng)參數(shù)來(lái)實(shí)現(xiàn),在Freebsd上以管理員的身份創(chuàng)建一個(gè)用戶(hù)的命令是





以下是引用片段:
  echo | pw useradd [-g][groupname] [-s][shelldir][-h 0]


  參數(shù)g指定用戶(hù)組,參數(shù)s指定用戶(hù)的shell。

  如果是普通用戶(hù)登陸的話(huà)還必須用到su命令,調(diào)用的方法是





以下是引用片段:
  su root –c ‘echo | pw useradd [-g][groupname] [-s][shelldir][-h 0] ’


  執(zhí)行之后系統(tǒng)會(huì)要求輸入管理員密碼,輸入密碼就可以以管理員的身份執(zhí)行這個(gè)命令了。

  實(shí)現(xiàn)這步操作的主要難點(diǎn)在于如何通過(guò)PHP來(lái)調(diào)用上面這些系統(tǒng)命令去創(chuàng)建一個(gè)用戶(hù),本例是使用PHP中的popen()函數(shù)來(lái)實(shí)現(xiàn)的,該函數(shù)執(zhí)行指令打開(kāi)文件,語(yǔ)法是int popen(string command, string mode),其打開(kāi)的文件只能是單向的,只能讀或只能寫(xiě),對(duì)應(yīng)的“string mode”為’r’或’w’,“string command” 就是命令字符串,在對(duì)文件的操作上可使用 fgets()、fgetss()與fputs()函數(shù),本例用fputs()函數(shù)往文件里面輸入管理員密碼。若是開(kāi)檔發(fā)生錯(cuò)誤將返回 false 值,最后函數(shù)要記得調(diào)用pclose()關(guān)閉。

  下面我們來(lái)規(guī)劃一下FTP用戶(hù)的組,事先我們先用pw groupadd ftpuser創(chuàng)建ftpuse組,讓在線(xiàn)申請(qǐng)的用戶(hù)為這個(gè)組的成員。為了安全起見(jiàn),我們不應(yīng)該給FTP用戶(hù)Telnet權(quán)限,所以我們還要專(zhuān)門(mén)給他們創(chuàng)建一個(gè)shell,使得他們不能通過(guò)Telnet正常登陸系統(tǒng),方法如下:先創(chuàng)建一個(gè)文件/bin/ftponly





以下是引用片段:
  1.   #!/bin/csh
  2.   /bin/cat << XX
  3.   You can ony use this username to login ftp server!
  4.   And you can not use it to telnet to this system! XX
  5.   sleep 10
復(fù)制代碼
該文件中XX之間就是顯示給用telnet登陸的用戶(hù)看的信息。信息顯示10秒鐘就自動(dòng)退出了。最后不要忘記用chmod +x /bin/ftponly給這個(gè)文件可執(zhí)行屬性。

  然后在/bin/shell文件中添加“/bin/ftponly”,在以后的命令里面我們就可以利用pw中-s參數(shù)把這個(gè)shell指定給FTP用戶(hù)了。

  最后還要注意一個(gè)問(wèn)題,su命令僅僅是wheel管理組的用戶(hù)成員才可以使用,當(dāng)PHP調(diào)用su命令的時(shí)候也必須以wheel組成員的身份運(yùn)行,否則系統(tǒng)拒絕運(yùn)行,而PHP運(yùn)行系統(tǒng)命令的身份就是Apache Web服務(wù)器運(yùn)行的身份,初始的用戶(hù)名和用戶(hù)組都是nobody,所以先得建立一個(gè)wheel組的用戶(hù)www供apache使用,接著更改Apache的配置文件httpd.conf中的user為www,group為wheel,重新啟動(dòng)Apache,就可以以新用戶(hù)身份運(yùn)行了。

下面可以創(chuàng)建PHP源文件checkin.php了,代碼如下:



以下是引用片段:
  1. <?if (($username!="") and ($userpasswd!=""))//判斷是否有表單提交了信息  
  2. { $rootpasswd="adminpassword"; //定義管理員密碼
  3. $creatuser ="su --login root -c 'echo ".$userpasswd." | pw useradd ".$username." -s /bin/ftponly  -g ftpuser –s /bin/ftponly -h 0' "; //這是利用su和pw命令創(chuàng)建用戶(hù)的用到的字符串
  4. $fp=popen($creatuser,"w"); //調(diào)用popen()函數(shù)執(zhí)行字符串中的命令,返回文句柄給$fp
  5. fputs($fp,$rootpasswd); //寫(xiě)入管理員密碼到文件$fp,相當(dāng)于輸入密碼給系統(tǒng)
  6. pclose($fp);//關(guān)閉文件  
  7. $creatdir="su --login root -c 'mkdir /home/".$username."'";//創(chuàng)建用戶(hù)目錄的命令字符串  
  8. $fp=popen($creatdir,"w");//執(zhí)行命令創(chuàng)建用戶(hù)目錄  
  9. fputs($fp,$rootpasswd); //輸入管理員密碼
  10. pclose($fp);  
  11. $creatdir="su --login root -c 'mkdir /home/".$username."/public_html'";  
  12. $fp=popen($creatdir,"w"); //執(zhí)行命令創(chuàng)建用戶(hù)網(wǎng)站根目錄
  13. fputs($fp,$rootpasswd); //輸入管理員密碼
  14. pclose($fp);  
  15. $creatdir="su --login root -c 'chown ".$username." /home/".$username."'"; //改變用戶(hù)目錄的所有者為用戶(hù)自己,初始為運(yùn)行Apache的用戶(hù)www。
  16. $fp=popen($creatdir,"w"); //執(zhí)行命令
  17. fputs($fp,$rootpasswd); //輸入管理員密碼
  18. pclose($fp);  
  19. $creatdir="su --login root -c 'chown ".$username." /home/".$username."/public_html'"; //改變網(wǎng)站根目錄的歸屬
  20. $fp=popen($creatdir,"w");  
  21. fputs($fp,$rootpasswd);  
  22. pclose($fp);  
  23. echo "恭喜".$username.",您的的FTP賬號(hào)已經(jīng)申請(qǐng)成功!請(qǐng)到FTP上登陸,請(qǐng)注意,您沒(méi)有Telnet權(quán)限";}
  24. else{?>
  25. <html>
  26. <head>
  27. <title>申請(qǐng)F(tuán)TP賬號(hào)</title>
  28. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  29. </head>
  30. <body bgcolor="#FFFFFF">
  31. <div align="center">
  32. <p>申請(qǐng)F(tuán)TP賬號(hào)</p>  
  33. <form method=POST action="<? echo $PHP_SELF; ?>">
  34. <table width="36%" border="0">
  35. <tr>  
  36. <td width="40%">  
  37. <div align="right">賬號(hào)名稱(chēng):</div>
  38. </td>
  39. <td width="60%">  
  40. <input type="text" name="username">
  41. </td>
  42. </tr>
  43. <tr>  
  44. <td width="40%">  
  45. <div align="right">密碼:</div>
  46. </td>
  47. <td width="60%">  
  48. <input type="password" name="userpasswd">
  49. </td>
  50. </tr>
  51. <tr>
  52. <td colspan="2"><input type="submit" name="Submit" value="申請(qǐng)"></td>
  53. </tr>
  54. </table>
  55. </form>
  56. </div><?}?>
  57. </body>
  58. </html>
復(fù)制代碼

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2012-02-25 21:20 |只看該作者
謝謝分享
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP