centos7搭建vsftp 多用户 多目录
-
安装vsftp以及密钥数据库
sudo yum install -y vsftp sudo yum -y install libdb-utils # sudo yum install pam* libdb-utils libdb* --skip-broken -y
-
增加虚拟用户& 数据目录 & 开放防火墙端口
sudo useradd -s /sbin/nologin virftp #创建虚拟用户数据目录(具体位置可自由指定,但是要与用户文件中的local_root匹配) sudo mkdir -p /data/virftp/ftpuat sudo mkdir -p /data/virftp/ftptest #目录授权 sudo chown virftp:virftp /data/virftp #开放防火墙端口 sudo firewall-cmd --zone=public --add-port=21/tcp --permanent #允许外联ftp通过如下端口访问(需要与vsftpd.conf的pasv_min_port和pasv_max_port保持一致) sudo firewall-cmd --zone=public --add-port=40000-45000/tcp --permanent #生效配置 sudo firewall-cmd --reload
-
配置文件vsftpd.conf
#基本操作:备份 sudo cp /etc/vsftpd/vsftpd.conf{,.bak} #设置配置信息 sudo vim /etc/vsftpd/vsftpd.conf
#禁止匿名用户登录 anonymous_enable=NO #允许本地用户登录 local_enable=YES #启用虚拟账户 guest_enable=YES #把虚拟账户映射virftp,之后所有的虚拟用户都在这个目录下 guest_username=virftp #使用虚拟用户验证(PAM验证) pam_service_name=vsftpd #设置存放各虚拟用户配置文件的目录(此目录下与虚拟用户名相同的文件为它的配置文件) user_config_dir=/etc/vsftpd/vsftpd_viruser #启用chroot时,虚拟用户根目录允许写入 allow_writeable_chroot=YES #被动模式,文件传输端口的最大最小范围 pasv_min_port=40000 pasv_max_port=45000
-
配置用户参数
#创建并打开目标文件 sudo vim /etc/vsftpd/vir_user # 新建ftpuat 和 ftptest用户 #拷贝下列四行进去(第一行是user 第二行是passwd 第三行是user 第四行是passwd 依次类推 奇偶交替 不要有空行和空格) ftpuat ftpuat_pwd ftptest ftptest_pwd #创建虚拟用户配置目录 sudo mkdir -p /etc/vsftpd/vsftpd_viruser/ #创建虚拟用户配置文件 每个虚拟用户一个 这里用ftpuat用户作为例子 sudo vim /etc/vsftpd/vsftpd_viruser/ftpuat
#ftpuat文件的内容 #指定虚拟用户目录 local_root=/data/virftp/ftpuat # 上传文件的掩码,如022时,上传目录权限为755,文件权限为644 anon_umask=022 # 允许写入 write_enable=YES #允许浏览FTP目录和下载 anon_world_readable_only=NO #允许上传 anon_upload_enable=YES #允许下载 download_enable=YES # 允许创建目录 anon_mkdir_write_enable=YES # 允许用户执行其他操作(如改名、删除) anon_other_write_enable=YES
-
配置pam验证文件
#基本操作 备份 sudo cp /etc/pam.d/vsftpd{,.bak} #打开目标文件 删除掉全部的auth 和account开头的行 sudo vim /etc/pam.d/vsftpd # 将下列两行添加到目标文件中 auth required pam_userdb.so db=/etc/vsftpd/vir_user account required pam_userdb.so db=/etc/vsftpd/vir_user
-
最后一步生成虚拟数据库
sudo db_load -T -t hash -f /etc/vsftpd/vir_user /etc/vsftpd/vir_user.db sudo chmod 700 /etc/vsftpd/vir_user.db
-
完成,开启服务器
sudo systemctl restart vsftpd
-
如果增加新的虚拟用户,请参考下面
# 参考第四步 增加用户配置信息之后 执行下列命令 sudo db_load -T -t hash -f /etc/vsftpd/vir_user /etc/vsftpd/vir_user.db sudo systemctl restart vsftpd