vsftp
- 端口
- 模式
- 安装
- 匿名用户认证
- 本地用户认证
- 虚拟用户认证
端口
20:用于传输数据
21:用于传输指令
模式
主动模式:服务器主动连接客户端传输
被动模式:服务器等待客户端的连接
安装
rpm -qa|grep vsftpd # 查看服务器是否安装
yum -y install vsftpd # 服务端yum安装
systemctl start vsftpd # 启动服务
systemctl enable vsftpd # 设置开机自启
ss -lntup # 查看21端口有没有运行,没数据的时候只有21端口
匿名用户认证
安装完vsftp服务自动开启匿名认证,工作目录是/var/ftp/pub,此时可以访问/var/ftp/pub
但是不能上传,修改,删除,需要修改配置文件,下面是匿名用户需要用到的配置
anonymous_enable=YES # 开启匿名登录,默认是开启的
anon_upload_enable=YES # 开启匿名上传创建功能
anon_mkdir_write_enable=YES # 开启匿名创建
anon_other_write_enable=YES # 开放其他写入权(删除,覆盖,重命名)
anon_umask=022 # 匿名用户上传文件的权限掩码
anon_root=/var/ftp # 匿名用户的FTP根目录
anon_max_rate=0 # 限制最大传输速率(0是不限速,单位Bytes/秒)
chown ftp.ftp /var/ftp/pub
修改完配置文件之后还需要修改/var/ftp/pub文件的权限,ftp中用户对文件的权限控制分为两块,配置文件的权限,和用户本身对工作目录的权限
本地用户认证
ftp可以基于本地系统账户进行认证,每个用户的工作目录是自己的家目录,所以创建用户的时候要注意用户的家目录位置和是配置文件中ftp目录的位置
useradd zhangsan -s /sbin/nologin -d /var/ftp/zhangsan # ftp账户不能登录,并指定家目录
useradd lisi -s /sbin/nologin -d /var/ftp/lisi
useradd wangwu -s /sbin/nologin -d /var/ftp/wangwu
echo "123456" | passwd --stdin zhangsan
echo "123456" | passwd --stdin lisi
echo "123456" | passwd --stdin wangwu
关于本地用户认证的一些配置
local_enable=YES # 是否启用本地系统用户
local_umask=022 # 本地用户所上传文件的权限掩码
local_root=/var/ftp # 设置本地用户的ftp目录
chroot_local_user=YES # 是否将用户禁锢在主目录
chroot_list_enable # 允许白名单的用户随意切换目录
chroot_list_file=/etc/vsftpd/chroot_list # 白名单的位置,需要自己创建,直接在里边写用户就行了
local_max_rate=0 # 限制最大传输速率
ftpd_banner=Welcome to my ftp # 用户登录时显示的欢迎信息
userlist_enabel=YES & userlist_deny=YES # 禁止/etc/vaftpd/user_list 文件中出现的用户登录FTP
usetlist_enabel=YES & userlist_deny=NO # 仅允许/etc/vaftpd/user_list 文件中出现的用户登录FTP
/etc/vsftpd/ftpusers 文件中出现的用户名不能登录ftp,比user_list权限高,即时生效,不用重启
虚拟用户认证
首先我们创建存放虚拟用户密码的数据库文件
vi /etc/vsftpd/virtual_user # 该文件名称随意,奇数行用户名,偶数行密码
db_load -T -t hash -f virtual_user virtual_user.db # 转化为数据库文件
chmod 600 virtual_user.db # 给数据库文件修改权限
创建用于代理虚拟用户登录的本地用户
useradd virtual -d /var/virtual -s /sbin/nologin
认证文件
cp -a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam # 复制一份pam认证文件
vi /etc/pam.d/vsftpd.pam # 修改新生成的pam认证文件,添加对于虚拟用户的认证支持,修改为以下内容
auth required pam_userdb.so db=/etc/vsftpd/virtual_user
account required pam_userdb.so db=/etc/vsftpd/virtual_user
在vsftpd配置文件中设置虚拟用户认证
vi /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.pam
guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd/config_dir
创建用户配置,细分用户的权限,个人配置文件以用户名命名
anon_upload_enable=YES # 允许上传文件
anon_mkdir_write_enable # 允许创建目录
anon_upload_enable=YES # 允许上传文件(为了覆盖开启的)
anon_other_write_enabel=YES # 允许文件更名,删除,覆盖