#yum install vsftpd
2.建立虛擬用戶,格式爲第一行爲用戶名名,第二行爲密碼,然後類推
#vim /home/loginuser.txt
3.爲虛擬用戶生成建立db數據庫,同時只有root用戶才能讀寫
# db_load -T -t hash -f /home/loginuser.txt /etc/vsftpd/vsftpd_login.db
# chmod 600 /etc/vsftpd/vsftpd_login.db
# u (64位系統)
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
# 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
5.建立虛擬用戶對應的系統真實用戶以及以及更改真實用戶的家目錄
# useradd -d /home/ftpsite -s /sbin/nologin virtual
# chown virtual:virtual /home/ftpsite
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
# vim /et/vsftpd/vsftpd.conf
7.建立虛擬用戶配置文件(我這次環境配置兩個用戶,一個管理員用戶和兩個普通用戶,管理用戶登錄FTP可以做任何操作,而普通用戶只能上傳不能下載另外一個只能下載不能上傳)
#mkdir /etc/vsftpd/vsftpd_user_conf
#cd /etc/vsftpd/vsftpd_user_conf/
#vim admin
#vim test
#vim user1
# service vsftpd restart
使用filezilla測試結果,我這裏測試下來完全沒有問題
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虛擬用戶個性的配置文件,一個需要注意的
地方就是這些配置文件名必須和虛擬用戶名相同。
anon_world_readable_only=NO 可讀可下載
anon_upload_enable=YES 可上傳
download_enable = NO 不能下載
anon_mkdir_write_enable=YES 可創建和刪除文件夾
anon_other_write_enable=YES 可文件改名和刪除文件
local_root=/home/ftpsite/mike 指定mike的宿主目錄
上述權限如果不能滿足需求,可以配合acl 來實現
參考鏈接1:http://www.cnblogs.com/ZhangShuo/articles/1836971.html
參考鏈接2:http://man.linuxde.net/setfacl
更於2015-12-8 17:25
補充:由於企業服務器裏面都設置了防火牆策略iptables,這個時候服務器端就需要開放防火牆,但客戶端訪問服務器的端口是隨機的,所以需要在vsftpd.conf這個配置文件裏添加以下參數
pasv_min_port=50000
pasv_max_port=50050
防火牆
iptables -A INPUT -p tcp -m state --state NEW --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 20 -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state NEW --sport 21 -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state NEW --sport 21 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 50000:50050 -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state NEW --sport 50000:50050 -j ACCEPT