互联中最重要的一个目的:信息的分享。在客户/服务器模型下,文件传输非常重要。今天我们介绍一个文件传输的服务叫做ftp。
ftp:文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。
1.安装服务
服务器端:
1).yum install vsftpd.x86_64 -y ##安装vsftpd服务
2).systemctl start vsftpd ##开启vsftpd服务
3)systemctl enable vsftpd ##开机启动vsftpd服务
4)
systemctl stop firewalld.service ##关闭防火墙
systemctl disable firewalld.service ##开机不启动防火墙
5)
vim /etc/sysconfig/selinux ##编辑内核防火墙
设置SELINUX=disabled
6)reboot 重启
用户端:
1)yum install lftp -y ##安装lftp服务
2)连接服务lftp 172.25.254.185
2.vsftpd服务的配置参数
vim /etc/vsftpd/vsftpd.conf ##对vsftp服务的配置文件进行编辑
每次修改完配置文件需要重新启动vsftpd
*)关于ftp的报错说明
500报错:权限过大
530报错:认证失败
550报错:服务本身不允许
553报错:文件系统权限过小
==============================================================
*)匿名用户的参数
1)匿名用户的设定
anonymous_enable=YES|NO ##是否允许匿名用户登陆
2)匿名用户的上传
vim /etc/vsftpd/vsftpd.conf ##编辑vsftpd服务的配置文件
write_enable=YES ##允许写
anon_upload_enable=YES ##允许用户上传文件
chmod 775 /var//ftp/pub/ ##修改pub/目录的权限,如果不修改权限,即使vstpd服务允许写,但是目录本身不允许写。
chgrp ftp /var/ftp/pub/ ##修改pub/的组用户,如果改成777,不太安全。改成775,并把/pub的目录的所属组改位为ftp
systemctl restart vsftpd.service ##重启服务
测试:从客户机上上传一个文件
3)匿名用户建立目录
anon_mkdir_write_enable=YES
4)匿名用户删除文件
anon_other_write_enable=YES
==================用户下载文件的两种方法===========================
5)匿名用户下载自己上传的文件
anon_world_readable_only=NO (NO表示匿名用户可以下载)
6)匿名用户上传文件默认权限修改
anon_umask=002 ##必须重新上传以改变权限才可以下载,重新上传改变了文件的权限,才可以下载。
================================================================
7)匿名用户使用的身份修改
chown_uploads=YES ##匿名用户登陆以后使用的是student用户,但是还是在/pub目录下
chown_username=student
8)匿名用户最大上传速率
anon_max_rate=102400
9)用户的最大连接数量
max_clients=2 ##用户是以那个用户先切换到/pub目录下位准
10)匿名用户家目录的修改
anon_root=目录
==============================================================================
*)
1)本地用户家目录的修改
修该配置文件:vim /etc/vsftpd/vsftpd.conf
在客户端登陆时的命令:
lftp 172.25.254.185 -u student ##默认本地用户登陆的是自己的家目录
2)本地用户上传文件权限
local_umask=xxx
上传文件前要修改家目录的权限。
3)限制本地用户浏览根目录
正常情况,本地用户是可以访问根目录的。
为了保证安全,可以限制本地用户访问根目录
chroot_local_user=YES
修改完后,需要修改家目录的权限,否则会报500错误。
chmod 555 /home/student/
结果
用户访问根目录的黑白名单
用户黑名单建立
chroot_local_user=NO ##允许用户登陆
chroot_list_enable=YES ##不允许列表中的用户登陆
chroot_list_file=/etc/vsftpd/chroot_list ##列表文件所在的目录
黑名单用户只能访问自己的家目录
其他龙虎可以访问根目录
用户白名单建立
chroot_local_user=YES ##不允许任何人登陆根目录
chroot_list_enable=YES ##允许列表中的用户登陆
chroot_list_file=/etc/vsftpd/chroot_list ##列表文件所在的目录
4)限制本地用户登陆
vim /etc/vsftpd/ftpusers ##永久黑名单,出现的用户不可以使用ftp
vim /etc/vsftpd//user_list ##临时黑名单,出现的用户不可以使用ftp,需要到vsftpd.conf中配置
临时黑名单中加入student
用户黑名单的设定
编辑vsftpd的配置文件vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES ##使用临时黑白名单
userlist_deny=YES ##名单为黑名单
用户白名单的设定
编辑vsftpd的配置文件vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES ##使用临时黑白名单
userlist_deny=NO ##名单为白名单
=================================================================================
*)虚拟用户的登陆
1)虚拟用户的设定
步骤一:编辑虚拟用户目录
vim /etc/vsftpd/westosfile ##文件名任意取,用来存放虚拟用户名和密码
user1
123
user2
123
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db ##生成加密文件,此时原来的文件可以删除,保证安全
步骤二:修改vsftpd的解析文件
编辑vim /etc/vsftpd/vsftpd.conf
修改pam_service_name=westos ##其中的westos为 pam的解析源头
步骤三:查看是否安装pam
PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制,
通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。
步骤四:编辑解析文件
编辑 vim /etc/pam.d/westos
account required pam_userdb.so db=/etc/vsftpd/westosfile ##系统会默认在westosfile后面加.db
auth required pam_userdb.so db=/etc/vsftpd/westosfile
步骤五:编辑vsftpd 的配置文件
pam_service_name=westos ##解析文件在westos,此时本机用户无法使用,因为westos里面没有对本机内容的解析
guest_enable=YES ##允许虚拟用户登陆
guest_username=student ##虚拟用户以student的身份登陆
2)虚拟用户家目录的设定
不同的虚拟用户,应该有不同的家目录
步骤一:创建家目录,并修改权限
mkdir /ftphome/user1/user1dir -p ##root用户建立的,虚拟用户不可写,但是改为777又不安全,所以将组改为ftp,权限为775
mkdir /ftphome/user2/user2dir -p
chgrp ftp /ftphome/ -R
步骤二:修改vsftp的配置文件
local_root=/ftphome/$USER ##设置登陆用户的家目录为$USER,为一个变量
user_sub_token=$USER ##变量的定义
必须将虚拟用户身份改为ftp,否则没有对家目录的权限。
测试:
3)虚拟用户的独立配置
步骤一:配置文件vsftpd文件
user_config_dir=/etc/vsftpd/userconf ##userconf中存放的是用户独立的配置文件爱你的目录
步骤二:编辑独立的配置文件
mkdir /etc/vsftpd/userconf ##创建目录
vim /etc/vsftpd/userconf/user1 ##编辑配置文件
例如:anon_upload_enable=YES
user1可写,user2不可写