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ù)庫文件用
也可以下載源碼安裝图云,解壓之后直接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)聽IPV4
listen_ipv6=NO #監(jiān)聽IPV6,不能和上面的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ù)庫文件:
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