我使用的是CentOS6安裝的vsftpd,轉載請注明出處,以下是我的記錄:
#查看是否已經安裝了vsfptd
vsftpd -v
#安裝
yum -y install vsftpd
#創建:chroot_list 文件
touch /etc/vsftpd/chroot_list
----- 配置虛擬用戶登錄 -----
首先安裝 FTP 虛擬用戶需要用到的軟件及認證模塊
yum install pam* db4* --skip-broken –y
#創建一個ftpusers.txt文件
vim /etc/vsftpd/ftpusers.txt
#寫入賬號及密碼,用來保存虛擬用戶賬號及密碼信息,格式是:比如第1行為賬號,第2行就是秘密,依此類推:
test1 123456 test2 654321
注意:如果直接復制以上賬號密碼會自動在后面添加空格,導致登錄不成功。
#修改權限:
chmod 700 /etc/vsftpd/ftpusers.txt
#生成虛擬用戶數據庫文件:
需要注意的是,以后對虛擬用戶的增刪操作完之后需要再次執行此命令,使其生成新的數據文件。
db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
#修改權限:
chmod 700 /etc/vsftpd/vsftpd_login.db
#設置PAM驗證文件,並制定虛擬用戶數據庫文件進行讀取
對原驗證文件備份后進行更改:
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.back
#修改/etc/pam.d/vsftpd文件:
vim /etc/pam.d/vsftpd
在最頂部添加以下兩項:
auth sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
#創建虛擬用戶配置目錄,用來單獨配置不同虛擬用戶訪問不同目錄等。
mkdir /etc/vsftpd/vsftpd_user_conf
#創建一個與虛擬用戶同名稱的文件,用來單獨配置這個虛擬用戶的訪問目錄。
vim /etc/vsftpd/vsftpd_user_conf/test1
#寫入配置內容:
local_root=/home/www/test1 write_enable=YES anon_world_readable_only=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
#創建test1用戶訪問的目錄:
mkdir -p /home/www/test1
#創建 vsftpd 映射本地用戶:
所有的 FTP 虛擬用戶需要使用一個系統用戶,這個系統用戶不需要密碼,也不需要登錄。 主要用來做虛擬用戶映射使用。
useradd -d /home/www -s /sbin/nologin ftpuser
#設置權限:
chown -R ftpuser:ftpuser /home/www
#備份vsftpd.conf文件:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back
#清空vsftpd.conf內容:
cat /dev/null > /etc/vsftpd/vsftpd.conf
#修改
vim /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/vsftpd.log
idle_session_timeout=600
data_connection_timeout=6
listen=YES
listen_port=21
allow_writeable_chroot=YES
local_root=/home/www
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list
pasv_enable=YES
pasv_min_port=10240
pasv_max_port=10260
pam_service_name=vsftpd
guest_enable=YES
guest_username=ftpuser
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
reverse_lookup_enable=NO
#然后在防火牆規則(CentOS6)
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20:21 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 10240:10260 -j ACCEPT
CentOS7
systemctl start firewalld firewall-cmd --zone=public --add-port=20-21/tcp --permanent firewall-cmd --zone=public --add-port=10240-10260/tcp --permanent firewall-cmd --reload
#如果用的雲服務器,還要在雲服務器在安全組設置開放端口:20-21和10240-10260
#剛安裝的vsftpd默認是沒有啟動的。全部配置好了之后啟動以下vsftpd。
#vsftpd開啟、關閉、重啟服務(以下只適合CentOS6及CentOS6以下版本,CentOS7命令不同)
設置開機自啟:chkconfig vsftpd on (CentOS7使用systemctl enable vsftpd)
啟動:/etc/init.d/vsftpd start 或者 service vsftpd start (CentOS7使用systemctl start vsftpd)
停止:/etc/init.d/vsftpd stop 或者 service vsftpd stop (CentOS7使用systemctl stop vsftpd)
重啟: /etc/init.d/vsftpd restart 或者 service vsftpd restart (CentOS7使用systemctl restart vsftpd)
查看狀態:/etc/init.d/vsftpd status 或者 service vsftpd status
#卸載vsftpd
rpm -e vsftpd
客戶端電腦安裝“FileZilla”連接ftp服務器,這個是免費的,Mac、Windows版都有,如果連接錯誤(提示被動模式的問題,則在FileZilla中的設置項中被動模式設置為:退回到主動模式)
vsfptd.conf配置詳解:
# vsftp conf /etc/vsftpd.conf
#不允許匿名用戶登陸
anonymous_enable=NO
#vsftpd所在系統的用戶可以登錄vsftpd
local_enable=YES
#允許使用任何可以修改文件系統的FTP的指令
write_enable=YES
#匿名用戶新增文件的umask數值
local_umask=022
#允許為目錄配置顯示信息,顯示每個目錄下面的message_file文件的內容
dirmessage_enable=YES
#啟用一個日志文件,用於詳細記錄上傳和下載
xferlog_enable=YES
#開啟20端口
connect_from_port_20=YES
#記錄上傳下載文件的日志
xferlog_file=/var/log/vsftpd.log
#如果使用者在600秒內都沒有命令動作,就會斷開連接
idle_session_timeout=600
#如果服務器與客戶端的數據聯機已經成功建立 (不論主動還是被動聯機),但是可能由於線路問題導致6秒內還是無法順利的完成數據的傳送,那客戶端的聯機就會被我們的 vsftpd 強制剔除!
data_connection_timeout=6
listen=YES
listen_port=21
#從2.3.5之后,vsftpd增強了安全檢查,如果用戶被限定在了其主目錄下,則該用戶的主目錄不能再具有寫權限了!如果檢查發現還有寫權限,就會報該錯誤。所以2.3.5之后的版本需要設置此項
allow_writeable_chroot=YES
#用戶默認訪問的根目錄
local_root=/home/www
#限制用戶在自己的家目錄之內,如果chroot_local_user=YES且chroot_list_enable=YES則在chroot_list中的用戶都是不受限制的用戶。如果chroot_local_user=NO且chroot_list_enable=YES則在chroot_list中的用戶都是受限制的用戶
chroot_local_user=YES
#限制某用戶只能訪問自己的目錄,與chroot_list_flie有關!這個項設置要開啟,否則chroot_list_file文件會無效
chroot_list_enable=YES
#限制某用戶只能訪問自己的目錄,將用戶名寫進這個文件,要確保設置chroot_list_enable=YES才有效
chroot_list_file=/etc/vsftpd/chroot_list
#是否借助 vsftpd 的抵擋機制來處理某些不受歡迎的賬號,與userlist_deny設置有關
userlist_enable=YES
#當userlist_enable=YES時才會生效,若為YES則當使用者賬號被列入到相應的文件時,在該文件內的使用者將無法登入vsftpd服務器!該文件名與userlist_file設置有關
userlist_deny=YES
#若userlist_deny=YES,則這個設置才有用!在這個文件內的賬號都無法使用vsftpd
userlist_file=/etc/vsftpd/user_list
pasv_enable=YES
pasv_min_port=10240
pasv_max_port=10260
#設定pam服務下的vsftpd驗證配置文件名。因此,PAM驗證將參考/etc/pam.d/下的vsftpd文件配置
pam_service_name=vsftpd
###### 以下是關於虛擬用戶支持的重要配置項目,默認.conf配置文件中是不包含這些項目的,需手動添加。 ######
#啟用虛擬用戶功能
guest_enable=YES
#指定虛擬的宿主用戶
guest_username=ftpuser
#設定虛擬用戶的權限符合他們的宿主用戶
virtual_use_local_privs=YES
#設定虛擬用戶個人vsftp的配置文件存放路徑。這個被指定的目錄里,將被存放每個虛擬用戶個性的配置文件,注意的地方是:配置文件名必須和虛擬用戶名相同
user_config_dir=/etc/vsftpd/vsftpd_user_conf
#禁止反向域名解析,若是沒有添加這個參數可能會出現用戶登陸較慢,或則客戶鏈接不上ftp的現象
reverse_lookup_enable=NO
#快速清空vsftpd.conf內容的另一種方法:
vim /etc/vsftpd/vsftpd.conf 打開文件
用輸入“G”跳到最后一行,再輸入“:1,.d”即可清空。
----- 配置系統用戶登錄 -----
#創建系統用戶登錄
useradd test_user
passwd test_user
使用test_user用戶登錄vsftpd會自動創建一個/home/www/test_user的目錄