最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用PHP實現(xiàn)Ftp用戶的在線管理

 更新時間:2012年02月16日 19:11:51   作者:  
最近接手一案子,要求必須實現(xiàn)在線報名和上傳作品。通過FreeBSD+Apache+PHP+Mysql+FTP我實現(xiàn)了該要求
實現(xiàn)在線報名和上傳作品的思路是利用網(wǎng)頁表單收集用戶填寫的資料存儲到Mysql數(shù)據(jù)庫內,同時以該用戶的注冊名創(chuàng)建一個FTP上傳賬號并創(chuàng)建該用戶的相應目錄。
  Ftp服務器是系統(tǒng)默認帶的,采用系統(tǒng)用戶的用戶名和密碼,創(chuàng)建系統(tǒng)用戶就等于創(chuàng)建FTP用戶,F(xiàn)reeBSD是屬于UNIX陣營的操作系統(tǒng),它沒有象Linux一樣的useradd和groupadd等創(chuàng)建用戶和組的命令,其取而代之的是pw命令加上相應參數(shù)來實現(xiàn),在Freebsd上以管理員的身份創(chuàng)建一個用戶的命令是
復制代碼 代碼如下:

  echo | pw useradd [-g][groupname] [-s][shelldir][-h 0]

  參數(shù)g指定用戶組,參數(shù)s指定用戶的shell。
  如果是普通用戶登陸的話還必須用到su命令,調用的方法是
復制代碼 代碼如下:

  su root –c ‘echo | pw useradd [-g][groupname] [-s][shelldir][-h 0] '

  執(zhí)行之后系統(tǒng)會要求輸入管理員密碼,輸入密碼就可以以管理員的身份執(zhí)行這個命令了。
  實現(xiàn)這步操作的主要難點在于如何通過PHP來調用上面這些系統(tǒng)命令去創(chuàng)建一個用戶,本例是使用PHP中的popen()函數(shù)來實現(xiàn)的,該函數(shù)執(zhí)行指令打開文件,語法是int popen(string command, string mode),其打開的文件只能是單向的,只能讀或只能寫,對應的“string mode”為'r'或'w',“string command” 就是命令字符串,在對文件的操作上可使用 fgets()、fgetss()與fputs()函數(shù),本例用fputs()函數(shù)往文件里面輸入管理員密碼。若是開檔發(fā)生錯誤將返回 false 值,最后函數(shù)要記得調用pclose()關閉。
  下面我們來規(guī)劃一下FTP用戶的組,事先我們先用pw groupadd ftpuser創(chuàng)建ftpuse組,讓在線申請的用戶為這個組的成員。為了安全起見,我們不應該給FTP用戶Telnet權限,所以我們還要專門給他們創(chuàng)建一個shell,使得他們不能通過Telnet正常登陸系統(tǒng),方法如下:先創(chuàng)建一個文件/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給這個文件可執(zhí)行屬性。
  然后在/bin/shell文件中添加“/bin/ftponly”,在以后的命令里面我們就可以利用pw中-s參數(shù)把這個shell指定給FTP用戶了。
  最后還要注意一個問題,su命令僅僅是wheel管理組的用戶成員才可以使用,當PHP調用su命令的時候也必須以wheel組成員的身份運行,否則系統(tǒng)拒絕運行,而PHP運行系統(tǒng)命令的身份就是Apache Web服務器運行的身份,初始的用戶名和用戶組都是nobody,所以先得建立一個wheel組的用戶www供apache使用,接著更改Apache的配置文件httpd.conf中的user為www,group為wheel,重新啟動Apache,就可以以新用戶身份運行了。
下面可以創(chuàng)建PHP源文件checkin.php了,代碼如下:
復制代碼 代碼如下:

<?if (($username!="") and ($userpasswd!=""))//判斷是否有表單提交了信息
{ $rootpasswd="adminpassword"; //定義管理員密碼
$creatuser ="su --login root -c 'echo ".$userpasswd." | pw useradd ".$username." -s /bin/ftponly -g ftpuser –s /bin/ftponly -h 0' "; //這是利用su和pw命令創(chuàng)建用戶的用到的字符串
$fp=popen($creatuser,"w"); //調用popen()函數(shù)執(zhí)行字符串中的命令,返回文句柄給$fp
fputs($fp,$rootpasswd); //寫入管理員密碼到文件$fp,相當于輸入密碼給系統(tǒng)
pclose($fp);//關閉文件
$creatdir="su --login root -c 'mkdir /home/".$username."'";//創(chuàng)建用戶目錄的命令字符串
$fp=popen($creatdir,"w");//執(zhí)行命令創(chuàng)建用戶目錄
fputs($fp,$rootpasswd); //輸入管理員密碼
pclose($fp);
$creatdir="su --login root -c 'mkdir /home/".$username."/public_html'";
$fp=popen($creatdir,"w"); //執(zhí)行命令創(chuàng)建用戶網(wǎng)站根目錄
fputs($fp,$rootpasswd); //輸入管理員密碼
pclose($fp);
$creatdir="su --login root -c 'chown ".$username." /home/".$username."'"; //改變用戶目錄的所有者為用戶自己,初始為運行Apache的用戶www。
$fp=popen($creatdir,"w"); //執(zhí)行命令
fputs($fp,$rootpasswd); //輸入管理員密碼
pclose($fp);
$creatdir="su --login root -c 'chown ".$username." /home/".$username."/public_html'"; //改變網(wǎng)站根目錄的歸屬
$fp=popen($creatdir,"w");
fputs($fp,$rootpasswd);
pclose($fp);
echo "恭喜".$username.",您的的FTP賬號已經(jīng)申請成功!請到FTP上登陸,請注意,您沒有Telnet權限";}
else{?>
<html>
<head>
<title>申請FTP賬號</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<p>申請FTP賬號</p>
<form method=POST action="<? echo $PHP_SELF; ?>">
<table width="36%" border="0">
<tr>
<td width="40%">
<div align="right">賬號名稱:</div>
</td>
<td width="60%">
<input type="text" name="username">
</td>
</tr>
<tr>
<td width="40%">
<div align="right">密碼:</div>
</td>
<td width="60%">
<input type="password" name="userpasswd">
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="Submit" value="申請"></td>
</tr>
</table>
</form>
</div><?}?>
</body>
</html>

相關文章

  • PHP支持多種格式圖片上傳(支持jpg、png、gif)

    PHP支持多種格式圖片上傳(支持jpg、png、gif)

    簡單地寫了一個PHP的圖片上傳,可以支持jpg、png、gif等格式的圖片,如果你想支持更多的格式,比如bmp,可以自己擴充。不是面向對象的,在這里簡單記錄下,以便以后取用
    2011-11-11
  • 通過chrome瀏覽器控制臺(Console)進行PHP Debug的方法

    通過chrome瀏覽器控制臺(Console)進行PHP Debug的方法

    這篇文章主要介紹了利用chrome瀏覽器控制臺(Console)進行PHP Debug,需要的朋友可以參考下
    2016-10-10
  • PHP轉盤抽獎接口實例

    PHP轉盤抽獎接口實例

    這篇文章主要介紹了PHP轉盤抽獎接口的實現(xiàn)方法,實例分析了隨機抽獎接口的實現(xiàn)原理與對應數(shù)據(jù)庫操作的技巧,需要的朋友可以參考下
    2015-02-02
  • php遞歸如何獲取無限上級ID

    php遞歸如何獲取無限上級ID

    這篇文章主要介紹了php遞歸如何獲取無限上級ID,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • PHP遞歸調用的小技巧講解

    PHP遞歸調用的小技巧講解

    對于初學PHP語言的朋友來說,可能對PHP遞歸的用法還是比較陌生。我們今天就來講一下有關PHP遞歸調用實現(xiàn)多元數(shù)組替換功能
    2013-02-02
  • PHP遞歸返回值時出現(xiàn)的問題解決辦法

    PHP遞歸返回值時出現(xiàn)的問題解決辦法

    我們在使用PHP遞歸時,會遇到各種各樣的問題,其中比較令人苦惱的是有關PHP遞歸返回值時出現(xiàn)的問題
    2013-02-02
  • php 分頁原理詳解

    php 分頁原理詳解

    分頁原理詳解,其實各個語言的都差不多,主要是程序跟數(shù)據(jù)庫的表達方式不一樣。
    2009-08-08
  • php編譯安裝php-amq擴展簡明教程

    php編譯安裝php-amq擴展簡明教程

    這篇文章主要介紹了php編譯安裝php-amq擴展的方法,較為詳細的分析了php-amq擴展的功能及下載、編譯安裝的具體步驟與相關注意事項,需要的朋友可以參考下
    2016-06-06
  • PHP類型約束用法示例

    PHP類型約束用法示例

    這篇文章主要介紹了PHP類型約束用法,結合實例形式分析了php針對特定場合及特定類型進行強制類型約束的操作方法,需要的朋友可以參考下
    2016-09-09
  • php下漢字轉化為拼音的代碼

    php下漢字轉化為拼音的代碼

    能把漢字轉化為拼音的一個函數(shù)很多問題都是因為中文問題造成的 如文件名最好別用中文
    2008-06-06

最新評論

田阳县| 仙桃市| 娄烦县| 浠水县| 齐齐哈尔市| 娱乐| 体育| 沙坪坝区| 耿马| 汝城县| 开封市| 洞口县| 宝丰县| 新建县| 和顺县| 布拖县| 东辽县| 监利县| 武胜县| 宁河县| 祁东县| 来安县| 广东省| 喀喇沁旗| 阳山县| 揭东县| 通辽市| 龙海市| 明光市| 兴国县| 凤庆县| 西乌| 娱乐| 西畴县| 淳安县| 色达县| 班玛县| 廉江市| 托克托县| 山西省| 广灵县|