vsftpd安裝使用說明
vsftpd是在linux環(huán)境下,使用最多的FTP服務(wù)端軟件。
vsftpd默認(rèn)只能使用root用戶運(yùn)行。使用非root用戶運(yùn)行,需要在配置文件里設(shè)置run_as_launching_user=YES。
官方強(qiáng)烈不推薦使用這種方式啟動(dòng),會(huì)帶來巨大的安全問題,并且會(huì)導(dǎo)致無法使用chroot技術(shù)來限制文件訪問。
以下安裝配置均在root賬號(hào)下進(jìn)行。
安裝
yum install -y vsftpd
yum install -y db4 #設(shè)置虛擬賬戶的本地?cái)?shù)據(jù)庫(kù)文件用
也可以下載源碼安裝,解壓之后直接make & make install即可安裝。
不提供configure文件,所以無法指定路徑。
安裝完成后會(huì)在相關(guān)目錄生成文件,需要用到的如下:
/usr/sbin/vsftpd #vsftpd可執(zhí)行文件
/etc/vsftpd/vsftpd.conf #主配置文件
/etc/pam.d/vsftpd #PAM認(rèn)證文件
/etc/vsftpd.ftpusers #禁用使用VSFTPD的用戶列表文件
/etc/vsftpd.user_list #禁止或允許使用VSFTPD的用戶列表文件
配置
vsftpd主要配置
先對(duì)默認(rèn)配置文件進(jìn)行備份,再進(jìn)行配置。
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
配置文件具體配置如下:
anonymous_enable=NO #不允許匿名登錄
local_enable=YES
write_enable=YES
local_umask=022 #上傳文件權(quán)限補(bǔ)碼,最終上傳后的文件權(quán)限為 666-022=644
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=NO #虛擬賬戶配置下,在下面兩個(gè)chroot配置后,這個(gè)參數(shù)必須為NO,否則登陸FTP后還可以訪問其他目錄!
chroot_list_enable=YES
allow_writeable_chroot=YES
chroot_list_file=/home/ftp/config/chroot_list #指定不能離開家目錄的用戶列表文件,一行一個(gè)用戶。使用此方法時(shí)必須chroot_local_user=NO。說明這個(gè)列表里面的用戶登陸ftp后都只能訪問其主目錄,其他目錄都不能訪問!
listen=YES #監(jiān)聽I(yíng)PV4
listen_ipv6=NO #監(jiān)聽I(yíng)PV6,不能和上面的listen同時(shí)設(shè)置為YES
pam_service_name=vsftpd #指定PAM配置文件,即下面的/etc/pam.d/vsftpd文件要和這里指定的一致
userlist_enable=YES
tcp_wrappers=YES
virtual_use_local_privs=YES
guest_enable=YES #啟用虛擬賬戶
guest_username=chenxj #將虛擬用戶映射為本地chenxj用戶(前提是local_enable=YES),更安全的做法是映射為nobody用戶,因?yàn)閚obody的權(quán)限最低
user_config_dir=/home/ftp/config/vuser_conf #指定不同虛擬用戶配置文件的存放路徑
listen_port=21 #監(jiān)聽的ftp端口,改成其他端口,會(huì)導(dǎo)致無法啟動(dòng)
pasv_min_port=40001 #分配給ftp賬號(hào)的最小端口。被動(dòng)模式下的配置
pasv_max_port=40100 #分配給ftp賬號(hào)的最大端口。每個(gè)賬號(hào)分配一個(gè)端口,即最大允許100個(gè)ftp賬號(hào)連接
max_clients=150 #客戶端的最大連接數(shù)
accept_timeout=5
connect_timeout=1
max_per_ip=5 #每個(gè)ip最大連接數(shù)
以上配置有修改,需要重啟vsftpd服務(wù)才能生效。
虛擬賬戶設(shè)置
在自己決定的目錄(如:/home/ftp/config)新建vuser_passwd.txt,奇數(shù)行為賬號(hào),偶數(shù)行為密碼:
user1 #賬號(hào)1
user1@2018 #賬號(hào)1密碼
user2 #賬號(hào)2
user2@2018 #賬號(hào)2密碼
在此目錄下,生成虛擬用戶口令認(rèn)證的db文件,這是本地?cái)?shù)據(jù)庫(kù)文件:
cd /home/ftp/config
db_load -T -t hash -f vuser_passwd.txt vuser_passwd.db
chmod 600 vuser_passwd.db #安全起見,將該文件的權(quán)限設(shè)置為root讀寫
同時(shí)在該目錄下,新建chroot_list文件,即/etc/vsftpd/vsftpd.conf中的chroot_list_file=,并將虛擬賬戶的賬號(hào)放在這個(gè)文件中。
cat chroot_list
user1
user2
然后新建vuser_conf目錄,即/etc/vsftpd/vsftpd.conf中的user_config_dir=。用于存放每個(gè)虛擬賬戶的配置文件,虛擬賬戶的配置文件以虛擬賬戶的用戶名命名。
mkdir vuser_conf
vim user1
# 配置如下:
local_root=/home/ftp/data/user1 #目錄需已經(jīng)存在,擁有者需為/etc/vsftpd/vsftpd.conf 中g(shù)uest_username指定的用戶
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
以上配置有修改,不需要重啟vsftpd,即時(shí)生效。
PAM認(rèn)證
修改/etc/pam.d/vsftpd文件,注釋掉原來的內(nèi)容,在最后兩行添加認(rèn)證文件路徑,如下所示:
#%PAM-1.0
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
auth required /lib64/security/pam_userdb.so db=/home/ftp/config/vuser_passwd
account required /lib64/security/pam_userdb.so db=/home/ftp/config/vuser_passwd
中間使用Tab鍵分隔。
啟動(dòng)
systemctl start vsftpd #啟動(dòng)
systemctl restart vsftpd #重啟
systemctl stop vsftpd #停止
systemctl status vsftpd #查看狀態(tài)
管理
寫了3個(gè)小腳本來管理。
新增用戶
sh /home/ftp/script/setFTP.sh <user> <passwd> <path>
代碼如下:
#!/bin/sh
user=$1
passwd=$2
path=$3
echo $user >> /home/ftp/config/chroot_list
echo -e "$user\n$passwd" >> /home/ftp/config/vuser_passwd.txt
db_load -T -t hash -f /home/ftp/config/vuser_passwd.txt /home/ftp/config/vuser_passwd.db
mkdir $path
chown -R chenxj:chenxj $path
chmod 700 $path
echo -e "local_root=$path\nwrite_enable=YES\nanon_world_readable_only=NO\nanon_upload_enable=YES\nanon_mkdir_write_enable=YES\nanon_other_write_enable=YES" > /home/ftp/config/vuser_conf/$user
取消和恢復(fù)
如果希望某個(gè)路徑關(guān)閉FTP,則直接修改其權(quán)限為600即可,則在配置文件中local_root指定為該路徑的賬號(hào)全都無法登陸。同理,恢復(fù)則將權(quán)限修改為700:
sh /home/ftp/script/cancelFTP.sh <path> #chmod 600 $path
sh /home/ftp/script/recoverFTP.sh <path> #chmod 700 $path