一.ftp服务
1.ftp的定义
FTP是File Transfer Protocol文件传输协议的英文名称,用于在internet上控制文件的双向传输。同时它也是一个应用程序。
2.文件传输协议
ftp://
可在浏览器上访问
3.默认发布目录
/var/ftp
4.接口协议
21/ftp
5.服务配置文件
/etc/vsftpd/vsftpd.conf
6.ftp协议提供in的软件
在rhel7中:
vsftpd
7.连接时部分报错的分析
id | 解释 |
500 | 文件系统权限过大 |
530 | 用户认证失败 |
550 | 服务本身功能未开放 |
553 | 本地文件系统权限过小 |
二.部署ftp服务
1.在服务端部署ftp服务
(1)更改selinux
vim /etc/sysconfig/selinux ##关闭selinux
7 SELINUX=disabled ##更改第七行为disabled
更改完成后需要重启
getenforce ##查看selinux状态
(2)安装服务
在yum源搭建好之后:
yum install lftp -y
yum install vsftpd -y
(3)设置火墙
法一:命令设定火墙
systemctl start vsftpd ##打开vsftp服务
systemctl start firewalld ##打开防火墙
firewall-cmd --permanent --add-service=ftp ##允许ftp通过火墙
systemctl restart firewalld
法二:图形设定火墙
firewalld-config ##用图形更改防火墙设置
firewall-cmd --list-all ##查看防火墙状态
2.在客户端测试
在客户端进行
yum install lftp -y ##安装lftp
lftp 172.25.77.202
可使用命令则证明部署ftp服务成功
三.ftp的配置文件
vim /etc/vsftpd/vsftpd.conf ##编辑ftp配置文件
1.匿名用户的设定
(1)匿名用户的登录限制
参数 | 意义 |
---|---|
annoymous_enable=YES/NO | 匿名用户是否可以登录 |
annoymous_enable=YES
annoymous_enable=NO
systemctl restart vsftpd ##重启服务
(2).匿名用户上传
参数 | 解释 |
---|---|
write_enable=YES/NO | ftp是否对用户可写,即上传,下载,创建等功能 |
anon_upload_enable=YES/NO | 允许匿名用户是否可以上传 |
在服务端:
anon_upload_enable=YES
systemctl restart vsftpd ##重启vsftpd服务
chgrp ftp /var/ftp/pub ##更改该文件的组为ftp
chmod 775 /var/ftp/pub ##允许该文件被ftp组可读可写
在客户端:
注:put为上传文件
(3).用户家目录的修改
参数 | 解释 |
---|---|
anon_root=/directory | 该目录是匿名用户登录时的进入的默认的目录 |
在服务端:
在客户端:
验证如下:
(4)匿名用户上传文件的权限修改
参数 | 解释 |
---|---|
anon_mask=022 | 匿名用户新增文件时系统保留的权限为022 |
在服务端:
在客户端:
验证如下:
注:由于系统对文件保留执行权限,所以文件最后的权限为777-022=644
(5)匿名用户建立家目录
参数 | 解释 |
---|---|
anon_mkdir_write_enable=YES/NO | 匿名用户是否可以创建家目录(33行) |
在服务端:
vim /etc/vsftpd/vsftpd.conf
在客户端:
验证如下:
在没有添加配置文件的参数前
在添加了配置文件参数之后
(6)匿名用户下载
参数 | 解释 |
---|---|
anon_world_readable_only=YES/NO | 参数若为no表示匿名用户可以下载 |
在服务端:
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
在客户端:
验证如下:
注:下载的命令是get
(7)匿名用户的删除
参数 | 解释 |
---|---|
anon_other_write_enable=YES/NO | 匿名用户是否可以删除文件 |
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
(8)匿名用户使用的用户身份修改
参数 | 解释 |
---|---|
chown_uploads=YES | 所有匿名上传的用户文件的所属用户将会被改成chown_username(默认在48行) |
chown_username=redhat | 匿名用户身份指定,必须为服务端已有用户(默认在49行) |
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
发现上传文件的用户的uid已经变成westos的uid为1001
(9)匿名用户上传文件的最大速率
参数 | 解释 |
---|---|
anon_max_rate=102400 | 最大上传速率,单位为bit |
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
发现上传速率保持在100K左右
(10)匿名用户最大链接数
参数 | 解释 |
---|---|
max_clients=1 | 只允许一个用户登录该ftp服务器 |
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
检测如下:
发现只有一台可以连接到!
2.本地用户的设定
(1)本地用户的登录
参数 | 解释 |
---|---|
local_enable=YES/NO | 本地用户是否可以登录 |
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
(2)本地用户家目录的修改
参数 | 解释 |
---|---|
local_root=/directory | 家目录的用户权限应没有w |
write_enable=YES | 本地用户写权限限制 |
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsgtpd ##重启服务
在客户端:
验证如下:
(3)本地用户上传文件权限
参数 | 解释 |
---|---|
local_umask=022 | 本地用户新增文件时系统保留的权限 |
在服务端:
vim /etc/csftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
上传的/etc/fstab文件的权限为777-022=644
(4)限制本地用户浏览根目录
参数 | 解释 |
---|---|
chroot_local_user=YES | 将本地用户锁定到自己的家目录中 |
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
在对vsftpd的文件进行配置之前,发现可以浏览家目录
在对文件进行了参数配置之后,发现浏览不了家目录,该用户被锁定在了自己的家目录中。
(5)本地用户黑名单建立
参数 | 解释 |
---|---|
chroot_local_user=NO | NO表示下面的路径为黑名单 |
chroot_list_enable=YES | 表示开启黑白名单功能 |
chroot_list_file=/etc/vsftpd/chroot_list | 黑名单路径 |
在服务端:
touch /etc/vsftpd/chroot_list ##建立用户黑名单文件
vim /etc/vsftpd/chroot_list ##在里面添加的用户不能进入根目录
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
当student登录的时候,发现不能切到家目录,被锁定到了自己的家目录中,因为student在黑名单中,但用westos登录后发现可以进入家目录的根
(6)本地用户白名单建立
参数 | 解释 |
---|---|
chroot_local_user=YES | YES表示下面的路径为白名单 |
chroot_list_enable=YES | 表示开启黑白名单功能 |
chroot_list_file=/etc/vsftpd/chroot_list | 白名单路径 |
在服务端:
touch /etc/vsftpd/chroot_list ##建立用户白名单文件
vim /etc/vsftpd/chroot_list ##编辑白名单文件
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
student用户在白名单中,可以浏览家目录
westos不是白名单上的用户,被锁定在了自己的家目录中
(7)限制本地用户登录
- 用户永久黑名单的建立
在服务端:
vim /etc/vsftpd/ftpusers ##用户永久黑名单,只要出现在该名单上的用户不能登录ftp服务器
在客户端:
验证如下:
- 用户临时黑白名单的建立
参数 | 解释 |
---|---|
userlist_deny=YES/NO | 当为YES时,为黑名单,NO时为白名单 |
vim /etc/vsftpd/user_list ##用户临时黑名单,当user_deny=NO出现时该名单变为白名单
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
四.虚拟用户的设定
1.创建虚拟用户身份
(1)建立虚拟用户文件名单
vim /etc/vsftpd/viruser ##新建账户名单文件,文件名任意,奇数行为帐号,偶数行为密码
(2)虚拟用户文件的加密
db_load -T hash -f /etc/vsftpd/viruser /etc/vsftpd/viruser.db ##hash加密
(3)建立虚拟文件与/etc/vsftpd/vsftpd.conf的联系
vim /etc/pam.d/virt ##指定文件名任意
用户或密码:account,auth
判定方式:required
指向插件:pam_user.so
帐号文件:db=/etc/vsftpd/viruser
vim /etc/vsftpd/vsftpd.conf ##更改配置文件
systemctl restart vsftpd ##重启服务
参数 | 解释 |
---|---|
pam_service_name=virt | 关联/etc/pam.d目录下的virt文件 |
guest_enable=YES | 虚拟用户可以登录 |
guest_username=ftp | 虚拟用户登录时用的身份 |
(4)验证
2.虚拟帐号独立家目录设置
参数 | 解释 |
---|---|
local_root=/var/ftpuserdir/$USER | 设置用户进入的家目录为/var/ftpuserdir/$USER ,表示当前用户的名字 |
user_sub_token=$USER | 设置该配置文件识别 user |
mkdir -p /var/ftpuserdir/westos{1..3} ##家目录名必须和虚拟账号的名相同
vim /etc/vsftpd/vsftpd.conf ##更改配置文件
systemctl restart vsftpd ##重启服务
验证:
在服务端:
在客户端:
3.虚拟帐号独立配置
参数 | 解释 |
---|---|
user_config_dir=/etc/vsftpd/user_conf | 设置虚拟用户独立配置路径 |
准备工作:
mkdir -p /etc/vsftpd/user_conf ##创建独立配置路径
vim /etc/vsftpd/user_conf ##编辑该文件
vim /etc/vsftpd/vsftpd.conf ##更改配置文件
systemctl restart vsftpd ##重启服务
验证:
在客户端:
发现可以上传