Linux修炼之旅第一章!
来到第三本书的学习,第三本书系列文章将更多介绍Linux系统中网络层面的知识,首先第一章来介绍Vsftpd服务的部署及优化
下面我们就开始吧
文章目录
实验之前还是先来准备实验环境
将nodea主机的selinux关闭
vim /etc/sysconfig/selinux
然后重启
就关闭了selinux
这个步骤在服务主机与测试主机中都关闭
然后再服务主机中(nodea)
dnf install vsftpd -y
dnf install lftp -y
systemctl enable --now vsftpd
firewalld -cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
在测试主机中
dnf install lftp -y
一、vsftpd安装及启用
1.ftp协议是什么?
FTP 的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。
2.vsftpd的使用
完成一开始的实验环境搭建以后就可以来试着用一下了
在测试主机中
lftp 172.25.254.53 -u westos
再使用ls就可以看到用户的默认家目录了
如果要允许匿名用户登录
就在服务主机中输入
vim /etc/vsftpd/vsftpd.conf
将匿名用户的允许哪一行更改为如下样式
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
然后切记重启服务
systemctl restart vsftpd
在测试机中尝试匿名登陆
lftp 172.25.254.53
ls
如果将匿名用户设置为NO,则匿名用户登陆失败
二、vsftpd基本信息
服务名称:
vsftpd.service
配置目录:
/etc/vsftpd
主配置文件:
/etc/vsftpd/vsftpd.conf
默认发布目录:
/var/ftp
报错信息:
550 ##程序本身拒绝
553 ##文件系统权限限制
500 ##权限过大
530 ##认证失败
三、匿名用户访问控制
登陆控制
anonymous_enable=YES|NO
这个指令在一中的vsftpd的启用中已测试过,结果可以回看
家目录控制
anon_root=/westosdir
与登陆控制的步骤类似
在登陆控制指令下面加上家目录的路径,就可以访问到指定的家目录
测试的时候可以先在指定的家目录中创建一些文件,使结果更直观
测试完以后即使注释掉,防止影响后面的实验
上传控制
anon_upload_enable=YES|NO
用法依旧与一中展示的方法相同,本小节实验就不再赘述
可以看到匿名用户上传失败。出现550报错
然后就可以去授权
授权后再试会出现553报错
这时再给目录赋权,就可以解决了
可以看到问题成功解决
目录建立控制
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
登录进去以后输入ls
测试到第三个主机就不能访问内容了
上传速率控制
anon_max_rate=102400
四、本地用户的访问
登陆控制
useradd westos
useradd shy
echo westos | passwd --stdin westos
echo shy | passwd --stdin shy
lftp 172.25.254.53 -u westos
local_enable=NO|YES
家目录控制
local_root=/software
写权限控制
write_enable=NO|YES
上传文件权限控制
local_umask=077
用户登陆控制
/etc/vsftpd/ftpusers ##永久黑
/etc/vsftpd/user_list ##默认黑
在黑名单目录中输入shy
用户登陆白名单
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
名单里面内容不变还是shy,但是用户shy就被锁起来了
五、虚拟用户访问
1.建立虚拟用户过程
vim /etc/vsftpd/ftp_auth_file #建立认证文件模板
shy
123
hgx
123
gj
123
db_load -T -t hash -f ftp_auth_file ftp_auth_file.db ##加密认证文件 -T 转换 -t type -f 指定转换文件
vim /etc/pam.d/westos
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos ##指定认证策略文件
guest_enable=YES ##指定虚拟用户功能开启
guest_username=ftp ##指定虚拟用户在ftp服务器上的用户身份
测试一下啊
虚拟用户家目录的独立设定
mkdir -p /ftpuserdir/westos1
mkdir -p /ftpuserdir/westos2
mkdir -p /ftpuserdir/westos3
touch /ftpuserdir/westos1/westos1file
touch /ftpuserdir/westos2/westos2file
touch /ftpuserdir/westos3/westos3file
在示例中我设定的用户分别为shy,hgx,gj
对应的文件名分别为file1,file2,file3
vim /etc/vsftpd/vsftpd.conf
添加新的内容
local_root=/ftpuserdir/$USER
user_sub_token=$USER
测试
二.用户配置独立
仍以用户shy,hgx,gj为例
mkdir /ftphome/shy/pub
mkdir /ftphome/hgx/pub
mkdir /ftphome/gj/pub
chgrp ftp /ftphome/shy/pub
chgrp ftp /ftphome/hgx/pub
chgrp ftp /ftphome/gj/pub
chmod 775 /ftphome/hgx/pub
chmod 775 /ftphome/shy/pub
chmod 775 /ftphome/gj/pub
ls -ld /ftphome/shy/pub/
vim /etc/vsftpd/vsftpd.conf
修改配置文件
需要把虚拟用户的内容(带anony前缀的)都注释掉
只剩下anontmous_enable=YES
然后接着输入
systemctl restart vsftpd
vim /etc/vsftpd/chroot_list
删掉之前的黑名单
mkdir -p /etc/vsftpd/userconf
cd /etc/vsftpd/userconf/
vim shy
输入anon_upload_enable=YES
开始测试
可以看到由于只在文件中写了上传的权限,就算是用户登录也不可以执行删除操作,但是上传操作正常
对比shy用户,hgx用户没有写权限,所以什么都干不了