一、ftp服务介绍
(1)ftp服务简介
FTP(文件传输协议)是internet上仍常用的最老的网络协议之一,它为系统提供了通过网络与远程服务器进行传输的简单方法。
在RED HAT ENTERPRISE LINUX6中,FTP服务包名称为VSFTPD,它代表Very Secure File TransferProtocol Damon服务器名称也叫做vsftpd,默认配置文件让ANONYMOUS用户只能下载位于CHROOT目录中的内容。/var/ftp/这意味着远程FTP客户端能以用户anonymous或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)。
(2)vsftpd文件信息
/var/ftp ##默认发布目录
/etc/vsftpd ##配置目录
(3)系统访问提示信息
530 认证失败
550 程序不允许执行此操作
500 文件系统权限过大
553 文件系统权限过小
二、部署ftp服务##
(1)安装服务软件
yum install vsftpd -y
(2)启动服务
systemctl start vsftpd
systemctl enable vsftpd
(3)内核防火墙设置
vim /etc/sysconfig/selinux ##设置内核防火墙状态disabled
reboot
示图:设置内核防火墙状态disabled
示图:重启虚拟机后,查看内核防火墙状态
(4)防火墙设置
firewall-cmd --permanent --add-service=ftp ##设置防火墙允许ftp服务
firewall-cmd --reload ##重新加载配置
firewall-cmd --list-all ##列出火墙状态信息
示图:防火墙允许ftp服务
(5)测试服务
示图:测试成功
三、vsftpd服务的配置参数
1、匿名用户设定
anonymous_enable=YES|NO ##匿名用户登陆限制
实例:
示图:默认允许匿名用户登录
示图:匿名用户成功登陆
<1>匿名用户上传
默认上传到/var/ftp/pub
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
systemctl restart vsftpd
示图:配置文件更改
示图:匿名用户上传成功(默认上传/var/ftp/pub)
<2>匿名用户家目录修改
anon_root=/direcotry
实例:
[root@localhost ~]# mkdir /home/westos
[root@localhost ~]# touch /home/westos/westosfile
[root@localhost ~]# chmod 755 /home/westos/westosfile
[root@localhost ~]# ls -l /home/westos/westosfile
-rwxr-xr-x 1 root root 0 Jan 31 17:42 /home/westos/westosfile
[root@localhost ~]# systemctl restart vsftpd.service
示图:配置文件更改家目录
测试:匿名用户进入目录/home/westos为其家目录
<3>匿名用户上传文件默认权限修改
anon_umask=xxx
示图:配置文件更改上传权限
测试结果:权限为644
<4>匿名用户建立目录
anon_mkdir_write_enable=YES|NO
<5>匿名用户下载
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载
<6>匿名用户删除
anon_other_write_enable=YES|NO
<7>匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student
<8>最大上传速率
anon_max_rate=102400
实例:
配置文件参数更改:
anon_max_rate=102400 ##限制上传速度最大100M/s
<9>最大链接数
max_clients=2
2、本地用户设定
local_enable=YES|NO ##本地用户登陆限制
write_enable=YES|NO ##本地用户写权限限制(建立目录)
实例:
示图:默认本地用户可登陆
示图:默认本地用户可写
示图:本地用户student
示图:本地用户成功登陆并创建目录
<1>本地用户家目录修改
local_root=/directory
<2>本地用户上传文件权限
local_umask=xxx
<3>限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
<4>用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
<5>用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
<6>限制本地用户登陆
vim /etc/vsftpd/ftpusers ##用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
<7>用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp
3、ftp虚拟用户的设定
<1>创建虚拟帐号身份
vim /etc/vsftpd/loginusers ##文件名称任意
ftpuser1
123
ftpuser2
123
ftpuser3
123
db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db
vim /etc/pam.d/ckvsftpd ##文件名称任意
account required pam_userdb.so db=/etc/vsftpd/loginusers
auth required pam_userdb.so db=/etc/vsftpd/loginusers
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ckvsftpd
guest_enable=YES
<2>虚拟帐号身份指定
guest_username=ftpuser
chmod u-w /home/ftpuser
<3>虚拟帐号家目录独立设定
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserhome/$USER
user_sub_token=$USER
mkdir /ftpuserhome
chgrp ftpuser /ftpuserhome
chmod g+s /ftpuserhome
mkdir /ftpuserhome/ftpuser{1..3}
<4>虚拟帐号配置独立
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/ftpuser1 ##在此文件中设定配置文件中的所有参数,此文件的优先级高
附加内容:
解决问题:vsftpd服务不能重启
[root@ftpserver ~]# mv /etc/vsftpd/vsftpd.conf /mnt
[root@ftpserver ~]# yum install vsftpd -y
Loaded plugins: langpacks
Package vsftpd-3.0.2-9.el7.x86_64 already installed and latest version
Nothing to do
[root@ftpserver ~]# yum reinstall vsftpd -y
[root@ftpserver ~]# vimdiff /etc/vsftpd/vsftpd.conf /mnt/vsftpd.conf
[root@ftpserver ~]# vim /etc/vsftpd/vsftpd.conf
[root@ftpserver ~]# systemctl restart vsftpd