Linux CentOS ftp
FTP是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。
在FTP的使用当中,用户经常遇到两个概念:”下载”(Download)和”上传”(Upload)。
“下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件,由于FTP的文件传输是明文方式,具有一定危险性,所以就诞生了一种更加安全的传输方式vsftp

1、VSFTP是一个比FTP更安全的软件具有以下特点

  1. vsftp一般以普通用户运行,降低了进程的权限,提高了安全性
  2. 任何需要执行较高权限的指令都需要上层程序的许可
  3. ftp的命令都被整合到了vsftp中,不需要系统额外提供命令
  4. 用于chroot功能,可以改变用户的根目录,限制用户只能在自己的家目录
  5. vsftpd 是一个基于GPL发布的FTP服务器软件。其中的vs是“ Very Secure”的缩写,由此名称缩写可以看出,本服务器的初衷就是服务的安全性。
  6. vsftpd是RedHat Linux默认使用的ftp服务端软件。
  7. vsftpd不再依赖于xinetd服务
  8. vsftpd可同时允许匿名( anonymous )与本地用户(local)访问,还可以支持虚拟用户。

    2、VSFTP连接类型

    控制连接:TCP 21,用于发送FTP命令信息
    数据连接:TCP 20,用于上传、下载数据

    3、VSFTP下载前的检查

    A.关闭SElinux-编辑 /etc/selinux/config ,设置SELINUX=disabled

    1. $ vim /etc/selinux/config
    image.png

    B.关闭防火墙

    1. [root@iZuligp6e1dyzfZ selinux]# systemctl stop firewalld.service
    2. [root@iZuligp6e1dyzfZ selinux]# systemctl disable firewalld.service

    C.查看当前系统是否已经安装vsftp

    1. [root@iZuligp6e1dyzfZ selinux]# rpm -qa | grep vsftpd
    image.png
    没有反馈则未安装

    4、VSFTP安装-使用yum安装

    1. [root@iZuligp6e1dyzfZ selinux]# yum install -y vsftpd
    image.png

    5、vsftp启动

    1. [root@iZuligp6e1dyzfZ selinux]# systemctl start vsftpd

    6、vsftp服务器的访问

    vsftp服务器的访问:在浏览器输入: ftp://127.0.0.1:21
    image.png

    7、vsftp用户配置

    A.创建vsftp用户

    1. [root@iZuligp6e1dyzfZ /]# useradd fcant

    B.为创建的用户设置密码

    1. [root@iZuligp6e1dyzfZ /]# echo "fcant" | passwd fcant --stdin
    2. Changing password for user fcant.
    3. passwd: all authentication tokens updated successfully.

    C.限制该用户只能访问ftp不能直接登录ftp

    1. [root@iZuligp6e1dyzfZ /]# usermod -s /sbin/nologin fcant

    D.设置用户的写入权限

    1. [root@iZuligp6e1dyzfZ /]# usermod -a -G root fcant

    8、vsftp文件存储管理

    A.创建FTP存储目录

    mkdir /local/ftp/storage/ -p 创建主目录,不可上传文件
    mkdir /local/ftp/storage/upload 文件存储目录
    1. [root@iZuligp6e1dyzfZ /]# mkdir /local/ftp/storage/ -p
    2. [root@iZuligp6e1dyzfZ /]# mkdir /local/ftp/storage/upload

    B.设置目录的访问权限

    1. [root@iZuligp6e1dyzfZ /]# chmod a-w /local/ftp/storage/ && chmod 777 -R /local/ftp/storage/upload/

    9、修改系统用户的存储目录

    1. [root@iZuligp6e1dyzfZ ftp]# vim /etc/vsftpd/vsftpd.conf
    1. # 指定系统用户的存储目录
    2. local_root=/local/ftp/storage/upload/
    3. # 指定匿名用户的存储目录
    4. anon_root=/local/ftp/storage/upload/

    10、配置FTP权限

    A.vsftpd的配置目录:/etc/vsftpd

    vsftpd.conf 主要配置文件(注意备份)
    ftpusers 配置禁止访问 FTP 服务器的用户列表
    user_list 配置用户访问控制
    建议备份vsftpd.conf文件: cp vsftpd.conf vsftpd.conf.bak
    绝对路径: cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

    B.关闭匿名访问和切换根目录权限

    1. [root@iZuligp6e1dyzfZ ftp]# vim vsftpd.conf
    1. # 禁用匿名用户
    2. anonymous_enable=NO
    3. # 禁止切换根目录 删除此行
    4. chroot_local_user=YES

    11、为不同的用户配置不同的FTP根目录

    为每个用户配置不同的ftp目录

    A.取消总配置文件中的存储目录

    1. [root@iZuligp6e1dyzfZ ftp]# vim /etc/vsftpd/vsftpd.conf
    image.png

    B.创建第二个用户、设置密码、设置登录权限

    1. [root@iZuligp6e1dyzfZ ftp]# useradd fcc
    2. [root@iZuligp6e1dyzfZ ftp]# echo "fcc" | passwd fcc --stdin
    3. Changing password for user fcc.
    4. passwd: all authentication tokens updated successfully.
    5. [root@iZuligp6e1dyzfZ ftp]# usermod -s /sbin/nologin fcc

    C.为每个用户添加单独的配置

    ①在/etc/vsftpd/目录下创建userconfig

    1. [root@iZuligp6e1dyzfZ ftp]# cd /etc/vsftpd/
    2. [root@iZuligp6e1dyzfZ vsftpd]# mkdir userconfig
    3. [root@iZuligp6e1dyzfZ vsftpd]# cd userconfig/

    ②将用户的配置文件的目录添加到总配置文件中

    1. [root@iZuligp6e1dyzfZ userconfig]# vim /etc/vsftpd/vsftpd.conf
    image.png

    ③创建用户的存储根目录-并设置目录的访问权限

    1. [root@iZuligp6e1dyzfZ userconfig]# cd /local/ftp/storage/upload/
    2. [root@iZuligp6e1dyzfZ upload]# ll
    3. total 185312
    4. -rw-r--r-- 1 fcant fcant 189756259 Jul 27 01:15 jdk-8u161-linux-x64.tar.gz
    5. [root@iZuligp6e1dyzfZ upload]# mkdir fcc
    6. [root@iZuligp6e1dyzfZ upload]# mkdir fcant
    7. [root@iZuligp6e1dyzfZ upload]# ll
    8. total 185320
    9. drwxr-xr-x 2 root root 4096 Jul 27 11:49 fcant
    10. drwxr-xr-x 2 root root 4096 Jul 27 11:48 fcc
    11. -rw-r--r-- 1 fcant fcant 189756259 Jul 27 01:15 jdk-8u161-linux-x64.tar.gz
    12. [root@iZuligp6e1dyzfZ upload]# chmod a-w /local/ftp/storage/ && chmod 777 -R /local/ftp/storage/upload/
    image.png

    ④在userconfig目录下创建用户名的配置文件,并设置根目录

    为fcc用户通过fcc文件配置存储目录

    1. [root@iZuligp6e1dyzfZ userconfig]# vim fcc
    1. local_root=/local/ftp/storage/upload/fcc
    image.png

    为fcant用户通过fcant文件配置存储目录

    1. [root@iZuligp6e1dyzfZ userconfig]# vim fcant
    1. local_root=/local/ftp/storage/upload/fcant
    image.png

    配置好后在userconfig目录下可以看到两个配置文件

    image.png

    D.设置用户的写入权限

    1. [root@iZuligp6e1dyzfZ upload]# usermod -a -G root fcant
    2. [root@iZuligp6e1dyzfZ upload]# usermod -a -G root fcc

    E.重启vsftpd服务使其生效

    1. [root@iZuligp6e1dyzfZ /]# systemctl restart vsftpd

    F.测试(使用不同帐号上传查看配置的存储目录下的文件上传情况)

    image.png
    image.png
    image.png
    image.png

    配置后重启服务生效

    1. [root@iZuligp6e1dyzfZ /]# systemctl restart vsftpd

    vsftp.conf配置参数说明

    A.系统用户的配置

    1. local_enable=YES # 是否允许本地用户登录
    2. write_enable=YES # 是否允许本地用户的写权限(是否允许上传)
    3. listen=YES # 是否开启监听
    4. listen_port=2121 # 修改连接端口
    5. pam_service_name=vsftpd # 服务名称
    6. local_umask=022 # 默认的umask码(本地用户的掩码信息)
    7. diremssage_enable=YES # 是否显示目录说明文件
    8. connect_from_prot_20=YES # 是否确定端口传输来自20
    9. xferlog_ftd_format=YES # 是否使用标准的ftp xferlog模式

    B.匿名登录设置(匿名用户的常用配置)

    1. anonymous_enable=NO # 是否允许匿名登录
    2. anno_upload_enable=YES #是否允许匿名用户上传权限
    3. anno_mkdir_write_enable=YES #是否允许匿名用户可创建目录及其文件
    4. anno_other_write_ebable=YES #匿名用户是否除了写权限是否拥有删除和修改的权限
    5. anno_world_readable_only=YES #匿名用户是否拥有只读权限
    6. no_anno_password=YES #匿名用户是否跳过密码检测
    7. anno_umask=077 #匿名用户创建文件的掩码权限

    C.限制目录

    1. chroot_local_user=yes # 限制所有用户都在家目录(禁锢所有ftp用户在其家目录下)
    2. chroot_list_enable=YES # 调用限制在家目录的用户名单(是否将系统用户限制在自己的home目录下)
    3. chroot_list_file=/etc/vsftpd/chroot_list # 限制在家目录的用户名单所在路径(列表不受限制的用户)

    D.日志设置

    1. xferlog_file=/var/log/vsftpd.log # 日志文件路径设置
    2. xferlog_enable=YES # 是否记录ftp传输过程
    3. use_localtime=YES
    默认情况下,vsftpd 是用GMT做为它的时间的,所以和操作系统的时间不一致,加入这个命令来同步vsftpd与操作系统的时间

    使用Window自带的FTP连接FTP服务器

    A.检查Window的FTP功能是否开启

    ①进入控制面板-程序

    image.png

    ②启用或关闭Window功能

    image.png

    ③检查FTP服务、FTP扩展性、TFTP Client是否勾选开启

    image.png

    B.更改浏览器连接属性

    ①控制面板选择Internet选项

    image.png

    ②取消勾选-使用被动FTP

    image.png

    C.在服务器的URL输入 ftp://主机IP/ 即可连接FTP服务器,进行文件的上传下载(其他权限需要进行赋予授权:如删除)

    image.png