Linux中ftp服务详解

1.ftp的定义

FTP是File Transfer Protocol文件传输协议的英文名称,用于在internet上控制文件的双向传输,同时它也是一个应用程序。
ftp:// ##文件传输协议
lftpd客户端相当于阿帕奇 vsftpd服务端相当于浏览器

2.ftp服务提供的软件

在rhel7中:vsftpd
默认发布目录:/var/ftp
协议接口:21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf

3.ftp服务常见报错

500             ##文件系统权限过大          
530             ##用户认证失败
550             ##服务不允许做此功能
553             ##本地文件系统权限过小

4.在服务端部署ftp服务

tp(文件传输协议)是Internet上常用的最老的网络协议之一,它的系统提供了通过网络与远程服务器进行传输的简单方法。ftp服务器包的名称为vsftpd,它代表Very Secure File Transfer Protocol Damon,服务器名称也叫做vsftpd。
默认配置文件让anonymous用户(匿名用户)只能下载位于chroot目录中的内容。
/var/ftp/这意味着远程ftp客户端能以anonymous用户或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)

  1. 关闭内核级的加强形火墙

     vim /etc/sysconfig/selinux       ##关闭selinux
     7  SELINUX=disabled              ##更改第七行为disabled
    

    Linux中ftp服务详解_第1张图片

     reboot            ##重启
     getenforce        ##查看selinux状态
    

在这里插入图片描述
2)安装服务

yum install  lftp  -y
yum install  vsftpd -y    

Linux中ftp服务详解_第2张图片
Linux中ftp服务详解_第3张图片
3)设置火墙永久允许ftp服务
法一:命令设定火墙

systemctl  start vsftpd                             ##打开vsftp服务
systemctl  enable vsftpd                            ##允许开机自动启动

Linux中ftp服务详解_第4张图片

systemctl  start firewalld                          ##打开防火墙
firewall-cmd  --permanent  --add-service=ftp        ##允许ftp通过火墙
systemctl restart firewalld                         ##重启火墙

在这里插入图片描述
法二:图形设定火墙

firewalld-config    ##打开图形更改防火墙设置

选择Permanent永久设定,选择ftp
Linux中ftp服务详解_第5张图片

选择Reload Firewalld
Linux中ftp服务详解_第6张图片

firewall-cmd --list-all     ##查看防火墙状态

Linux中ftp服务详解_第7张图片
4)在客户端测试
Linux中ftp服务详解_第8张图片

5.ftp的配置文件中相关功能的实现

1.匿名用户的设定
1)匿名用户登陆

vim  /etc/vsftpd/vsftpd.conf                 ##配置文件

12 anonymous_enable=YES          ##匿名用户是否可以登陆
19 write_enable=YES              ##ftp是否对登陆用户可写

Linux中ftp服务详解_第9张图片
Linux中ftp服务详解_第10张图片
2)匿名用户上传

vim /etc/vsftpd/vsftpd.conf
19 write_enable=YES        ##ftp对用户可写
29 anon_upload_enable=YES    ##匿名用户上传

Linux中ftp服务详解_第11张图片

systemctl restart vsftpd   ##重启服务
chgrp ftp /var/ftp/pub    ##更改该文件的组为ftp
chmod 775 /var/ftp/pub    ##允许该文件被ftp组可读可写

Linux中ftp服务详解_第12张图片
测试
注:put为上传文件
Linux中ftp服务详解_第13张图片
3)匿名用户家目录修改

anon_root=/direcotry    ##匿名用户家目录修改

Linux中ftp服务详解_第14张图片
测试
在这里插入图片描述
在这里插入图片描述
Linux中ftp服务详解_第15张图片
4)匿名用户上传文件的权限修改

anon_mask=022      ##匿名用户新增文件时系统保留的权限为022

在这里插入图片描述
测试
Linux中ftp服务详解_第16张图片
5)匿名用户建立目录

anon_mkdir_write_enable=YES   ##匿名用户建立目录

在这里插入图片描述
测试
Linux中ftp服务详解_第17张图片
6)匿名用户删除

anon_other_write_enable=YES   

在这里插入图片描述
测试
Linux中ftp服务详解_第18张图片
7)匿名用户下载

anon_world_readable_only=YES|NO  ##匿名用户下载,设定参数为NO表示
                                   匿名用户可以下载

在这里插入图片描述
测试
Linux中ftp服务详解_第19张图片
8)匿名用户使用的用户身份修改

49chown_uploads=YES               ##所有匿名上传的用户文件的所属用户将会被改成chown_username
50chown_username=student          ##匿名用户使用的用户身份修改

在这里插入图片描述
测试
Linux中ftp服务详解_第20张图片
9)匿名用户上传文件的最大速率

anon_max_rate=102400           ##最大上传速率       

在这里插入图片描述
测试

dd  if=/dev/zero  of=bigfile  bs=1M  count=300         ##截取300M文件

Linux中ftp服务详解_第21张图片
10)能够最大连接的客户端

max_clients=1    ##只允许一个用户登录该ftp服务器

在这里插入图片描述
测试
Linux中ftp服务详解_第22张图片
在这里插入图片描述
2.本地用户设定
设定方法及步骤和匿名用户相同,在此不做过多的测试
1)本地用户的登录

local_enable=YES

2)本地用户家目录修改

local_root=/directory
write_enable=YES                        

3)本地用户上传文件权限

local_umask=022

4)限制本地用户浏览/目录

chroot_local_user=YES      ##所有用户被锁定到自己的家目录中  

用户不能有写的权限否则会报错500

chmod u-w  /home/*

5)本地用户黑名单的建立

101chroot_local_user=NO                         ##NO表示下面的路径为黑名单
102chroot_list_enable=YES                       ##表示开启黑白名单功能
104chroot_list_file=/etc/vsftpd/chroot_list     ##黑名单路径

在这里插入图片描述
在这里插入图片描述
Linux中ftp服务详解_第23张图片
测试
Linux中ftp服务详解_第24张图片
Linux中ftp服务详解_第25张图片
6)本地用户白名单的建立

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

在这里插入图片描述
Linux中ftp服务详解_第26张图片
测试
在这里插入图片描述
Linux中ftp服务详解_第27张图片
7)限制本地用户登陆

/etc/vsftpd/ftpusers          ##永久黑名单

Linux中ftp服务详解_第28张图片
测试
在这里插入图片描述

/etc/vsftpd/user_list         ##临时黑名单

Linux中ftp服务详解_第29张图片
测试
在这里插入图片描述

vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO          ##临时黑名单变为白名单

在这里插入图片描述
测试
Linux中ftp服务详解_第30张图片
3.ftp虚拟账户设定

1.创建虚拟用户身份
1)建立虚拟用户名单

cd  /etc/vsftpd/

vim  userfile
ftpuser1
123
ftpuser2
123
ftpuser3
123

Linux中ftp服务详解_第31张图片
2)将其用hash加密变为db

db_load  -T -t  hash  -f  /etc/vsftpd/userfile /etc/vsftpd/userfile.db

在这里插入图片描述
3)编写一个新的认证文件

vim  /etc/pam.d/hello
account  required   pam_userdb.so    db=/etc/vsftpd/userfile
帐号       认证方式          认证插件               db文件
auth     required   pam_userdb.so    db=/etc/vsftpd/userfile
认证       认证方式          认证插件               db文件

Linux中ftp服务详解_第32张图片
4)改动主配置文件

vim vsftpd.conf
pam_service_name=hello       ##认证方式(改变认证方式后之前的用户无法登录,可将其之前的认证文件加入新的文件中即可)
guest_enable=YES              ##打开虚拟用户功能
guest_username=ftp            ##给虚拟用户一个身份

在这里插入图片描述
5)重启ftp服务

systemctl  restart  vsftpd

用虚拟用户登陆测试
Linux中ftp服务详解_第33张图片
2.虚拟用户指定家目录
1)先建立家目录内容

mkdir  /var/ftpuserdir/ftpuser{1..3}  -p
mkdir  /var/ftpuserdir/ftpuser{1..3}/pub  
mkdir  /var/ftpuserdir/ftpuser1/haha11file 
mkdir  /var/ftpuserdir/ftpuser2/haha2file 
mkdir  /var/ftpuserdir/ftpuser3/haha3file

Linux中ftp服务详解_第34张图片
2)改写主配置文件

local_root=/var/ftpuserdir/$ USER               ##登陆后查看自己的家目录
user_sub_token=$ USER                           ##认证shell内的$

(echo $USER---->查看用户)

3)重启ftp服务,建立成功
测试
Linux中ftp服务详解_第35张图片
3.虚拟帐户配置独立的功能
以上传为例
在主配置文件中注释掉相应的参数
1)给/pub相应的权限

ls  -lr   /var/ftpuserdir/ftpuser{1..3}  
chmod  775   /var/ftpuserdir/ftpuser{1..3}/pub*
chgrp  ftp   /var/ftpuserdir/ftpuser{1..3}/pub*

Linux中ftp服务详解_第36张图片
2)改写主配置文件

vim /etc/vsftpd/vsftpd.conf           ##设置虚拟用户独立配置路径
user_config_dir=/etc/vsftpd/user_conf(此文件需要新建)

在这里插入图片描述
3)重启服务
4)建立新的一个配置文件

mkdir  -p /etc/vsftpd/user_conf          
anon_upload_enable=YES

此文件设定配置文件中的参数,默认此文件优先级高
Linux中ftp服务详解_第37张图片
Linux中ftp服务详解_第38张图片
测试
Linux中ftp服务详解_第39张图片

你可能感兴趣的:(Linux中ftp服务详解)