ftp服务

本文详细介绍FTP(文件传输协议)的基础知识,包括其工作原理、主动与被动模式的区别,以及如何在Linux环境下搭建和配置FTP服务器。文章涵盖配置文件编辑、服务启动、防火墙设置、客户端软件安装、SELinux状态调整、用户权限管理等方面,帮助读者全面掌握FTP服务器的部署与管理。

一、ftp相关知识
ftp文件传输协议,一般使用20,21端口,默认打开21端口。
有两种模式:主动模式(Standard)和被动模式(PASV)
主动被动是针对客户端来说的。两台机器通过21端口建立链接,要接收文件时是主动链接还是等服务器发起。

  • ftp默认发布目录 /var/ftp
  • 默认发布子目录 /var/ftp/pub
  • 协议接口 21/tcp
  • 服务配置文件 /etc/vsftpd/vsftpd.conf

二、ftp的搭建(在同一主机上设定与连接)
步骤1:配置yum源
本次实验使用的是系统中的server虚拟机,版本是7.0(hostnamectl查看),所以yum配置需要配置7.0的镜像。

  cd /etc/yum.repos.d/
    ls
    vim rhel_vdv.repo

在这里插入图片描述
步骤2:安装ftp软件

yum install vsftpd -y

在这里插入图片描述
步骤4:打开vsftpd服务

systemctl start vsftpd
systemctl enable vsftpd

在这里插入图片描述
步骤5:查看服务信息

rpm -ql vsftpd  #查看该服务的安装目录
rpm -qc vsftpd  #查看该服务的配置文件
安装目录:

在这里插入图片描述
配置文件:

在这里插入图片描述
步骤6:在防火墙中添加ftp服务

firewall-cmd --permanent --add-service=ftp 
firewall-cmd --reload   #重新加载
firewall-cmd --list-all    #查看防火墙信息

在防火墙中添加ftp服务:
在这里插入图片描述
重新加载防火墙:
在这里插入图片描述
查看:
在这里插入图片描述
步骤7: 安装lftp软件,可以使用ftp服务,是客户端软件

yum install lftp -y

在这里插入图片描述
步骤8:查看selinux状态,需设置为警告或开启状态

getenforce

在这里插入图片描述   
步骤9: 开启警告模式

setenforce 0

在这里插入图片描述
测试

lftp 172.25.254.119  #以匿名身份登陆ftp服务器,这里的匿名用户相当于ftp用户

在这里插入图片描述
lftp上下载

单个文件:
    上传: put 文件名
    下载: get 文件名
多个文件 :
    上传: mput 文件名1 文件名2
    下载: mget 文件名1 文件名2
整个目录:
	上传: mirror -R 文件夹名
	下载: mirror 下载文件夹放到本地的位置

三、实验常见问题
1、配置文件: /etc/vsftpd/vsftpd.conf
每次修改配置文件参数都需要重启服务

vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd

2、错误原因:

530  认证失败
500 权限过大   解决方法: chmod u-w username
550 服务本身不允许  解决方法:在配置文件中开启服务
553 文件系统权限过小  解决方法: setenforce 0

3、本地用户和匿名用户默认家目录

/var/ftp 匿名用户登陆,默认的家目录
/home/student student用户登陆,默认登陆用户家目录
ls /home/ #查看普通用户,本地用户

四、用户权利命令
匿名用户
pub目录只对超级用户可写

  • 所有匿名用户上传下载均在/var/ftp/pub/
    限制文件 /etc/vsftpd/vsftpd.conf

【1】匿名用户可登陆

anonymous_enable=YES|NO

在/etc/vsftpd/vsftpd.conf配置:
在这里插入图片描述
测试:
在这里插入图片描述
【2】匿名用户可上传

chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub #使所有匿名用户拥有读写执行的权力
vim /etc/vsftpd/vsftpd.conf
    anon_upload_enable=YES
systemctl restart vsftpd

在/etc/vsftpd/vsftpd.conf配置:
在这里插入图片描述
测试:
在这里插入图片描述
【3】匿名用户可下载

anon_world_readable_only=NO|YES   #NO表示可下载

在这里插入图片描述

【4】匿名用户建立目录

anon_mkdir_write_enable=YES

在/etc/vsftpd/vsftpd.conf配置:
在这里插入图片描述
测试:
在这里插入图片描述
【5】匿名用户是否可以删除和重命名

anon_other_write_enable=YES

在/etc/vsftpd/vsftpd.conf配置:
在这里插入图片描述
测试:
在这里插入图片描述
【6】匿名用户家目录修改

mkdir /westos  #建立目录/westos
anon_root=/westos

在/etc/vsftpd/vsftpd.conf配置:
在这里插入图片描述
测试:
在这里插入图片描述
【7】匿名用户上传文件默认权限修改

anon_umask=022  #文件权限为644

在/etc/vsftpd/vsftpd.conf配置:
在这里插入图片描述
测试:
在这里插入图片描述
【8】匿名用户使用的用户身份修改

chown_uploads=YES
chown_username=student  #匿名用户上传下载都使用student身份

在这里插入图片描述
【9】最大上传速率

anon_max_rate=102400  单位:字节 k   102400KB=100MB

测试:

dd if=/dev/zero of=/mnt/bigfile bs=1M count=1500
lftp 172.25.254.119
cd pub/
put /mnt/bigfile

在/etc/vsftpd/vsftpd.conf配置:
在这里插入图片描述
测试:
在这里插入图片描述
【10】最大链接个数(同时lftp的用户个数)

max_clients=1

在/etc/vsftpd/vsftpd.conf配置:
在这里插入图片描述
测试:
在这里插入图片描述
本地用户
【1】本地用户可登陆

local_enable=YES|NO

设置本地用户可登录:
在这里插入图片描述
测试:
在这里插入图片描述
【2】本地用户可写

write_enable=YES|NO

设置本地用户可写:
在这里插入图片描述
测试:
在这里插入图片描述
【3】本地用户家目录修改

local_root=/westos

【4】本地用户上传文件权限

local_umask=xxx

【5】限制本地用户浏览根目录

chroot_local_user=YES  #此参数要求去掉对家目录的写权限,否则不安全
choot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
chmod u-w /home/*

在/etc/vsftpd/vsftpd.conf配置:
在这里插入图片描述
测试:
在这里插入图片描述
在/etc/vsftpd/vsftpd.conf配置:
在这里插入图片描述
测试:
在这里插入图片描述
五、三个黑白名单
限制用户是否可以登陆系统:
【1】

vim /etc/vsftpd/vsftpd.conf
    userlist_enable=YES
    userlist_deny=NO|YES #白名单|黑名单 黑名单中的用户默认不能登陆系统
vim /etc/vsftpd/user_list #用户临时黑白名单

白名单:
vim /etc/vsftpd/vsftpd.conf在这里插入图片描述
vim /etc/vsftpd/user_list
在这里插入图片描述
测试:
在这里插入图片描述
黑名单:
vim /etc/vsftpd/vsftpd.conf
在这里插入图片描述
测试:
在这里插入图片描述
【2】

vim /etc/vsftpd/ftpusers #永久用户黑名单
systemctl restart vsftpd

注释掉配置文件中设置的黑白名单:
在这里插入图片描述
vim /etc/vsftpd/ftpusers
在这里插入图片描述

限制是否可以浏览目录:
【3】

chroot_local_user=NO   黑名单 名单内的用户只能在自己家目录内活动,不能浏览别的目录
chroot_local_user=YES   白名单
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
systemctl restart vsftpd

白名单:
在这里插入图片描述
在这里插入图片描述
黑名单:
在这里插入图片描述
在这里插入图片描述
六、ftp创建虚拟帐号身份
给ftp服务器创建虚拟帐号身份,这样更安全。如果以存在的本地用户登录权限太大,如果以匿名用户登陆,开放的范围太大。
步骤:
【1】创建虚拟账户及密码

vim /etc/vsftpd/westosfile   #文件名称任意

在这里插入图片描述
【2】加密文件,使其更安全

db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db
db_loadTthashf/etc/vsftpd/westosfile/etc/vsftpd/westosfile.db
加密命令转换指定类型加密类型指定文件被加密文件加密后的文件

【3】pam认证
使用虚拟用户登陆需要认证
查看vsftpd.conf,认证的时候使用pam认证

vim /etc/pam.d/westos

在这里插入图片描述

accountauthrequired
用户密码需要比对

【4】在配置文件中设置认证方式

vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos (只有文件里的虚拟用户可登陆,此时本地用户也不能登陆,若要登陆则切换为vsftpd) #自动去和/etc/pam.d/westos比对
guest_enable=YES #激活虚拟用户登陆
systemctl restart vsftpd

在这里插入图片描述

【5】虚拟帐号身份指定

vim /etc/vsftpd/vsftpd.conf
guest_username=westos #默认使用虚拟用户时,登陆后在/etc/ftp目录下,修改此参数,登陆后到westos家目录(以什么身份登陆)
chmod u-w /home/westos #以westos身份登陆进入到westos家目录,去掉写的权限,保证安全性

在这里插入图片描述
在这里插入图片描述
测试:
在这里插入图片描述
七、虚拟帐号家目录独立设定
echo $USER 输出当前用户
env 查看系统环境
$ 引用系统中的变量
【1】虚拟帐号家目录独立设定

vim /etc/vsftpd/vsftpd.conf
    guest_username=ftp   #游客登陆身份
    local_root=/ftphome/$USER   #虚拟用户家目录位置
    user_sub_token=$USER  #让配置文件识别shell语法
systemctl restart vsftpd
mkdir /ftphome/user1/user1dir -p   #在/ftphome/user1家目录中创建目录user1dir,用户的上传下载均在user1dir中
mkdir /ftphome/user2/user2dir -p   #在/ftphome/user2家目录中创建目录user2dir,用户的上传下载均在user2dir中

在这里插入图片描述
【2】虚拟帐号配置独立

  chgrp ftp /ftphome -R   #递归将/ftphome中所有目录文件的组改为ftp
    ll /ftphome/user*
    chmod 775 /ftphome/user1/user1dir
    chmod 775 /ftphome/user2/user2dir
    vim/etc/vsftpd/vsftpd.conf
         user_config_dir=/etc/vsftpd/userconf  #权利文件
   systemctl restart vsftpd
    mkdir -p /etc/vsftpd/userconf
    vim /etc/vsftpd/userconf/user1 #在此文件中设定配置文件的所有参数,此文件优先级高
         anon_upload_enable=YES

【3】关闭所有对虚拟用户的权利

实验:
lftp 172.25.254.176 -u user1
ls
cd user1dir/
put /etc/passwd
在这里插入图片描述
未在/etc/vsftpd/userconf/user2中给user2相应权利,所以不能上传下载
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值