Linux下ftp服务

前期准备:
在虚拟机上
vim /etc/sysconfig/selinux ##关闭内核加强型火墙
SELINUX=disabled
在这里插入图片描述

reboot
getenforce ##确认内核加强型火墙已经关闭

在这里插入图片描述
hostnamectl 查看系统版本
yum install lftp -y

1.ftp的定义

ftp:// ##文本传输协议

2.ftp协议提供的软件

在rhel7中:
vsftpd

3.部署ftp服务

ftp服务的基本信息
软件安装包: vsftpd
默认发布目录: /var/ftp
协议接口: 21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf

报错id的解析:

530 #用户认证失败
500 #文件系统权限过大
553 #本地文件系统权限过小服务器的权限系统拒绝操操
550 #服务本身功能未开放

1)安装ftp服务
yum install vsftpd -y
2)开启ftp服务
systemctl start vsftpd
systemctl enable vsftpd

在这里插入图片描述
3)设置防火墙永久允许ftp服务运行

方法1:直接通过命令实现
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
firewall-cmd --list-all
在这里插入图片描述
方法2:通过图形进行设置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在主机上测试是否成功开启ftp服务

在这里插入图片描述

4.ftp服务的管理

编辑ftp配置文件
vim /etc/vsftpd/vsftpd.conf
注意:每次编辑配置文件后需要重启ftp服务才能生效,编辑时每行后面不要加空格否则服务会起不来
在这里插入图片描述
匿名用户
anonymous_enable=YES|NO ##匿名用户是否可以登陆
当anonymous_enable=NO时
在这里插入图片描述
再次从真机上登陆时会发现无法使用匿名用户登陆
在这里插入图片描述

本地用户
local_enable=YES|NO ##本地用户是否可以登陆

wirte_enable=YES|NO ##ftp是否对登陆用户可写

1)匿名用户上传
vim /etc/vsftpd/vsftpd.conf
wirte_enable=YES
anon_upload_enable=YES
在这里插入图片描述
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub

测试:
在这里插入图片描述
如果你按着这个步骤来仍然报错553那说明你前期准备没做或者做了以后虚拟机reset了

2)匿名用户家目录修改
anon_root=/westos
在这里插入图片描述

systemctl restart vsftpd
mkdir /westos
touch /westos/westosfile

测试:
在这里插入图片描述

3)匿名用户上传文件默认权限修改
anon_umask=022
在这里插入图片描述
测试:
在这里插入图片描述

4)匿名用户建立目录
anon_mkdir_write_enable=YES|NO
在这里插入图片描述

测试:
在这里插入图片描述

5)匿名用户下载
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载
在这里插入图片描述
测试:

在这里插入图片描述

6)匿名用户删除
anon_other_write_enable=YES|NO
在这里插入图片描述

测试:

在这里插入图片描述

7)匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student
chown_upload_mode=0644
在这里插入图片描述
测试:

在这里插入图片描述

在这里插入图片描述
上传文件的所有人变为了student,权限为644

8)最大上传速率
anon_max_rate=102400 ##100k
在这里插入图片描述
测试:

在这里插入图片描述

9)最大链接数
max_clients=2
在这里插入图片描述
测试:
第一个连接成功
在这里插入图片描述
第二个连接成功
在这里插入图片描述
第三个连接失败

在这里插入图片描述

10)本地用户家目录的修改:
local_root=/westos

在这里插入图片描述

测试:

在这里插入图片描述
11)本地用户上传文件权限
local_umask=022
在这里插入图片描述
测试:

在这里插入图片描述

12)限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES #禁止用户访问/目录
在这里插入图片描述
chmod u-w /home/*
注意:ftp的家目录不能有写权限
看到500报错 将w权限去除即可

测试:

在这里插入图片描述

用户黑名单的建立 #黑白名单的建立取决于默认权限chroot_local_user=是禁止还是允许,
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

在这里插入图片描述

systemctl restart vsftpd

touch /etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list #编辑后立即生效
在这里插入图片描述

测试:
用户student被所在自己的家目录中
在这里插入图片描述

其他用户可以访问/目录

在这里插入图片描述

用户白名单的建立
chroot_local_user=YES
chroot_list_ecable=YES
chroot_list_file=/etc/vsftpd/chroot_list

在这里插入图片描述
vim /etc/vsftpd/chroot_list在这里插入图片描述

测试:
student用户登陆可以访问/目录

在这里插入图片描述

其他用户登陆被锁在自己家目录下

在这里插入图片描述

13)限制本地用户登陆
vim /etc/vsftpd/ftpusers ##用户永久黑名单,只要出现在此黑名单你就永远是黑的
在这里插入图片描述

测试:
使用student用户身份连接失败
在这里插入图片描述

使用其他用户身份连接成功

在这里插入图片描述

vim /etc/vsftpd/user_list ##用户临时黑名单

用户白名单设定
userlist_deny=NO
在这里插入图片描述

/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只有在名单中出现的用户可以登陆ftp

在这里插入图片描述
测试:

使用student用户身份可以成功登陆

在这里插入图片描述

使用其他用户身份无法登陆

在这里插入图片描述

14)虚拟用户的设定:
创建虚拟帐号身份
vim /etc/vsftpd/guestfile ##文件名称任意

在这里插入图片描述

db_load -T -t hash -f /etc/vsftpd/guestfile /etc/vsftpd/guestfile.db ##对文件指定hash加密

ls /etc/vsftpd/ ##可以看到加密文件生成

在这里插入图片描述

vim /etc/vsftpd/vsftpd.conf

在这里插入图片描述
pam_service_name=vsftpd ##编辑vsftpd配置文件我们可以看到认证的名称为pam,认证方式为vsftpd

rpm -ql vsftpd ##查看vsftpd的安装目录,找到管理认证方式的文件/etc/pam.d/vsftpd

在这里插入图片描述
vim /etc/pam.d/vsftpd ##查看其书写格式

在这里插入图片描述

vim /etc/pam.d/westos ##手动编写一个认证管理文件文件名称任意

account required pam_userdb.so db=/etc/vsftpd/guestfile
帐号 认证方式 认证插件 读取文件
auth required pam_userdb.so db=/etc/vsftpd/guestfile
认证

在这里插入图片描述

注意:该文件内文件后缀会自动补齐,如果你输入db=/etc/vsftpd/guestfile.db 退出保存后就会被识别为db=/etc/vsftpd/guestfile.db.db,产生报错

vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos ##设定认证方式
guest_enable=YES ##开启虚拟用户认证
guest_username=ftp ##虚拟帐号身份指定

在这里插入图片描述
systemctl restart vsftpd

测试:
成功使用虚拟用户身份登陆
在这里插入图片描述

15)虚拟用户家目录的修改
mkdir /var/ftpuserdir/westos{1…3} -p ##创建虚拟用户家目录
vim /etc/vsftpd/vsftpd.conf
指定虚拟用户家目录:

在这里插入图片描述
systemctl restart vsftpd.service

mkdir /var/ftpuserdir/westos{1…3}/pub ##在各个目录下创建文件以示区别
touch /var/ftpuserdir/westos1/westos1file
touch /var/ftpuserdir/westos2/westos2file
touch /var/ftpuserdir/westos3/westos3file

测试:

在这里插入图片描述

16)虚拟帐号配置独立
chmod 775 /var/ftpuserdir/westos*/pub/ ##不改报错553
chgrp ftp /var/ftpuserdir/westos*/pub/

vim /etc/vsftpd/vsftpd.conf
将匿名用户权限全部屏蔽

在这里插入图片描述

user_config_dir=/etc/vsftpd/userconf

在这里插入图片描述

mkdir -p /etc/vsftpd/userconf ##目录创建和你在user_config_dir=后面写的一样,写错报错550
vim /etc/vsftpd/userconf/westos1
anon_upload_enable=YES

在这里插入图片描述

systemctl restart vsftpd.service

测试:
只有虚拟用户westos1可以上传文件
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章