vsftpd
1.1环境需求
服务器系统:CentOS7,vsftpd
客户端:win10,xftp客户端或浏览器
关防火墙、selinux
1.2安装epel源
# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # yum install -y epel-release
yum reinstall -y epel-release
1.3安装vsftpd及相关依赖
# yum -y install vsftpd* pam* db4*
pam:认证模块
DB4:支持文件数据库
1.4vsftpd配置文件说明
/etc/vsftpd/vsftpd.conf vsftpd的核心配置文件
/etc/vsftpd/ftpusers 用于指定哪些用户不能访问FTP服务器
/etc/vsftpd/user_list 指定允许使用vsftpd的用户列表文件
/etc/vsftpd/vsftpd_conf_migrate.sh 是vsftpd操作的一些变量和设置脚本
/var/ftp/ 默认情况下匿名用户的根目录
1.5vsftpd配置
write_enable=YES anon_umask=022 匿名用户上传文件权限掩码anonymous_enable=YES 匿名访问 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES 改,删,覆盖
anon_root=/var/ftp
anon_max_rate=0 限制最大传输速率(字节/秒)0为无限制
chown_uploads 匿名上传的文件是否由某一指定用户
chown_username (有效用户名)匿名上传的文件由该设定用户所有
xferlog_file (有效路径)设置日志文件的保存位置,默认/var/log/xferlog
local_enable=YES 是否允许本地系统用户访问
local_root=/var/ftp 设置本地用户的FTP根目录
chroot_list_enable=YES 表示是否开启chroot的环境,默认不开启
chroot_list_file=/etc/vsftpd/chroot_list 表示写在指定文件里的用户不可以出chroot环境,默认可以
chroot_local_user=YES 表示所有写在/etc/vsftpd/chroot_list文件里的用户可以出chroot环境。和上面相反
1.6vsftpd修改配置前备份配置文件
# cd /etc/vsftpd/ # cp vsftpd.conf{,.bak}
1.7vsftpd配置匿名用户
# cat vsftpd.conf |grep -v '^#' # vim /etc/vsftpd/vsftpd.conf write_enable=YES anon_umask=022 anonymous_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES dirmessage_enable=YES 当进入某个目录时,发送信息提示给远程远程用户 xferlog_enable=YES 是否开启上传和下载的日志记录 connect_from_port_20=YES 是否使用20端口来连接FTP xferlog_std_format=YES listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES # systemctl restart vsftpd # ps aux |grep vsftpd //修改权限实现上传 # cd /var/ftp/ # chown -R ftp.ftp pub/ # systemctl restart vsftpd
2.系统用户登录
2.1测试用户
# useradd zhangsan # useradd lisi # echo "12345" |passwd --stdin zhangsan # echo "12345" |passwd --stdin lisi # vim /etc/vsftpd/vsftpd.conf local_enable=YES local_umask=077 chroot_local_user=YES allow_writeable_chroot=YES write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd userlist_enable=YES userlist_deny=NO tcp_wrappers=YES # systemctl restart vsftpd # vim /etc/vsftpd/user_list 目前是白名单 zhangsan lisi # systemctl restart vsftpd # cd /home/zhangsan # touch zhangsan.txt # systemctl restart vsftpd
3.vsftp配置虚拟用户
3.1建立虚拟账号
# useradd -s /sbin/nologin vu
3.2创建虚拟用户文件
# cd /etc/vsftpd # vim user wangwu 12345 zhaoliu 12345
3.3创建数据文件
# db_load -T -t hash -f user user.db
-f 指定数据源文件
-T 允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件
-t hash 读取文件的基本方法
3.4建立支持虚拟用户的PAM认证文件
# vim /etc/pam.d/vsftpd.vu auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user account required /lib64/security/pam_userdb.so db=/etc/vsftpd/user
3.5修改配置文件
# vim /etc/vsftpd/vsftpd.conf :dG清空文档 write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES allow_writeable_chroot=YES guest_enable=YES //开启虚拟用户模式 guest_username=vu //指定虚拟用户账号映射到本地账号vftp pam_service_name=vsftpd.vu userlist_enable=YES userlist_deny=NO tcp_wrappers=YES local_enable=YES local_umask=077 chroot_local_user=YES //禁锢用户在其家目录 virtual_user_local_privs=YES user_config_dir=/etc/vsftpd/user_dir # mkdir /etc/vsftpd/user_dir # cd /etc/vsftpd/user_dir # vi zhao local_root=/etc/vsftpd/data # cd .. # mkdir data # chmod 777 data/ # systemctl restart vsftpd