Linux CentOS ftp
FTP是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。
在FTP的使用当中,用户经常遇到两个概念:”下载”(Download)和”上传”(Upload)。
“下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件,由于FTP的文件传输是明文方式,具有一定危险性,所以就诞生了一种更加安全的传输方式vsftp
1、VSFTP是一个比FTP更安全的软件具有以下特点
- vsftp一般以普通用户运行,降低了进程的权限,提高了安全性
- 任何需要执行较高权限的指令都需要上层程序的许可
- ftp的命令都被整合到了vsftp中,不需要系统额外提供命令
- 用于chroot功能,可以改变用户的根目录,限制用户只能在自己的家目录
- vsftpd 是一个基于GPL发布的FTP服务器软件。其中的vs是“ Very Secure”的缩写,由此名称缩写可以看出,本服务器的初衷就是服务的安全性。
- vsftpd是RedHat Linux默认使用的ftp服务端软件。
- vsftpd不再依赖于xinetd服务
- vsftpd可同时允许匿名( anonymous )与本地用户(local)访问,还可以支持虚拟用户。
2、VSFTP连接类型
控制连接:TCP 21,用于发送FTP命令信息
数据连接:TCP 20,用于上传、下载数据3、VSFTP下载前的检查
A.关闭SElinux-编辑
/etc/selinux/config
,设置SELINUX=disabled$ vim /etc/selinux/config
B.关闭防火墙
[root@iZuligp6e1dyzfZ selinux]# systemctl stop firewalld.service
[root@iZuligp6e1dyzfZ selinux]# systemctl disable firewalld.service
C.查看当前系统是否已经安装vsftp
[root@iZuligp6e1dyzfZ selinux]# rpm -qa | grep vsftpd
没有反馈则未安装4、VSFTP安装-使用yum安装
[root@iZuligp6e1dyzfZ selinux]# yum install -y vsftpd
5、vsftp启动
[root@iZuligp6e1dyzfZ selinux]# systemctl start vsftpd
6、vsftp服务器的访问
vsftp服务器的访问:在浏览器输入:ftp://127.0.0.1:21
7、vsftp用户配置
A.创建vsftp用户
[root@iZuligp6e1dyzfZ /]# useradd fcant
B.为创建的用户设置密码
[root@iZuligp6e1dyzfZ /]# echo "fcant" | passwd fcant --stdin
Changing password for user fcant.
passwd: all authentication tokens updated successfully.
C.限制该用户只能访问ftp不能直接登录ftp
[root@iZuligp6e1dyzfZ /]# usermod -s /sbin/nologin fcant
D.设置用户的写入权限
[root@iZuligp6e1dyzfZ /]# usermod -a -G root fcant
8、vsftp文件存储管理
A.创建FTP存储目录
mkdir /local/ftp/storage/ -p 创建主目录,不可上传文件
mkdir /local/ftp/storage/upload 文件存储目录[root@iZuligp6e1dyzfZ /]# mkdir /local/ftp/storage/ -p
[root@iZuligp6e1dyzfZ /]# mkdir /local/ftp/storage/upload
B.设置目录的访问权限
[root@iZuligp6e1dyzfZ /]# chmod a-w /local/ftp/storage/ && chmod 777 -R /local/ftp/storage/upload/
9、修改系统用户的存储目录
[root@iZuligp6e1dyzfZ ftp]# vim /etc/vsftpd/vsftpd.conf
# 指定系统用户的存储目录
local_root=/local/ftp/storage/upload/
# 指定匿名用户的存储目录
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.bakB.关闭匿名访问和切换根目录权限
[root@iZuligp6e1dyzfZ ftp]# vim vsftpd.conf
# 禁用匿名用户
anonymous_enable=NO
# 禁止切换根目录 删除此行
chroot_local_user=YES
11、为不同的用户配置不同的FTP根目录
为每个用户配置不同的ftp目录A.取消总配置文件中的存储目录
[root@iZuligp6e1dyzfZ ftp]# vim /etc/vsftpd/vsftpd.conf
B.创建第二个用户、设置密码、设置登录权限
[root@iZuligp6e1dyzfZ ftp]# useradd fcc
[root@iZuligp6e1dyzfZ ftp]# echo "fcc" | passwd fcc --stdin
Changing password for user fcc.
passwd: all authentication tokens updated successfully.
[root@iZuligp6e1dyzfZ ftp]# usermod -s /sbin/nologin fcc
C.为每个用户添加单独的配置
①在/etc/vsftpd/目录下创建userconfig
[root@iZuligp6e1dyzfZ ftp]# cd /etc/vsftpd/
[root@iZuligp6e1dyzfZ vsftpd]# mkdir userconfig
[root@iZuligp6e1dyzfZ vsftpd]# cd userconfig/
②将用户的配置文件的目录添加到总配置文件中
[root@iZuligp6e1dyzfZ userconfig]# vim /etc/vsftpd/vsftpd.conf
③创建用户的存储根目录-并设置目录的访问权限
[root@iZuligp6e1dyzfZ userconfig]# cd /local/ftp/storage/upload/
[root@iZuligp6e1dyzfZ upload]# ll
total 185312
-rw-r--r-- 1 fcant fcant 189756259 Jul 27 01:15 jdk-8u161-linux-x64.tar.gz
[root@iZuligp6e1dyzfZ upload]# mkdir fcc
[root@iZuligp6e1dyzfZ upload]# mkdir fcant
[root@iZuligp6e1dyzfZ upload]# ll
total 185320
drwxr-xr-x 2 root root 4096 Jul 27 11:49 fcant
drwxr-xr-x 2 root root 4096 Jul 27 11:48 fcc
-rw-r--r-- 1 fcant fcant 189756259 Jul 27 01:15 jdk-8u161-linux-x64.tar.gz
[root@iZuligp6e1dyzfZ upload]# chmod a-w /local/ftp/storage/ && chmod 777 -R /local/ftp/storage/upload/
④在userconfig目录下创建用户名的配置文件,并设置根目录
为fcc用户通过fcc文件配置存储目录
[root@iZuligp6e1dyzfZ userconfig]# vim fcc
local_root=/local/ftp/storage/upload/fcc
为fcant用户通过fcant文件配置存储目录
[root@iZuligp6e1dyzfZ userconfig]# vim fcant
local_root=/local/ftp/storage/upload/fcant
配置好后在userconfig目录下可以看到两个配置文件
D.设置用户的写入权限
[root@iZuligp6e1dyzfZ upload]# usermod -a -G root fcant
[root@iZuligp6e1dyzfZ upload]# usermod -a -G root fcc
E.重启vsftpd服务使其生效
[root@iZuligp6e1dyzfZ /]# systemctl restart vsftpd
F.测试(使用不同帐号上传查看配置的存储目录下的文件上传情况)
配置后重启服务生效
[root@iZuligp6e1dyzfZ /]# systemctl restart vsftpd
vsftp.conf配置参数说明
A.系统用户的配置
local_enable=YES # 是否允许本地用户登录
write_enable=YES # 是否允许本地用户的写权限(是否允许上传)
listen=YES # 是否开启监听
listen_port=2121 # 修改连接端口
pam_service_name=vsftpd # 服务名称
local_umask=022 # 默认的umask码(本地用户的掩码信息)
diremssage_enable=YES # 是否显示目录说明文件
connect_from_prot_20=YES # 是否确定端口传输来自20
xferlog_ftd_format=YES # 是否使用标准的ftp xferlog模式
B.匿名登录设置(匿名用户的常用配置)
anonymous_enable=NO # 是否允许匿名登录
anno_upload_enable=YES #是否允许匿名用户上传权限
anno_mkdir_write_enable=YES #是否允许匿名用户可创建目录及其文件
anno_other_write_ebable=YES #匿名用户是否除了写权限是否拥有删除和修改的权限
anno_world_readable_only=YES #匿名用户是否拥有只读权限
no_anno_password=YES #匿名用户是否跳过密码检测
anno_umask=077 #匿名用户创建文件的掩码权限
C.限制目录
chroot_local_user=yes # 限制所有用户都在家目录(禁锢所有ftp用户在其家目录下)
chroot_list_enable=YES # 调用限制在家目录的用户名单(是否将系统用户限制在自己的home目录下)
chroot_list_file=/etc/vsftpd/chroot_list # 限制在家目录的用户名单所在路径(列表不受限制的用户)
D.日志设置
默认情况下,vsftpd 是用GMT做为它的时间的,所以和操作系统的时间不一致,加入这个命令来同步vsftpd与操作系统的时间xferlog_file=/var/log/vsftpd.log # 日志文件路径设置
xferlog_enable=YES # 是否记录ftp传输过程
use_localtime=YES
使用Window自带的FTP连接FTP服务器
A.检查Window的FTP功能是否开启
①进入控制面板-程序
②启用或关闭Window功能
③检查FTP服务、FTP扩展性、TFTP Client是否勾选开启
B.更改浏览器连接属性
①控制面板选择Internet选项
②取消勾选-使用被动FTP
C.在服务器的URL输入
ftp://主机IP/
即可连接FTP服务器,进行文件的上传下载(其他权限需要进行赋予授权:如删除)