1 安裝
現查看一下系統版本,確定適用的vsftpd版本
$ cat /etc/centos-release
CentOS Linux release 7.5.1804 (Core)
下載rpm包,然后安裝
$ sudo su -
# rpm -ivh vsftpd-3.0.2-28.el7.x86_64.rpm
默認安裝位置
# which vsftpd
/usr/sbin/vsftpd
# vsftpd -v
vsftpd: version 3.0.2
2 配置vsftpd
由于采用虛擬用戶登錄ftp server,先配置虛擬用戶
在/etc/vsftpd
目錄下創建一個vusers文件,記錄ftp的虛擬用戶名和密碼,單行是用戶名,雙行是密碼。文件名可以任意指定。我在文件中創建了一個虛擬用戶ftptest
,密碼是ftptest123
,如下所示:
# vim /etc/vsftpd/vusers
ftptest
ftptest123
然后使用db_load命令生成相應的認證數據文件,同樣數據文件的名字可以任意指定,我這里把文件名命名為vusers.db
# db_load -T -t hash -f /etc/vsftpd/vusers /etc/vsftpd/vusers.db
然后配置一個vsftpd的pam文件,因為ftp虛擬用戶的權限認證是委托給pam模塊進行認證的,這個文件指定pam使用上面生成的vusers.db
數據庫進行權限認證
# vim /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
上面pam_userdb.so
是pam具體執行認證的模塊,db指定我們上面生成的vusers.db
文件,注意,由于pam會自動在db文件后面添加.db
后綴,所以需要填寫.db
后綴
編輯vsftpd.conf配置文件
# vim /etc/vsftpd/vsftpd.conf
########## 全局配置 ##########
listen=YES
connect_from_port_20=YES
#pasv 傳輸方式端口上下限
pasv_min_port=61000
pasv_max_port=62000
write_enable=YES
local_umask=022
dirmessage_enable=NO
userlist_enable=YES
tcp_wrappers=YES
#設置禁止用戶跳出主目錄
chroot_local_user=NO
#設置允許特殊用戶跳出主目錄
chroot_list_enable=YES
#設置特殊用戶配置文件
chroot_list_file=/etc/vsftpd/chroot_list
########## 日志 ##########
xferlog_enable=YES
xferlog_std_format=YES
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
log_ftp_protocol=YES
########## 匿名用戶配置 ##########
#禁止匿名用戶訪問
anonymous_enable=NO
#指定匿名用戶訪問根目錄
anon_root=/home/ftp/ftptest
#匿名用戶允許上傳文件
anon_upload_enable=NO
#匿名用戶不允許創建文件夾
anon_mkdir_write_enable=NO
#匿名用戶不允許刪除/更名文件/文件夾
anon_other_write_enable=NO
#匿名用戶代理系統用戶
ftp_username=ftp
########## 虛擬用戶配置 ##########
# 設置運行本地用戶登錄
local_enable=YES
# 開啟虛擬用戶登錄
guest_enable=YES
#指定pam 服務名稱, 和/etc/pam.d 目錄下的文件vsftpd 保持一致
pam_service_name=vsftpd
# 設置虛擬用戶代理系統用戶名
guest_username=ftp
# 設置默認登錄路徑
local_root=/home/ftp/ftptest
# 設置具體用戶配置文件目錄
user_config_dir=/etc/vsftpd/vusers_conf
還可以為每個虛擬用戶設定單獨的配置文件,該文件中的配置會覆蓋/etc/vsftpd/vsftpd.conf
文件中的配置
# 虛擬用戶的配置文件統一放在vusers_conf目錄下
# mkdir -p /etc/vsftpd/vusers_conf
# 為虛擬用戶ftptest創建一個配置文件,文件名就是虛擬用戶的名字
# vim /etc/vsftpd/vusers_conf/ftptest
# 設定根目錄
local_root=/home/ftp/ftptest
# 設定權限,不擁有和代理系統用于同樣的權限
virtual_use_local_privs=YES
# 允許上傳文件
write_enable=YES
3 啟動
編輯vsftpd.service
文件
# cat /usr/lib/systemd/system/vsftpd.service
[Unit]
Description=Vsftpd ftp daemon
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
啟動
# systemctl daemon-reload
# systemctl enable etcd.service
# systemctl start etcd.service
驗證正常啟動
# lsof -i :21
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vsftpd 23431 root 4u IPv4 2474859639 0t0 TCP *:ftp (LISTEN)