1、 本人配置的ftp伺服器的設計要求如下:
(1)、匿名使用者可登入瀏覽,但不能下載
(2)、設定4個不同等級的使用者使用此ftp伺服器(虛擬使用者),分別如下
使用者名稱:nan306 路徑/home/vsftpd 系統管理使用者,可對ftp伺服器的所有檔案進行任何操作
使用者名稱:down 路徑/home/vsftpd/down 下載使用者,只可下載此目錄下的檔案
使用者名稱:upload 路徑/home/vstfpd/upload 上傳使用者,在此目錄下可上傳下載刪除等操作
使用者名稱:wsn 路徑/home/vsftpd/wsn 實驗室檔案管理目錄,此使用者目錄為本實驗室內部資料,其下掛在down虛擬路徑
2、vsftpd的安裝
$ sudo apt-get install vsftpd
安裝完後不用做任何配置既可用匿名方式進行訪問,預設的ftp檔案夾為/srv/ftp
3、vsftpd的開始、關閉和重啟
$sudo /etc/init.d/vsftpd start #開始
$sudo /etc/init.d/vsftpd stop #關閉
$sudo /etc/init.d/vsftpd restart #重啟
關於vsftpd的開機自啟動,當vsftpd裝好後是預設開機自啟動的,如果不需要可關閉,關閉方法很多,網上自己看吧,我用一條命令
$sudo mv /etc/rc2.d/S20vsftpd /etc/rc2.d/K20vsftpd
具體請參考開機自啟動文章 http://hi.baidu.com/jidaxiaobeibei/blog/item/e16309446cc0b237879473d6.html
3、vsftpd的配置
這一塊網上資訊是鋪天蓋地,關於配置參數我這裡就不一一列舉,初次接觸的朋友參考http://os.51cto.com/art/201003/189123.htm這個網址,進階點的配置參考http://www.517sou.net/blogview.asp?logID=515#commmark_241。如果沒接觸國建議先看看第一個網址裡面的內容,簡單明了。
關於配置這塊初次配置ftp的朋友我的建議是別一下把所有配置全看完就照著做,這樣都配完了ftp出了問題都不知道哪步錯的,一步步來,配一步測試一步。
我的配置過程如下:
vsftpd的配置很簡單,就是開啟/etc/vsftpd.conf檔案,
$sudo vi /etc/vsftpd.conf #我這裡用ssh登入伺服器配置的,所以用vi,原生話可以直接 sudo gedit /etc/vsftpd.conf
然後對參數進行修改,修改完咧就重啟伺服器
$sudo /etc/init.d/vsftpd restart #重啟就可以實現配置功能。
對本人配置的伺服器中 vsftpd.conf的參數使用如下:
listen=YES #啟用獨立vsftpd伺服器
#listen_ipv6=YES 不需要,注釋掉
anonymous_enable=YES #本伺服器需要匿名訪問
local_enable=YES #要用虛擬使用者,需要本地訪問的(關於本機使用者和虛擬使用者不要迷茫,稍後解釋)
write_enable=YES #需要本機使用者對檔案進行修改和刪除
#local_umask=022 FTP上傳檔案許可權 ,預設是077,本伺服器每個虛擬使用者都有上傳使用權限設定,總的就留空注釋掉了
#anon_upload_enable=YES 是否允許匿名使用者上傳,不需要匿名上傳注釋掉
#anon_mkdir_write_enable=YES 是否允許匿名使用者的寫和建立目錄的許可權,不要匿名管理,注釋掉
dirmessage_enable=YES 當切換目錄時,是否顯示該目錄下message隱藏檔案的內容,這個用來顯示登入資訊的 設為YES
message_file=Welcome 顯示的歡迎資訊,在ftp目錄下建Welcome的檔案,裡面寫上登入資訊即可,一般人常用.message隱藏檔案
xferlog_enable=YES 是否啟用上傳和下載的日誌,需要
connect_from_port_20=YES 是否啟動FTP資料連接埠20的串連請求 需要
chown_uploads=YES 是否改變上傳檔案的所有者,我這裡需要改變上傳檔案所有者
chown_username=virtual 改變上傳檔案的所有著為virtual,這個virtual使用者一會要建立的,用來實現虛擬使用者登入
xferlog_file=/var/log/vsftpd.log 上傳/下載記錄檔所預設的路徑
xferlog_std_format=YES 是否使用標準的ftpd xferlog日誌格式
idle_session_timeout=600 是否將在使用者會話空閑10分鐘後被中斷
data_connection_timeout=120 是否將在資料連線空閑2分鐘後被中斷
#nopriv_user=ftpsecure 是否運行vsftpd需要的非特殊系統使用者預設nobody 不需要
#async_abor_enable=YES 是否是否允許運行特殊的FTP命令async 不要
ascii_upload_enable=YES 是否啟用上傳的ascii傳輸方式 需要
ascii_download_enable=YES 是否啟用下載的ascii傳輸方式 需要
ftpd_banner=Welcome to blah FTP service. 使用者串連伺服器後顯示資訊,顯示資訊可以隨便寫
#deny_email_enable=YES 是否允許某些匿名使用者使用郵件地址(預設的)
max_clients=10 #FTP伺服器最大承載使用者,本人設為10
max_per_ip=5 #限制每個IP的進程
local_max_rate=256000 #最大傳輸速率(b/s)
#hide_ids=YES #是否隱藏檔案的所有者和組資訊,不隱藏
idle_session_timeout= 3000 #空閑(發獃)使用者會話的逾時時間,若是超出這時間沒有資料的傳送或是指令的輸入,則會強迫斷線。單位為秒,預設值為300。
下面是用來虛擬使用者登入的
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
guest_enable=YES 使用虛擬使用者
guest_username=virtual 將虛擬使用者等同本機使用者 virtual
user_config_dir=/etc/vsftpd/vsftpd_user_conf 虛擬使用者設定檔夾
pam_service_name=vsftpd.vu 虛擬使用者加密設定
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
其他未列出來的視情況自己斟酌,如不明白清保持原樣。
關於設定檔修改一定注意一下幾點:
1、配置前最好把設定檔備份一下, sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.back,以備配錯了恢複
2、所有配置語句後面不要有空行,我自己的配置很嚴格連空格都沒有,把所有沒必要的注釋尤其是漢語注釋全刪除,如果配置語句後面或前面有空行或空格會報錯
3、為了防止出現第2點中的錯誤,請盡量無比自己一條條改寫配置語句,不要從網上拷貝,很容易多空格,多斷行符號
4、不清楚自己是否需要的請保持設定檔原樣。
配置完了請重啟ftp,看是否報錯,是否可以串連,如報錯或不能串連請自己檢查設定檔,如果還不能啟動,報錯,很有可能是設定檔有空格或斷行符號,檢查並修改。如果實在還不行,恢複設定檔,重新一條條驗證配置。
4、使用虛擬使用者登入(文本法)
此實現有很多方法,主要的是文本法和資料庫法,其實大同小異,本文使用文本法。
此處涉及到兩個概念,一個是本機使用者,一個是虛擬使用者。
本機使用者就是linux實實在在的一個使用者,如root,你的登入使用者等等都是本機使用者。
虛擬使用者不是linux上的使用者,只是自己起的虛擬使用者,用來使用ftp的,虛擬使用者必須關聯到一個本機使用者上。
虛擬使用者的實現可以參考官方http://wiki.ubuntu.org.cn/Vsftpd%E8%99%9A%E6%8B%9F%E7%94%A8%E6%88%B7%E8%AE%BE%E7%BD%AE,但是裡面有錯誤,請注意甄別。官方的多錯,沒天理呀,我就是因為這個錯誤搞了好久,錯誤很簡單,就是其中“為虛擬使用者建立本地系統使用者 ”那塊本地系統使用者建立錯了,應該是virtual,既改為:
sudo useradd virtual -d /home/vsftpd -s /bin/false
sudo chown virtual:virutal /home/vsftpd
當然這個使用者名稱字你也可以改,但是此處的名字必須和設定檔vsftpd.conf中guest_username=virtual項的參數相同。
………………………………………………………………………………………………
下面是我的配置過程,結合官方的那個網址看啊,大部分相同,略有不同:
首先先建立檔案夾
sudo mkdir /home/vsftpd
cd /home/vsftpd
sudo mkdir down upload wsn
(1)、建立虛擬使用者資料庫
建立loguser.txt檔案,
$sudo vi /home/loguser.txt
裡面輸入虛擬使用者名稱和密碼,格式如下
nan306
mima1
wsn
mima2
upload
mima3
down
mima4
注意不要多空格和空行,其中nan306,upload等為虛擬使用者名稱,另外兩行為相應密碼
產生資料庫
先裝一個軟體
$sudo apt-get install db4.7-util
建立一個檔案夾,放置設定檔
sudo mkdir /etc/vsftpd
然後執行
$sudo db4.7_load -T -t hash -f /home/loguser.txt /etc/vsftpd/vsftpd_login.db
最後設定一下資料庫檔案的存取權限
$sudo chmod 600 /etc/vsftpd/vsftpd_login.db
配置PAM檔案
建立/etc/pam.d/vsftpd.vu
$sudo vi /etc/pam.d/vsftpd.vu
輸入內容如下:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
* 我們上一步建立的資料庫 vsftpd_login 在此處被使用
* 我們建立的虛擬使用者將採用PAM進行驗證,這是通過/etc/vsftpd.conf檔案中的 語句pam_service_name=vsftpd.vu來啟用的,稍後你將發現。
(2)、為虛擬使用者建立本機使用者
建立一個系統使用者vsftpd,使用者家目錄為/home/vsftpd, 使用者登入終端設為/bin/false(即使之不能登入系統)
udo useradd virtual -d /home/vsftpd -s /bin/false
sudo chown virtual:virutal /home/vsftpd
現在為止,我們的3個使用者都可以工作了,可是它們的根目錄現在都是/home/vsftpd,許可權也都一樣。 那麼怎麼才能完成我們預定的目標呢?
(3)建立etc/vsftpd_user_conf檔案夾
在上面的配置中,有這麼一行 r_config_dir=/etc/vsftpd/vsftpd_user_conf
現在,我們要把各個使用者的設定檔放到目錄/etc/vsftpd/vsftpd_user_conf中
sudo mkdir /etc/vsftpd/vsftpd_user_conf
cd /etc/vsftpd/vsftpd_user_conf
sudo touch nan306 wsn upload down
每個檔案既為一個設定檔,如nan306是個系統管理使用者,裡面配置如下:
開啟nan306
sudo vi /etc/vsftpd/vsftpd_user_conf/nan306
裡面添加
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vsftpd
這裡要注意不能有空格,不然登入的時候會提示出錯。下同
wsn用了管理wsn檔案夾,配置如下:
開啟wsn
sudo vi /etc/vsftpd/vsftpd_user_conf/wsn
裡面添加
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vsftpd/wsn
wsn目錄下面還要掛載down檔案夾的虛擬路徑
在wsn目錄下建立目錄down
sudo mkdir /home/vsftpd/wsn/down
然後系統啟動是將/home/vsftpd/down掛載到/home/vsftpd/wsn/down
改寫/etc/rc.local實現開機啟動
sudo vi /etc/rc.local
添加 mount –bind /home/vsftpd/down /home/vsftpd/wsn/down
upload目錄中
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vsftpd/upload
down目錄中
local_root=/home/vsftpd/upload
至此配置完了。重啟vsftpd我們就可以看到效果了^_^
/etc/init.d/vsftpd restart
500 OOPS: cannot change directory:
linux開啟ftp遇到的問題 500 OOPS: cannot change directory:
google好多都是 執行這個就OK setsebool ftpd_disable_trans 1 service vsftpd restart
但是執行的時候遇到這個問題 Could not change active booleans: Invalid boolean
搜了好久終於解決
setsebool -P ftp_home_dir=1
參考文獻:
最初級簡單的請看下面兩個
http://os.51cto.com/art/201003/189123.htm
http://os.51cto.com/art/200901/106622.htm
進階點的看下面兩個
http://www.linuxsir.org/main/?q=node/152#8.4 這個很好的,裡面有很多實用設定
http://www.517sou.net/blogview.asp?logID=515#commmark_241 這個很全很全,非常全,非常推進
虛擬使用者官方配置,有錯誤,記得更改