实验环境
server主机:
# westos_node1
# 172.25.254.250
# selinux关闭
# 火墙开启
# dnf安装设定完成
#
#client主机:
# westos_linux
# 172.25.254.100
# selinux关闭
# dnf安装设定完成
# 安装lftp #ftp协议文本浏览器
1.ftp介绍
ftp:file transfer proto
互联中最老牌的文件传输协议
2.vsftpd安装及启用
vsftpd:能够提供ftp服务的其中之一;(全称:very secure FTP daemon)
dnf install vsftpd -y #server————服务端
dnf install lftp -y #client—————客户端
关闭selinux
systemctl disable --now firewalld
vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=YES ##启动匿名用户的访问功能
systemctl restart vsftpd
测试安装发布:
firefox ftp://ip
lftp ip ##此访问方式必须能列出资源才算访问成功
##在使用完成后请输入exit推出lftp
3.vsftpd基本信息
服务名称:vsftpd.service
配置目录:/etc/vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
默认发布目录:/var/ftp
报错信息:
550 ##程序本身拒绝
553 ##文件系统权限限制
500 ##权限过大
530 ##认证失败
4.匿名用户访问控制
man 5 vsftpd.conf可以查询相关参数
lftp 192.168.0.10 ##当访问ftp服务时没有加入用户认证为匿名访问
lftp 192.168.0.10 -u westos ##本地用户访问,本地用户为服务器用户,访问路径为本地用家目录
登陆控制
anonymous_enable=YES|NO
家目录控制
anon_root=/westosdir
上传控制
anon_upload_enable=YES|NO
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub ##设定权限后,匿名用户可以进行上传
lftp 192.168.0.100
cd pub
put /etc/passwd
目录建立控制
anon_mkdir_write_enable=YES|NO ##允许匿名用户建立目录
下载控制
anon_world_readable_only=NO ##允许匿名用户下载不能读的文件
删除、重命令控制
anon_other_write_enable=YES|NO
匿名用户上传文件权限设定、匿名用户默认建立文件预留权限
anon_umask=xxx
anon_umask=022 ##当设定chown_username之后上传文权限将不是用此参数设定
匿名用户上传文件的用户身份设定 ##匿名用户默认使用服务器中的ftp用户进行文件管理动作
chown_upload=YES
chown_username=lee ##可用id lee查询
chown_upload_mode=0644 ##0644为能够得到的权限值
登陆数量控制: ##默认情况下,不限制客户端登录数量
max_clients=2
上传速率控制
anon_max_rate=102400
5.本地用户的访问
登陆控制
useradd westos
useradd lee
echo lee | passwd --stdin westos
echo lee | passwd --stdin lee
lftp 192.168.0.10 -u westos
进入文件设置:vim /etc/vsftpd/vsftpd.conf
local_enable=NO|YES ##本地用户能否登录
家目录控制:local_root=/software ##默认登录到自己的家目录
写权限控制:write_enable=NO|YES ##本地用户默认可写
上传文件权限控制:local_umask=077 ##默认umask为022;设置后,上传的文件umask为077
用户登陆控制
/etc/vsftpd/ftpusers ##永久黑名单
/etc/vsftpd/user_list ##默认黑名单
用户登陆白名单
userlist_deny=NO #设定/etc/vsftpd/user_list为白名单
#不在名单中的用户不能登陆ftp
锁定用户到自己的家目录中 ##默认本地用户登录系统后可以自由浏览“/”目录
##锁定后,会限制用户浏览系统资源
chmod u-w /home/* ##不执行此命令,由于权限问题,可能会出错
chroot_local_user=YES
锁定用户到自己的家目录中的白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
锁定用户到自己的家目录中的黑名单
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
6.虚拟用户访问
#1.建立虚拟用户过程###########
1.vim /etc/vsftpd/ftp_auth_file #建立认证文件模板,westos1用户仅被ftp识别登录
westos1
123
westos2
123
westos3
123
2.db_load -T -t hash -f ftp_auth_file ftp_auth_file.db ##加密认证文件
##-T 转换 -t type -f 指定转换文件
3.vim /etc/pam.d/westos ##此目录为自主建立
account required pam_userdb.so db=/etc/vsftpd/ftp_auth_file ##account required:账户必须通过认证;
##认证模式:pam_userdb.so;ftp_auth_file后的.db会自主识别
auth required pam_userdb.so db=/etc/vsftpd/ftp_auth_file ##密码
4.vim /etc/vsftpd/vsftpd.conf ##文件最后几行更改
pam_service_name=westos ##指定认证策略文件(/etc/pam.d/westos)
guest_enable=YES ##指定虚拟用户功能开启
guest_username=ftp ##指定虚拟用户在ftp服务器上的用户身份
#2.虚拟用户家目录的独立设定######
mkdir -p /ftpuserdir/westos{1..3}
touch /ftpuserdir/westos1/westos1file
touch /ftpuserdir/westos2/westos2file
touch /ftpuserdir/westos3/westos3file
vim /etc/vsftpd/vsftpd.conf ##在最后几行添加
local_root=/ftpuserdir/$USER
user_sub_token=$USER ##声明$USER不是字符串,而是变量
systemctl restart vsftpd
7.用户配置独立
实验前把匿名用户的设置关闭
vim /etc/vsftpd/vsftpd.conf ##在最后一行添加即可
user_config_dir=/etc/vsftpd/user_config #在此目录中与用户名称相同的文件为用户配置文件
mkdir /etc/vsftpd/user_config
vim /etc/vsftpd/user_config/westos2
anon_upload_enable=YES
设定完成后westos2用户可以上传文件
westos1和westos3不行