http://blog.csdn.net/techmylife/archive/2006/04/29/697545.aspx這篇文章關(guān)于vsftpd知識很全,盡早對照著(zhù)做了一遍
vsftpd分為三種認證或者說(shuō)登陸方式,1,匿名,2,本地,3,虛擬(db或mysql),
1,匿名
在vsftpd-2.0.3.tar.gz 解壓后的目錄下的 builddefs.h 頭文件很關(guān)鍵,里面啟動(dòng)支持tcpwrapper和ssl,隨便那種方式都行
關(guān)鍵pam的定義 #define VSF_BUILD_PAM
對于匿名和虛擬,則要把上面語(yǔ)句包含進(jìn)來(lái),如果采取2,本地用戶(hù)登陸,就得undef PAM了
修改完,make
拷貝vsftpd程序和配制文件到相應目錄
服務(wù)器采取standalone啟動(dòng)的話(huà),添加listen=YES,因為默認是采用xinetd控制啟動(dòng)
配制conf文件:注意格式,每行的值不要有空格,然機就是conf中各項的理解了,這個(gè)好辦
2,本地用戶(hù)登陸
就是把pam的define改為undef
conf中anonymous_enable=NO,local_enable=YES
這樣服務(wù)器本地用戶(hù)就可以登陸,并且登陸到相應用戶(hù)的主目錄,這不安全,
可以利用
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.denyuser
配制哪些用戶(hù)不能登陸,或僅僅哪些用戶(hù)能登陸,都是相對本地用戶(hù)來(lái)的
3,虛擬用戶(hù)
builddefs.h中的跟1匿名用戶(hù)時(shí)一樣,開(kāi)啟PAM支持
虛擬用戶(hù)有兩種,1,DB庫和mysql庫
DB庫需要pam_userdb.so,我查看了我沒(méi)有,不知通過(guò)什么安裝mysql需要pam_mysql.so,我的機器只有pam_mysql.so認證模塊,只能試驗mysql了,我也喜歡mysql些
配制文件中主要注意有:
anonymous_enable=NO
local_enable=YES //PAM方式此處必須為YES,如果不是將出現錯誤
guest_enable=YES
guest_username=vsftpd //這兩行的意思是采用虛擬用戶(hù)形式
virtual_use_local_privs=YES //虛擬用戶(hù)和本地用戶(hù)權限相同
然后就是mysql的設置:
我建立vsftpd數據庫,user表,其實(shí)就是利用pam_mysql.so模塊認證,跟sock5的一樣的了,
mysql:create table user(name char(20) binary,passwd char(20) binary);
mysql>insert into user (name,passwd) values (\‘test1\‘,\‘12345\‘);
mysql>insert into user (name,passwd) values (\‘test2\‘,\‘54321\‘);
mysql>grant select on ftpd.user to ftpd@localhost identified by \‘123456\‘;
mysql>flush privileges; 刷新權限設置
mysql>quit
建立PAM認證信息:
# vi /etc/pam.d/ftp ,內容如下
auth required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0
account required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0
應該還可以象sock5一樣建立logs表格來(lái)記錄log信息,怕懶了
就可以啟動(dòng)服務(wù)器了,通過(guò)test1,test2測試通過(guò),它們登陸后相當與conf中定義的guest_username=vsftpd 用戶(hù),
我系統中vsftpd用戶(hù)的主目錄是/dev/null,所以出錯,我改為ftp,成功到/home/ftp下,并且就是根目錄
備注:
1、vsftpd配置參數詳細整理
#接受匿名用戶(hù)
anonymous_enable=YES
#匿名用戶(hù)login時(shí)不詢(xún)問(wèn)口令
no_anon_password=YES
#匿名用戶(hù)主目錄
anon_root=(none)
#接受本地用戶(hù)
local_enable=YES
#本地用戶(hù)主目錄
local_root=(none)
#如果匿名用戶(hù)需要密碼,那么使用banned_email_file里面的電子郵件地址的用戶(hù)不能登錄
deny_email_enable=YES
#僅在沒(méi)有pam驗證版本時(shí)有用,是否檢查用戶(hù)有一個(gè)有效的shell來(lái)登錄
check_shell=YES
#若啟用此選項,userlist_deny選項才被啟動(dòng)
userlist_enable=YES
#若為YES,則userlist_file中的用戶(hù)將不能登錄,為NO則只有userlist_file的用戶(hù)可以登錄
userlist_deny=NO
#如果和chroot_local_user一起開(kāi)啟,那么用戶(hù)鎖定的目錄來(lái)自/etc/passwd每個(gè)用戶(hù)指定的目錄(這個(gè)不是很清楚,很哪位熟悉的指點(diǎn)一下)
passwd_chroot_enable=NO
#定義匿名登入的使用者名稱(chēng)。默認值為ftp。
ftp_username=FTP
#################用戶(hù)權限控制###############
#可以上傳(全局控制).
write_enable=YES
#本地用戶(hù)上傳文件的umask
local_umask=022
#上傳文件的權限配合umask使用
#file_open_mode=0666
#匿名用戶(hù)可以上傳
anon_upload_enable=NO
#匿名用戶(hù)可以建目錄
anon_mkdir_write_enable=NO
匿名用戶(hù)其它的寫(xiě)權利(更改權限?)
anon_other_write_enable=NO
如果設為YES,匿名登入者會(huì )被允許下載可閱讀的檔案。默認值為YES。
anon_world_readable_only=YES
#如果開(kāi)啟,那么所有非匿名登陸的用戶(hù)名都會(huì )被切換成guest_username指定的用戶(hù)名
#guest_enable=NO
所有匿名上傳的文件的所屬用戶(hù)將會(huì )被更改成chown_username
chown_uploads=YES
匿名上傳文件所屬用戶(hù)名
chown_username=lightwiter
#如果啟動(dòng)這項功能,則所有列在chroot_list_file之中的使用者不能更改根目錄
chroot_list_enable=YES
#允許使用\"async ABOR\"命令,一般不用,容易出問(wèn)題
async_abor_enable=YES
管控是否可用ASCII 模式上傳。默認值為NO。
ascii_upload_enable=YES
#管控是否可用ASCII 模式下載。默認值為NO。
ascii_download_enable=YES
#這個(gè)選項必須指定一個(gè)空的數據夾且任何登入者都不能有寫(xiě)入的權限,當vsftpd 不需要file system 的權限時(shí),就會(huì )將使用者限制在此數據夾中。默認值為/usr/share/empty
secure_chroot_dir=/usr/share/empty
###################超時(shí)設置##################
#空閑連接超時(shí)
idle_session_timeout=600
#數據傳輸超時(shí)
data_connection_timeout=120
#PAVS請求超時(shí)
ACCEPT_TIMEOUT=60
#PROT模式連接超時(shí)
connect_timeout=60
################服務(wù)器功能選項###############
#開(kāi)啟日記功能
xferlog_enable=YES
#使用標準格式
xferlog_std_format=YES
#當xferlog_std_format關(guān)閉且本選項開(kāi)啟時(shí),記錄所有ftp請求和回復,當調試比較有用.
#log_ftp_protocol=NO
#允許使用pasv模式
pasv_enable=YES
#關(guān)閉安全檢查,小心呀.
#pasv_promiscuous+NO
#允許使用port模式
#port_enable=YES
#關(guān)閉安全檢查
#prot_promiscuous
#開(kāi)啟tcp_wrappers支持
tcp_wrappers=YES
#定義PAM 所使用的名稱(chēng),預設為vsftpd。
pam_service_name=vsftpd
#當服務(wù)器運行于最底層時(shí)使用的用戶(hù)名
nopriv_user=nobody
#使vsftpd在pasv命令回復時(shí)跳轉到指定的IP地址.(服務(wù)器聯(lián)接跳轉?)
pasv_address=(none)
#################服務(wù)器性能選項##############
#是否能使用ls -R命令以防止浪費大量的服務(wù)器資源
#ls_recurse_enable=YES
#是否使用單進(jìn)程模式
#one_process_model
#綁定到listen_port指定的端口,既然都綁定了也就是每時(shí)都開(kāi)著(zhù)的,就是那個(gè)什么standalone模式
listen=YES
#當使用者登入后使用ls -al 之類(lèi)的指令查詢(xún)該檔案的管理權時(shí),預設會(huì )出現擁有者的UID,而不是該檔案擁有者的名稱(chēng)。若是希望出現擁有者的名稱(chēng),則將此功能開(kāi)啟。
text_userdb_names=NO
#顯示目錄清單時(shí)是用本地時(shí)間還是GMT時(shí)間,可以通過(guò)mdtm命令來(lái)達到一樣的效果
use_localtime=NO
#測試平臺優(yōu)化
#use_sendfile=YES
################信息類(lèi)設置################
#login時(shí)顯示歡迎信息.如果設置了banner_file則此設置無(wú)效
ftpd_banner=歡迎來(lái)到湖南三辰Fake-Ta FTP 網(wǎng)站.
#允許為目錄配置顯示信息,顯示每個(gè)目錄下面的message_file文件的內容
dirmessage_enable=YES
#顯示會(huì )話(huà)狀態(tài)信息,關(guān)!
#setproctitle_enable=YES
############## 文件定義 ##################
#定義不能更改用戶(hù)主目錄的文件
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
#定義限制/允許用戶(hù)登錄的文件
userlist_file=/etc/vsftpd/vsftpd.user_list
#定義登錄信息文件的位置
banner_file=/etc/vsftpd/banner
#禁止使用的匿名用戶(hù)登陸時(shí)作為密碼的電子郵件地址
banned_email_file=/etc/vsftpd.banned_emails
#日志文件位置
xferlog_file=/var/log/vsftpd.log
#目錄信息文件
message_file=.message
############## 目錄定義 #################
#定義用戶(hù)配置文件的目錄
user_config_dir=/etc/vsftpd/userconf
#定義本地用戶(hù)登陸的根目錄,注意定義根目錄可以是相對路徑也可以是絕對路徑.相對路徑是針對用戶(hù)家目錄來(lái)說(shuō)的.
local_root=webdisk #此項設置每個(gè)用戶(hù)登陸后其根目錄為/home/username/webdisk
#匿名用戶(hù)登陸后的根目錄
anon_root=/var/ftp
#############用戶(hù)連接選項#################
#可接受的最大client數目
max_clients=100
#每個(gè)ip的最大client數目
max_per_ip=5
#使用標準的20端口來(lái)連接ftp
connect_from_port_20=YES
#綁定到某個(gè)IP,其它IP不能訪(fǎng)問(wèn)
listen_address=192.168.0.2
#綁定到某個(gè)端口
#listen_port=2121
#數據傳輸端口
#ftp_data_port=2020
#pasv連接模式時(shí)可以使用port 范圍的上界,0 表示任意。默認值為0。
pasv_max_port=0
#pasv連接模式時(shí)可以使用port 范圍的下界,0 表示任意。默認值為0。
pasv_min_port=0
##############數據傳輸選項#################
#匿名用戶(hù)的傳輸比率(b/s)
anon_max_rate=51200
#本地用戶(hù)的傳輸比率(b/s)
local_max_rate=5120000
########################################
別外,如果要對每個(gè)用戶(hù)進(jìn)行單獨的控制,只需要在user_config_dir中建立username文件,內容為數據傳輸和用戶(hù)權利里面設置個(gè)人的合適的選項,用戶(hù)自定義文件同樣適合用pam支持的虛擬用戶(hù)
附: FTP 數字代碼的意義
110 重新啟動(dòng)標記應答。
120 服務(wù)在多久時(shí)間內ready。
125 數據鏈路埠開(kāi)啟,準備傳送。
150 文件狀態(tài)正常,開(kāi)啟數據連接端口。
200 命令執行成功。
202 命令執行失敗。
211 系統狀態(tài)或是系統求助響應。
212 目錄的狀態(tài)。
213 文件的狀態(tài)。
214 求助的訊息。
215 名稱(chēng)系統類(lèi)型。
220 新的聯(lián)機服務(wù)ready。
221 服務(wù)的控制連接埠關(guān)閉,可以注銷(xiāo)。
225 數據連結開(kāi)啟,但無(wú)傳輸動(dòng)作。
226 關(guān)閉數據連接端口,請求的文件操作成功。
227 進(jìn)入passive mode。
230 使用者登入。
250 請求的文件操作完成。
257 顯示目前的路徑名稱(chēng)。
331 用戶(hù)名稱(chēng)正確,需要密碼。
332 登入時(shí)需要賬號信息。
350 請求的操作需要進(jìn)一部的命令。
421 無(wú)法提供服務(wù),關(guān)閉控制連結。
425 無(wú)法開(kāi)啟數據鏈路。
426 關(guān)閉聯(lián)機,終止傳輸。
450 請求的操作未執行。
451 命令終止:有本地的錯誤。
452 未執行命令:磁盤(pán)空間不足。
500 格式錯誤,無(wú)法識別命令。
501 參數語(yǔ)法錯誤。
502 命令執行失敗。
503 命令順序錯誤。
504 命令所接的參數不正確。
530 未登入。
532 儲存文件需要賬戶(hù)登入。
550 未執行請求的操作。
551 請求的命令終止,類(lèi)型未知。
552 請求的文件終止,儲存位溢出。
553 未執行請求的的命令,名稱(chēng)不正確。