参考资料
前置条件
- centos7
- 已安装vsftpd
yum install vsftpd
新建用于管理vsftpd的用户
useradd -c "FTP User" -d /home/vsftpd2 -s /sbin/nologin vsftpd2
passwd vsftpd2
新建配置文件
/etc/vsftpd/vsftpd2/vsftpd2.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
connect_from_port_20=YES
# 日志文件 自定义
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/vsftpd2_xferlog
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd2.log
allow_writeable_chroot=YES
listen=YES
# ftp监听端口 自定义
listen_port=10022
pasv_min_port=38000
pasv_max_port=39000
# 公网ip或者内网ip 自定义
pasv_address=xx.xx.xx.xx
#listen_data_port=1039
# 权限相关的名称(重要)自定义
pam_service_name=vsftpd2
userlist_enable=YES
tcp_wrappers=YES
check_shell=YES
chroot_local_user=YES
guest_enable=YES
# 上一步创建的用户
guest_username=vsftpd2
virtual_use_local_privs=YES
# 用户配置目录,自定义
user_config_dir=/etc/vsftpd/vsftpd2/user_conf
密码文件
/etc/vsftpd/vsftpd2/password.txt
test01
fdslfklsdfmsdflsdf222
test02
fdskwperpwejrmkld99
管理目录权限账号
- /etc/vsftpd/vsftpd2/user_conf/test01
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/vsftpd2/test01
max_clients=5
max_per_ip=5
local_max_rate=50000
- /etc/vsftpd/vsftpd2/user_conf/test02
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/vsftpd2/test02
max_clients=5
max_per_ip=5
local_max_rate=50000
- 创建存储目录,修改权限
mkdir /data/vsftpd2/test01
chown vsftpd2:vsftpd2 /data/vsftpd2/test01
mkdir /data/vsftpd2/test02
chown vsftpd2:vsftpd2 /data/vsftpd2/test02
生成账户的文件数据库
cd /etc/vsftpd/vsftpd2
db_load -T -t hash -f password.txt /etc/vsftpd/vsftpd2/vsftpd2_login.db
修改文件数据库访问权限
chown 600 /etc/vsftpd/vsftpd2/vsftpd2_login.db
手工建立虚拟用户所需的PAM配置文件
/etc/pam.d/vsftpd2
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd2/vsftpd2_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd2/vsftpd2_login
创建linux系统服务
# 查看vsftpd服务配置文件的位置
systemctl status vsftpd
# 复制配置文件
cp /usr/lib/systemd/system/vsftpd.service /usr/lib/systemd/system/vsftpd2.service
- 修改/usr/lib/systemd/system/vsftpd2.service如下
[Unit]
Description=Vsftpd2 ftp daemon
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd2/vsftpd2.conf
[Install]
WantedBy=multi-user.target
- 启动,设置开机启动
systemctl start vsftpd2
systemctl enable vsftpd2
开启防火墙
firewall-cmd --permanent --zone=public --add-port=38000-39000/tcp
firewall-cmd --permanent --zone=public --add-port=10022/tcp
firewall-cmd --reload
结语
按照此方法,可以启动多个vsftpd服务,而且不会影响已经安装的vsftpd服务