vsftpd安裝完畢後,咱們如今開始配置vsftpd,不過在正式配置以前,咱們還有幾步工做要作。linux
3.1 用戶相關配置 由於是使用vsftpd的虛擬用戶,因此咱們須要先在系統中建立一個用戶,而且該用戶對/www目錄具備可讀可寫可執行權限。ubuntu
建立用戶,以下:vim
sudo useradd -m -s /bin/bash virtual安全
cat /etc/passwd |grep virtualbash
注意:建立的用戶ftpilanni如今是沒法登陸到系統的,由於沒有給該用戶設置密碼。在此,咱們也無需ftpilanni登陸到系統,這樣相對來講比較安全。post
用戶建立完畢後,咱們來建立對應的目錄並修改其所屬用戶,以下:測試
sudo mkdir /wwwui
sudo chown -R virtual:virtual /www/加密
有關用戶相關配置結束後,咱們開始設置登陸vsftp的用戶與密碼文件login.txt。以下:rest
sudo mkdir /etc/vsftpd/
sudo vim /etc/vsftpd/login.txt
ailanni ailannipassword
login.txt爲登陸vsftpd的用戶與密碼文件。
login.txt設置完畢後,咱們要使用db_load進行加密。而db_load須要db-util這個軟件。因此須要咱們如今安裝db-util,以下:
sudo apt-get -y install db-util
db-util安裝完畢後,如今開始使用db_load對loginx.txt進行加密。以下:
sudo db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db
loginx.txt加密完成後,咱們如今開始配置vsftpd的PAM驗證。
3.2 PAM驗證配置 vsftpd的PAM驗證,在此我沒有使用vsftpd安裝時所生成的/etc/pam.d/vsftpd文件。
由於通過我屢次的測試,發現若是使用該文件進行驗證的話,沒法驗證經過。不知道爲何,猜測頗有多是vsftpd的一個BUG。
建立驗證文件,以下:
sudo vim /etc/pam.d/vsftpd.virtual
auth required pam_userdb.so db=/etc/vsftpd/login
account required pam_userdb.so db=/etc/vsftpd/login
vsftpd.virtual文件的內容,也能夠根據OS的版本進行調整。我如今使用的是ubuntu x64,因此也能夠填寫爲:
auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/login
其中/etc/vsftpd/login對應/etc/vsftpd/login.db文件
3.3 vsftp權限配置 如今正式配置vsftpd,vsftpd的幾乎全部配置項都在/etc/vsftpd.conf文件中進行。
根據業務要求vsftpd.conf配置內容以下:
grep -vE 「^#|^$」 /etc/vsftpd.conf
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
guest_enable=YES
pam_service_name=vsftpd.virtual
user_config_dir=/etc/vsftpd/vu
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
在以上配置文件中,有幾點須要重點指出。
local_enable=YES
write_enable=YES
local_umask=022
這兩項是啓用系統用戶的寫權限。特別是write_enable=YES項必定要啓用,不然vsftpd虛擬用戶將沒法登陸vsftpd。
爲何會是這樣?由於虛擬用戶依賴與系統用戶。
chroot_local_user=YES
chroot_list_enable=NO
這三項是配置vsftpd用戶禁止切換上級目錄的權限。
guest_enable=YES
pam_service_name=vsftpd.virtual
user_config_dir=/etc/vsftpd/vu
這三項是啓用vsftpd虛擬用以及虛擬用戶帳號配置目錄。
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
這三項是啓用vsftpd被動模式及相關端口。
3.4 虛擬用戶相關配置 vsftpd配置文件修改文件後,如今開始配置虛擬用戶的相關權限。以下:
sudo mkdir /etc/vsftpd/vu
sudo vim /etc/vsftpd/vu/ailanni
guest_username=virtual
local_root=/www/
virtual_use_local_privs=YES
anon_umask=133
以上配置參數,其中guest_username=ftpilanni表示的是設置FTP對應的系統用戶爲ftpilanni
local_root=/www/表示使用本地用戶登陸到ftp時的默認目錄。
virtual_use_local_privs=YES虛擬用戶和本地用戶有相同的權限。
anon_umask表示文件上傳的默認掩碼。計算方式是777減去anon_umask就是上傳文件的權限。在此咱們設置的是133,也就是說上傳後文件的權限是644。即上傳的文件對所屬用戶來講只有讀寫權限,沒有執行權限。
chkconfig vsftpd on ---設置自動啓動
sudo service vsftpd restart ---重啓vsftpd來生效
IPtables配置以下:
sudo iptables-save >/home/ilanni/iptables.rule
clip_image017
sudo iptables-restore < /home/ilanni/iptables.rule
sudo iptables -nL
sudo vim /etc/network/interfaces
pre-up iptables-restore < /home/ilanni/iptables.rule
post-down iptables-save < /home/ilanni/iptables.rule