【银河麒麟V10】【服务器】ftp使用介绍及常见场景搭建

一、ftp概述

1、FTP协议

FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数。

2、工作模式

FTP协议有以下两种工作模式:

主动模式:FTP服务器主动向客户端发起连接请求

被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式)

3、ftp的三种使用模式

(1)、匿名开放模式

a、匿名开放模式的相关参数

FTP匿名开放模式的相关参数
参数作用
anonymous_enable=YES允许匿名访问模式
anon_umask=022匿名用户上传文件的umask值
anon_upload_enable=YES允许匿名用户上传文件
anon_mkdir_write_enable=YES允许匿名用户创建目录
anon_other_write_enable=YES允许匿名用户修改目录名称或删除目录
no_anon_password=YES将其设为YES指匿名用户不会查询用户密码直接登录
anon_root=/var/ftp/pub指定匿名登录后的根文件夹
ftp_username=ftp匿名用户登陆系统的账号默认为ftp,此项最好不要改
listen_port=8021指定命令通道为8021,默认为21
listen_data_port=8020指定数据通道为8020,默认为20

【注】匿名开放模式中name是anonymous,密码为空。登陆成功之后默认访问的目录是/var/ftp,此刻想要有写入权限,需要将/var/ftp 目录的所属组改为ftp,初始所属组是root,连接上来的人没有权限。

(2)、本地用户模式

FTP本地用户模式的相关参数
参数作用
anonymous_enable=NO禁止匿名访问模式
local_enable=YES允许本地用户模式
write_enable=YES设置可写权限
local_umask=022本地用户模式创建文件的umask值
userlist_enable=YES启用“禁止用户名单”,名单文件为ftpusers和user_list
userlist_deny=YES开启用户作用名单文件功能
chroot_local_user=YES把本地用户限制在自己的home文件夹中,这样子登录之后就不能访问自己home之外的文件了,这样子是出于安全上的考虑

【注】此刻用原有的默认账户无法登陆,用正常账户就能登陆。使用本地用户登陆之后,默认访问的是该用户的家目录,所以不必再修改目录的权限,但是这些的前提都是在关闭SELinux之下。

(3)、虚拟用户模式

①创建用于进行FTP认证的用户数据库文件,奇数行为用户名,偶数行为密码。

# cd /etc/vsftpd/    //进入vsftpd服务配置文件目录

# vim vuser.list     //新建虚拟用户名单

②加密虚拟用户列表

# db_load -T -t hash -f vuser.list vuser.db

②创建vsftpd服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户

由于Linux系统中的每一个文件都有所有者、所属组属性,例如使用虚拟账户“张三”新建了一个文件,但是系统中找不到账户“张三”,就会导致这个文件的权限出现错误。为此,需要再创建一个可以映射到虚拟用户的系统本地用户。简单来说,就是让虚拟用户默认登录到与之有映射关系的这个系统本地用户的家目录中,虚拟用户创建的文件的属性也都归属于这个系统本地用户,从而避免Linux系统无法处理虚拟用户所创建文件的属性权限。

为了安全起见,把这个账户设置为不能登陆服务器,避免被黑客得到去做坏事情。

# useradd -d /var/ftproot -s /sbin/nologin virtual   //添加用户,设置其家目录为/var/ftproot,并设置为不能登陆

# chmod -Rf 755 /var/ftproot    //为家目录添加其他用户权限

③建立用于支持虚拟用户的PAM文件

PAM(可插拔认证模块)是一种认证机制,通过一些动态链接库和统一的API把系统提供的服务与认证方式分开,使得系统管理员可以根据需求灵活调整服务程序的不同认证方式。

通俗来讲,PAM是一组安全机制的模块,系统管理员可以用来轻易地调整服务程序的认证方式,而不必对应用程序进行任何修改。PAM采取了分层设计(应用程序层、应用接口层、鉴别模块层)的思想,其结构如图所示。

④在vsftpd服务程序的主配置文件中通过pam_service_name参数将PAM认证文件的名称修改为vsftpd.vu,PAM作为应用程序层与鉴别模块层的连接纽带,可以让应用程序根据需求灵活地在自身插入所需的鉴别功能模块。当应用程序需要PAM认证时,则需要在应用程序中定义负责认证的PAM配置文件,实现所需的认证功能。

需要用到的参数如下:

利用PAM文件进行认证时使用的相关参数
参数作用
anonymous_enable=NO禁止匿名开放模式
local_enable=YES允许本地用户模式
guest_enable=YES开启虚拟用户模式
guest_username=virtual指定虚拟用户账户
pam_service_name=vsftpd.vu指定PAM文件
allow_writeable_chroot=YES允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求

⑤为虚拟用户设置不同的权限,想要让用户A有更多的权限,读写修改,用户B只有读权限

在/var/vsftpd下建立用户权限文件目录vuser_dir,在user_dir中建立文件,以帐户名为文件名

配置文件中写入

anon_upload_enable=YES或NO

anon_mkdir_write_enable=YES或NO

anon_other_write_enable=YES或NO

并在主配置文件/etc/vsftpd/vsftpd.conf中添加:

user_config_dir=/etc/vsftpd/vusers_dir

重启vsftpd服务,并关闭SELinux,

# systemctl restart vsftpd 

# setenforce 0

二、ftp常见场景搭建

(以下场景搭建均以银河麒麟V10 0711服务器系统为例演示)

1、匿名开放访问,具有上传下载删除创建权限

(用户访问ftp无需填写用户名和密码,输入IP即可访问,完全开放模式)

# yum install vsftpd  -y    //服务器系统使用yum安装vsftpd

# cp  -avx  /etc/vsftpd/vsftpd.conf   /etc/vsftpd/vsftpd.conf.bak    //配置前先备份

【注】:服务器系统的vsftpd配置文件在/etc/vsftpd/vsftpd.conf 

# vim  /etc/vsftpd/vsftpd.conf

anonymous_enable=YES         #开启匿名登录
anon_umask=022               #设置匿名用户的umask值,否则匿名登录创建新的目录或文件由于权限不足导致无法查看新建的文件
pam_service_name=vsftpd      #验证方式
connect_from_port_20=YES     #启用FTP数据端口的数据连接
anon_upload_enable=YES       #开放匿名用户上传权限
anon_mkdir_write_enable=YES  #开放匿名用户创建目录的权限
write_enable=YES             #开放本地用户的写权限
anon_other_write_enable=YES  #将其设为YES的话,就除了上传和创建目录外,还可以重命名,删除文件,默认是NO

# chmod  -R 777  /var/ftp/pub     //不赋权会导致上传下载文件失败

# systemctl restart vsftpd

【注】1、防火墙上21端口必须打开,否则登陆ftp的会提示socket错误,拒绝连接。

           2、匿名登录的默认路径是:/var/ftp/

           3、ftp默认上传路径是:/home/系统用户名

           4、关于umask值:

                umask是在linux中常见的一个东西,它其实是一个掩码。当然,也有umask这样一个命                  令,它是对用户建立的文件的默认属性的定义。该 定义为:
                假设umask为022,则对于一个文件夹的话,它的默认属性为 777-022=755,这也就是我                  们平时建立文件夹的权限。而对于一般的文件的话,则是用 666-022=644.
               

                umask是unix操作系统的概念,umask决定目录和文件被创建时得到的初始权限
                umask = 022 时,新建的目录 权限是755,文件的权限是 644
                umask = 077 时,新建的目录 权限是700,文件的权限时 600
                vsftpd的local_umask和anon_umask借鉴了它
                默认情况下vsftp上传之后文件的权限是600,目录权限是700
                想要修改上传之后文件的权限,有两种情况:
                a、如果使用vsftp的是本地用户
                      则要修改配置文件中的 local_umask 的值
                b、 如果使用vsftp的是虚拟用户
                      则要修改配置文件中的 anon_umask 的值

2、本地用户模式,开放上传下载创建删除权限

# vim  /etc/vsftpd/vsftpd.conf

local_enable=YES      #开放本地用户登录
anonymous_enable=NO   #禁止匿名用户登录,如果需要开放可设置为YES
write_enable=YES      #开放写权限
local_umask=022       #设置本地用户umask

# useradd user1      //创建本地用户,用于ftp登录

# passwd user1     //设置用户密码

# systemctl  restart  vsftpd      //重启后就可以以user1用户登录ftp

【注】:1、防火墙打开21端口

               2、本地用户登录默认ftp位置是该用户的家目录

3、虚拟用户模式,对指定用户进行精确权限控制

3.1、实验目标:实现在同一目录下,对admin、upload、download三个虚拟用户进行不同权限的控制,具体权限控制列表如下:

用户名权限说明
admin管理员,可以上传、下载、新建文件夹、删除和更改文件和文件夹名
upload不可以下载,可以上传、新建文件夹,但不能删除文件和文件夹,不能重命名原有文件和文件夹
download只能下载,不能进行其他操作

【注】:以上三个虚拟用户均不允许登录系统,并且使用ftp时会被锁定在指定目录内不可进入系统其他目录。

3.2、配置vsftpd

第1步:添加一个不能登录系统的用户,用来做虚拟用户映射

# useradd -s /sbin/nologin -d /home/kylin -M kylin    

# passwd  kylin     //设置密码

第2步:创建虚拟用户列表,分别是admin、upload、download三个用户

# vim  /etc/vsftpd/vu_list.txt      //新建文件,输入以下内容,其中奇数行是用户名,偶数行是对应用户密码

upload
upload@123
download
download@123
admin
admin@123

第3步:保存虚拟帐号和密码的文本文件无法被系统帐号直接调用,需要创建用于系统认证的db文件

# db_load -T -t hash -f /etc/vsftpd/vu_list.txt /etc/vsftpd/vu_list.db

# yum -y install db4 db4-devel db4-utils    //创建db文件需要db4支持,如果操作报错可以安装此项

# chmod 600 /etc/vsftpd/vu_list.db     //修改db文件的权限,以免被非法用户修改

第4步:配置PAM文件

由于服务器通过调用系统PAM模块来对客户端进行身份验证,因此需要修改指定的配置文件来调整认证方式。PAM模块的配置文件路径为:/etc/pam.d/,这个目录下存放只许多与用户认证有关的配置文件。

# vim  /etc/pam.d/vsftpd      //修改为如下所示,如果是32位系统,注意pam_userdb.so文件是在/lib/security下,对应修改路径即可,另外把原本的内容注释掉,用图中的两行代替,不然本地使用xftp无法连接

#%PAM-1.0
#session    optional     pam_keyinit.so    force revoke
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
#auth       include     password-auth
#account    include     password-auth
#session    required     pam_loginuid.so
#session    include     password-auth
auth       required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list
account    required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list

第5步:创建虚拟用户配置文件

# mkdir  /etc/vsftpd/conf       //创建conf文件夹

# vim  /etc/vsftpd/conf/admin     //创建admin用户的配置文件,内容如下

anon_world_readable_only=NO
local_umask=022
write_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
local_root=/home/kylin
allow_writeable_chroot=YES

# vim  /etc/vsftpd/conf/upload     //创建upload用户的配置文件 ,内容如下

write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_world_readable_only=NO
download_enable=NO
local_root=/home/kylin
allow_writeable_chroot=YES

# vim /etc/vsftpd/conf/download     //创建download用户的配置文件,内容如下

anon_world_readable_only=NO
local_root=/home/kylin
allow_writeable_chroot=YES

第6步:修改vsftpd.conf文件

首先备份默认的配置文件/etc/vsftpd/vsftpd.conf,再将该文件内容删掉替换成如下内容

anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_enable=YES
chroot_local_user=YES
listen=YES

pam_service_name=vsftpd

guest_enable=YES
guest_username=kylin
user_config_dir=/etc/vsftpd/conf

第7步:创建ftp根目录

# mkdir  /home/kylin      //路径和文件名要和上述的local_root配置项对应

# chmod  -R  777 /home/kylin    //为避免连接和读写问题可直接赋予权限

# systemctl restart  vsftpd      //重启后配置完成

【注】:1、selinux和firewalld需自行配置,可直接关闭

              2、ftp主目录在/home/kylin下

              3、如果使用本地的xftp连接,需要关闭被动模式,如下图

                    

  • 2
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桂安俊@kylinOS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值