1. 程式人生 > >centos 安裝vsftp 絕對成功包括目錄許可權配置

centos 安裝vsftp 絕對成功包括目錄許可權配置

第一步:安裝vsftp pam db4

yum install vsftpd pam* db4* -y
通過setup對系統服務及防火牆進行配置,然後reboot系統
或者使用命令將vsftp配置為系統服務
chkconfig --level 35 vsftpd on

第二步:配置vsftpd服務的宿主

#useradd vsftpdadmin -s /sbin/nologin
這個vsftpdadmin只是用來替換root的,並不需要登入

第三步:建立ftp虛擬宿主帳戶

#useradd ftpuser -s /sbin/nologin
這ftpuser只個虛擬帳戶的宿主,本身是不用登入的

第四步:配置vsftpd.conf

更改配置前最好備份一下然後再改
vim /etc/vsftpd/vsftpd.conf

主要修改下面部分
anonymous_enable=YES  -->  anonymous_enable=NO   //不允許匿名使用者訪問,預設是允許。
#chroot_list_enable=YES  -->  chroot_list_enable=YES      //不允許FTP使用者離開自己主目錄,預設是被註釋掉的。
#chroot_list_file=/etc/vsftpd/chroot_list --> chroot_list_file=/etc/vsftpd/chroot_list  //如果開啟了chroot_list_enable=YES,那麼一定要開啟這個,這條是鎖定登入使用者只能家目錄的位置,如果不開啟使用者登入時就會報500 OOPS的錯。
注意:/etc/vsftp/chroot_list本身是不存在的,
這要建立vim /etc/vsftp/chroot_list,然後將帳戶輸入一行一個,儲存就可以了

無需修改

local_enable=YES      //允許本地使用者訪問,預設就是YES,不用改
write_enable=YES      //允許寫入,預設是YES,不用改
local_umask=022       //上傳後文件的許可權掩碼,不用改
dirmessage_enable=YES //開啟目錄標語,預設是YES,開不開無所謂,我是預設就行
xferlog_enable=YES    //開啟日誌,預設是YES,不用改
connect_from_port_20=YES   //設定連線埠20,不用改
xferlog_std_format=YES   //設定vsftpd的服務日誌儲存路徑,不用改
(這步後面要有幾個操作才能執行,也就是touch這個檔案(見第五步),因為它本身不存在,而且還要給檔案寫入的許可權)
#idle_session_timeout=600  -->  idle_session_timeout=600  //會話超時,客戶端連線到ftp但未操作,預設被註釋掉,可根據個人情況修改
#async_abor_enable=YES  -->   async_abor_enable=YES     //支援非同步傳輸功能,預設是註釋掉的,去掉註釋
#ascii_upload_enable=YES  -->   ascii_upload_enable=YES   //支援ASCII模式的下載功能,預設是註釋掉的,去掉註釋
#ascii_download_enable=YES  -->   ascii_download_enable=YES   //支援ASCII模式的上傳功能,預設是註釋掉的,去掉註釋
#ftpd_banner=Welcome to blah FTP service  //FTP的登入歡迎語,本身是被註釋掉的,去不去都行
#chroot_local_user=YES  --> chroot_local_user=YES    //禁止本地使用者登出自己的FTP主目錄,本身被註釋掉,去掉註釋
pam_service_name=vsftpd  //設定pam服務下vsftpdd的驗證配置檔名,不用改
userlist_enable=YES    //拒絕登入使用者名稱單,不用改
TCP_wrappers=YES    //限制主機對VSFTP伺服器的訪問,不用改(通過/etc/hosts.deny和/etc/hosts.allow這兩個檔案來配置)

如果沒有則新增

pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/vsftpd.user_list
tcp_wrappers=YES
chroot_local_user=NO

guest_enable=YES    //設定啟用虛擬使用者功能。
guest_username=ftpuser   //指定虛擬使用者的宿主使用者。
virtual_use_local_privs=YES   //設定虛擬使用者的許可權符合他們的宿主使用者。
user_config_dir=/etc/vsftpd/vconf   //設定虛擬使用者個人Vsftp的配置檔案存放路徑

wq儲存

第五步:建立日誌檔案

#touch /var/log/vsftpd.log    //日誌檔案
#chown vsftpdadmin.vsftpdadmin /var/log/vsftpd.log   //屬於vsftpdadmin這個宿主

第六步:建立虛擬使用者檔案

#mkdir /etc/vsftpd/vconf/
#touch /etc/vsftpd/vconf/vir_user

第七步:建立虛擬使用者

#vim /etc/vsftpd/vconf/vir_user
virtualuser           //使用者名稱
12345678           //密碼
注意:第一行使用者名稱,第二行是上一行使用者名稱的密碼,其他人的以此類推

vim /etc/vsftp/chroot_list

加入需要鎖定登入使用者只能家目錄的位置然後將帳戶輸入一行一個,儲存就可以了

virtualuser           //使用者名稱


第八步:生成資料庫

#db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db

第九步:設定資料庫檔案的訪問許可權

#chmod 600 /etc/vsftpd/vconf/vir_user.db
#chmod 600 /etc/vsftpd/vconf/vir_user

第十步:修改/etc/pam.d/vsftpd內容

echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd
echo "account required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd 

第十步:建立使用者的配置檔案

注意:使用者配置檔案的名字要和建立的“虛擬使用者”名字對應
#touch /etc/vsftpd/vconf/virtualuser
#vim /etc/vsftpd/vconf/virtualuser


輸入:
local_root=/home/virtualuser           //虛擬使用者的個人目錄路徑
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=1048576     //本地使用者的最大傳輸速度,單位是Byts/s,我設定的是10M

注意:複製完成後,看看第一行和最後一行有沒有丟失字元。如果有丟失,後面會報錯。

附加:常見錯誤

錯誤 :500 OOPS: cannot change directory:/

解決方法:
在終端輸入命令:

setsebool ftpd_disable_trans 1
service vsftpd restart

錯誤:530 Permission denied.

在/etc/vsftpd/vsftpd.user_list 裡新增 ftp使用者

錯誤:500 OOPS: unrecognised variable in config file: cal_root

就是上面說了。複製的時候丟失了字元

#vim /etc/vsftpd/vconf/virtualuser
檢查是否和上面一樣,一般最前面的2個字元丟失 如果上述無效,檢查下是否有此資料夾,資料夾不存在也會報這樣的錯誤。

如果大家,還有什麼錯誤,可以再下面提出來