一.安裝與啓動vsftpd
yum -y install vsftpd
/usr/sbin/vsftpd或service vsftpd start
netstat -ntlp
chkconfig --level 35 vsftpd on
二.FTP相關配置文件說明
1.vsftpd.conf文件說明
anonymous_enable=YES 是否允許匿名ftp,如否則選擇NO
local_enable=YES 是否允許本地用戶登錄
write_enable=YES 允許使用任何可以修改文件系統的FTP的指令
local_umask=022 默認的umask碼
anon_upload_enable=YES 允許匿名上傳文件
anon_mkdir_write_enable=YES 是否允許匿名用戶有創建目錄的權利
dirmessage_enable=YES 是否顯示目錄說明文件,默認是YES但需要收工創建.message文件
xferlog_enable=YES 是否記錄ftp傳輸過程
connect_from_port_20=YES 是否確信端口傳輸來自20(ftp-data)
chown_upload=YES 所有匿名上傳的文件的所屬用戶將會被更改成chown_username
chown_username=username 是否改變上傳文件的屬主,如果是需要輸入一個系統用戶名,你可以把上傳的文件都改成root屬主
xferlog_file=/var/log/vsftpd.log ftp傳輸日誌的路徑和名字默認是/var/log/vsftpd.log
xferlog_std_format=YES 是否使用標準的ftp xferlog模式
idle_session_timeout=600 設置默認的斷開不活躍session的時間
data_connection_timeout=120 設置數據傳輸超時時間
nopriv_user=ftpsecure 運行vsftpd需要的非特權系統用戶,默認是nobody
async_abor_enable=YES 允許使用\"async ABOR\"命令,一般不用,容易出問題
ascii_upload_enable=YES 管控是否可用ASCII 模式上傳。默認值爲NO
ascii_download_enable=YES 是否使用ascii碼方式上傳和下載文件
ftpd_banner=Welcome to chenlf FTP service. 定製歡迎信息
deny_email_enable=YES 如果匿名用戶需要密碼,那麼使用banned_email_file裏面的電子郵件地址的用戶不能登錄
banned_email_file=/etc/vsftpd.banned_emails 禁止使用匿名用戶登陸時作爲密碼的電子郵件地址
chroot_local_user=YES 在預設的情況下,是否要將使用者限制在自己的家目錄之內,如果是YES代表用戶默認就會被chroot,如果是NO,則預設是沒有chroot。不過,實際還是需要底下的兩個參數互相參考才行。爲了安全性,這裏應該要設定成YES纔好
chroot_list_enable=YES 如果啓動這項功能,則所有列在chroot_list_file中的使用者不能更改根目錄
chroot_list_file=/etc/vsftpd.chroot_list 定義不能更改用戶主目錄的文件
ls_recurse_enable=YES 是否能使用ls -R命令以防止浪費大量的服務器資源
listen=YES
pam_service_name=vsftpd 定義PAM 所使用的名稱,預設爲vsftpd
userlist_enable=YES 若啓用此選項,userlist_deny選項才被啓動
tcp_wrappers=YES 開啓tcp_wrappers支持
#local_root=/home/username 當本地用戶登入時,將被更換到定義的目錄下。默認值爲各用戶的家目錄。
2.vsftpd.ftpusers文件說明
root //默認情況下,root和它以下的用戶是不允許登錄FTP服務器的.可以將不允許登錄的用戶添加到這裏來.但切記每個用戶都要單獨佔用一行.
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
3.vsftpd.user_list文件說明
其實它的內容跟上面那個文件內容一樣,只是在系統對文件vsftpd.conf 進行檢測時,會檢測到"userlist_deny=YES",因此這個文件必須存在.
注意:修改前建議使用“cp”命令備份這三個文件,修改完成後需要重啓vsftpd服務才能使設置生效。
三.配置實例
不允許匿名登錄FTP,只允許系統用戶登錄,且固定到自己的家目錄
爲了防止配置過程中出現錯誤,一般應把原配置文件/etc/vsftpd/vsftpd.conf複製一份到別的目錄中,一旦配置後出現問題解決不了,還可以把原配置文件複製回來.
修改文件/etc/vsftpd/vsftpd.conf如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to my FTP service.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
use_localtime=YES
touch /var/log/vsftpd.log
touch /var/log/xferlog
touch /etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
把要固定在家目錄的用戶添加到裏面
service vsftpd restart
Ps:一定要加上 chroot_local_user=YES
否則通過瀏覽器登錄時會默認在根/下,不僅能訪問其他目錄,還有讀、寫權限
Vsftpd虛擬用戶的配置
第一步、安裝
#cd /etc/yum.repos.d/
# rm -rf *
# wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo
# yum clean all
# yum -y install vsftpd
# yum -y install db4-utils
第二步、建立虛擬用戶
#vim /etc/vsftpd/vu_list.txt
user1 password1 user2 password2 user3 password4
格式爲第一行爲用戶名名,第二行爲密碼,然後類推
建立db數據庫,同時只有root用戶才能讀寫
# db_load -T -t hash -f /etc/vsftpd/vu_list.txt /etc/vsftpd/vu_list.db
# chmod 600 /etc/vsftpd/vu_list.db
配置pam文件
# vim /etc/pam.d/vsftpd.vu (64位系統)
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list
# vim /etc/pam.d/vsftpd.vu (32位系統)
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
建立虛擬用戶對應的系統真實用戶
useradd wangxu4 -d /data -s /sbin/nologin
chown wangxu4.wangxu4 -R /data
注:在虛擬主機服務器上用nginx,用戶爲www,所以我的配置爲虛擬用戶爲www
第三步、修改配置文件
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_file=/var/log/xferlogxferlog_std_format=YESdual_log_enable=YESvsftpd_log_file=/var/log/vsftpd.logascii_upload_enable=YESascii_download_enable=YESftpd_banner=Welcome to FTP service.chroot_local_user=YESlisten=YESlisten_port=2121allow_writeable_chroot=YESuserlist_enable=YEStcp_wrappers=YESguest_enable=YESguest_username=wangxu4pam_service_name=vsftpd.vuuser_config_dir=/etc/vsftpd_vuvirtual_use_local_privs=YES
註釋如下:
anonymous_enable=NO
設定不允許匿名訪問
local_enable=YES
設定本地用戶可以訪問。注意:主要是爲虛擬宿主用戶,如果該項目設定爲NO那麼所有虛擬用戶將無法訪問。
write_enable=YES
設定可以進行寫操作。
local_umask=022
設定上傳後文件的權限掩碼。
anon_upload_enable=NO
禁止匿名用戶上傳。
anon_mkdir_write_enable=NO
禁止匿名用戶建立目錄。
dirmessage_enable=YES
設定開啓目錄標語功能。
xferlog_enable=YES
設定開啓日誌記錄功能。
connect_from_port_20=YES
設定端口20進行數據連接。
chown_uploads=NO
設定禁止上傳文件更改宿主。
xferlog_file=/var/log/vsftpd.log
設定Vsftpd的服務日誌保存路徑。注意,該文件默認不存在。必須要手動touch出來,並且由於這裏更改了Vsftpd的服務宿主用戶爲手動建立的Vsftpd。必須注意給與該用戶對日誌的寫入權限,否則服務將啓動失敗。
xferlog_std_format=YES
設定日誌使用標準的記錄格式。
nopriv_user=vsftpd
設定支撐Vsftpd服務的宿主用戶爲手動建立的Vsftpd用戶。注意,一旦做出更改宿主用戶後,必須注意一起與該服務相關的讀寫文件的讀寫賦權問題。比如日誌文件就必須給與該用戶寫入權限等。
async_abor_enable=YES
設定支持異步傳輸功能。
ascii_upload_enable=YES
ascii_download_enable=YES
設定支持ASCII模式的上傳和下載功能。
ftpd_banner=Welcome to Awei FTP servers
設定Vsftpd的登陸標語。
chroot_local_user=YES
禁止本地用戶登出自己的FTP主目錄。
pam_service_name=vsftpd
設定PAM服務下Vsftpd的驗證配置文件名。因此,PAM驗證將參考/etc/pam.d/下的vsftpd文件配置。
以下這些是關於Vsftpd虛擬用戶支持的重要配置項目。默認Vsftpd.conf中不包含這些設定項目,需要自己手動添加配置。
guest_enable=YES
設定啓用虛擬用戶功能。
guest_username=ftp
指定虛擬用戶的宿主用戶。
virtual_use_local_privs=YES
設定虛擬用戶的權限符合他們的宿主用戶。
user_config_dir=/etc/vsftpd/vconf
設定虛擬用戶個人Vsftp的配置文件存放路徑。也就是說,這個被指定的目錄裏,將存放每個Vsftp虛擬用戶個性的配置文件,一個需要注意的
地方就是這些配置文件名必須和虛擬用戶名相同。
第四步、建立日誌
因爲默認vsftpd的日誌文件不存在,需要手工建立,同時賦予權限
# touch /var/log/vsftpd.log
# chown /var/log/vsftpd.log
第五步、建立虛擬用戶配置文件
# mkdir /etc/vsftpd_vu/
所有權限
# vim /etc/vsftpd_vu/user1
write_enable=YES anonymous_enable=NO anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_umask=022 download_enable=Yes local_root=/data/user1
上傳權限
# vim /etc/vsftpd_vu/user2
write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_umask=022 download_enable=NO local_root=/data/user2
只能下載
# vim /etc/vsftpd_vu/user3
write_enable=NO anon_world_readable_only=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO local_umask=022 download_enable=yes local_root=/data/user3
啓動服務
#service vsftpd start
新版本vsftpd一定要加上allow_writeable_chroot=YES,否則登錄報500錯誤