一、实验环境
#server主机: # carry # 172.25.254.20 # selinux关闭 # 火墙开启 # dnf安装设定完成 # #client主机: # Horizon_carry # 172.25.254.10 # selinux关闭 # dnf安装设定完成 # 安装lftp #ftp协议文本浏览器
二、 ftp介绍
ftp: file transfer proto
互联阿中最老牌的文件传输协议
三、vsftpd安装及启用
dnf install vsftpd -y 关闭selinux systemctl enable --now firewalld systemctl enable --now vsftpd firewalld -cmd --permanent --add-source=172.25.254.10 --zone=trusted systemctl restart firewalld vim /etc/vsftpd/vsftpd.conf 12 anonymous_enable=YES ##启动匿名用户的访问功能 systemctl restart vsftpd
测试安装发布:
- firefox ftp://ip
- lftp ip ##此访问方式必须能列出资源才算访问成功
##在使用完成后请输入exit推出lftp
四、vsftpd基本信息
服务名称: vsftpd.service 配置目录: /etc/vsftpd 主配置文件: /etc/vsftpd/vsftpd.conf 默认发布目录: /var/ftp 报错信息: 550 ##程序本身拒绝 553 ##文件系统权限限制 500 ##权限过大 530 ##认证失败
五、匿名用户访问控制
lftp 172.25.254.20 ##当访问ftp服务时没有加入用户认证为匿名访问 lftp 172.25.254.20 -u westos ##本地用户访问
在carry中: vim /etc/vsftpd/vsftpd.conf 登陆控制 anonymous_enable=YES|NO ##启动或关闭匿名用户的访问功能 家目录控制 anon_root=/westosdir ##更改家目录为westosdir 上传控制 anon_upload_enable=YES|NO ##开启上传的功能 chmod 777 /var/ftp/pub ## 修改文件夹权限为777 在Horizon_carry中: lftp 172.25.254.20 cd pub put /etc/passwd ##上传了/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之后上传文权限将不是用此参数设定 匿名用户上传文件的用户身份设定 chown_upload=YES chown_username=lee chown_upload_mode=0644 登陆数量控制: max_clients=2 ##最大登录数为2 上传速率控制 anon_max_rate=102400 ##最大上传速率为100KB/s
六、本地用户的访问
登陆控制
在carry中:
- useradd westos
- useradd lee
- echo lee | passwd --stdin westos
- echo lee | passwd --stdin lee
在Horizon_carry中:
- lftp 172.25.254.20 -u lee
在carry中: vim /etc/vsftpd/vsftpd.conf 登陆控制 local_enable=NO|YES ##启动或关闭用户的访问功能 家目录控制 local_root=/software 写权限控制 write_enable=NO|YES 上传文件权限控制 local_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
七、虚拟用户访问
1.建立虚拟用户过程 ##在carry中操作
vim /etc/vsftpd/ftp_auth_file #建立认证文件模板 westos1 123 westos2 123 westos3 123
2.加密认证文件
db_load -T -t type -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 auth required pam_userdb.so db=/etc/vsftpd/ftp_auth_file
4. vim /etc/vsftpd/vsftpd.conf
- pam_service_name=westos ##指定认证策略文件
- guest_enable=YES ##指定虚拟用户功能开启
- guest_username=ftp ##指定虚拟用户在ftp服务器上的用户身份
虚拟用户家目录的独立设定
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 systemctl restart vsftpd
用户配置独立设定
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不行