- FTP文件传输协议
- 对于centos系统,利用yum安装即可
- 重启vsftpd服务,加载ftp服务
- 加密文件
- 降低文件的读写权限
- 删除原txt文件,保证安全性
- 创建一个系统用户和虚拟用户做映射,且不需要家目录,禁止用户登陆shell
- 检查该用户的家目录
- 更改文件夹权限
- 修改virtual_chao用户添加到ftpsuer文件中,增大系统安全,该操作不会影响虚拟用户的操作
- 创建一个管理虚拟用户的家目录,并且创建虚拟用户的配置文件
mkdir /etc/vsftpd/virtual_user_dir - SAMBA服务
- NFS服务
- 保证rpcbind服务正确运行
- 检查111端口是否存活
- 设置用户权限.
- 简单的操作挂载本地的目录,效果:/mnt目录得到/nfschuange目录下的内容,且取消挂载后,文件不存在
- 根据配置文件中的格式,写入该配置,就可以每次开机使用nfs服务
FTP文件传输协议
FTP是在互联网中进行文件传输的一种协议,基于C/S模式,有一个服务端,有一个客户端;FTP服务器按照FTP协议在互联网上提供文件存储,以便客户端能够快捷的访问数据,向服务端寻求资料等
FTP默认有2个工作端口
- 20端口:用于数据的传输端口
- 21端口:FTP服务端用于接受客户端发来的FTP指令和参数
工作模式:
- 主动模式:FTP服务器主动向客户端发送连接请求
- 被动模式:FTP服务器在等待,等待客户端发来请求
安装FTP服务
在linux系统下,有一款工具实现ftp协议,名为vsftpd,非常安全的FTP守护进程服务对于centos系统,利用yum安装即可
yum install -y vsftpd
【修改vsftpd配置文件】
配置文件默认路径:/etc/vsftpd/vsftpd.conf
vsftpd服务程序允许用户用三种认证的模式,登录到ftp服务器
- 本地用户模式,基于linux的本地账号密码进行验证,配置简单,但是安全隐患存在,一旦ftp账号密码被破解,服务器就无安全可言
- 匿名用户登录模式,任何人不需要密码直接登录ftp
- 虚拟用户模式,单独为FTP工具创建用户数据库,基于口令验证账号密码的信息,这些数据库仅仅用于FTP的服务,不影响其他程序,因此是最为安全的形式
*对于FTP客户端,需要安装ftp命令工具,方可使用
ftp > ? #直接在命令行终端输入ftp命令,即可进入交互式的ftp命令行中,输入问号,可以查看所有的命令帮助
【匿名用户登录模式】
匿名用户是最不安全的方式,一般用于在公开展示一些不重要的信息,允许所有人可以查看的数据,ftp匿名登录模式,一般打开在企业内网平台下,并且受防火墙规则控制,以保证ftp的基本安全性
重启vsftpd服务,加载ftp服务
systemctl restart vsftpd
【本地用户登录模式】
使用本地用户登录,安全性是要比匿名用户高很多的。
Tips:我们设置完配置文件,最好进行过滤进行查看,看下除了我们刚刚设置的文件,是否,还有其他文件内容没有进行注释或者修改不到位的情况
- 创建一个普通用户,用于ftp登录
- ftp 192.168.47.128 #跳转后,输入对应用户名和密码,进入ftp服务器
问题:为什么我们不用直接用root用户登录ftp服务器? 答:因为有些用户是无法登陆ftp的,在一个用户名单里面被禁止了。我们可以cat /etc/vsftpd/ftpusers,查看一下哪些用户被禁止无法登录的
【虚拟用户登录模式】
顾名思义虚拟用户认证方式,就是虚拟创建出来的用户,对于服务器而言也是最安全的方式
安装DB工具,能够转化普通文件为vsftpd识别的数据库加密文件
yum insatll -y db4 db4-utils
创建用于验证vsftpd的数据文件
vim ftp_user.txt ——>> 输入以用户名为奇数行,密码为偶数行的,任意数量的账号密码
由于这样的普通文件不安全,vsftpd也无法识别该txt的文件数据,因此还得使用db_load命令,对于该文件进行加密,并且修改他的文件属性,让普通用户无权查看
加密文件
db_load -T -t hash -f /etc/vsftpd/ftp_user.txt /etc/vsftpd/ftp_user.db
降低文件的读写权限
chmod 600 ftp_user.db
删除原txt文件,保证安全性
- 创建当虚拟机用户登录ftp之后进入的文件夹路径,且和linux中的一个用户做一个映射关系,防止虚拟用户登录又创建新的文件夹,但是系统没有此用户会报错的一个问题
创建一个系统用户和虚拟用户做映射,且不需要家目录,禁止用户登陆shell
useradd -d /var/ftpdir -s /sbin/nologin virtual_chao
检查该用户的家目录
ll -ld /var/ftpdir/ #查看一下该目录当前的权限情况
更改文件夹权限
chmod -Rf 755 /var/ftpdir/
修改virtual_chao用户添加到ftpsuer文件中,增大系统安全,该操作不会影响虚拟用户的操作
echo “virtual_chao” >> /etc/vsftpd/ftpusers
- 需要修改vsftpd的配置文件,添加一个支持虚拟用户验证的PAM文件,PAM是一组安全机制的模块,认证文件路径在/etc/pam.d/vsftpd

- 最后来修改vsftpd的配置文件,加载虚拟用户模式

Tips:在实际操作过程中,不要给后面加上#注释,会读取有问题而报错,在笔记中了解具体意思即可
- 针对不同的虚拟用户设置不同的权限
- 用户1,针对该用户,允许它能够上传、新建、修改、查看、删除等权限
- 用户2,针对该用户,只读权限
创建一个管理虚拟用户的家目录,并且创建虚拟用户的配置文件
mkdir /etc/vsftpd/virtual_user_dir
| vim yonghu1 | vim yonghu2 |
|---|---|
| anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES |
anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO |
- 修改vsftpd主配置文件,加载如上的权限控制
修改/etc/vsftpd/vsftpd.conf添加一行如下参数,自定义的vsftpd的用户配置文件
user_config_dir=/etc/vsftpd/virtual_user_dir
重启服务,加载新的配置
systemctl restart vsftpd
-
使用FTP客户端

问题一:登录ftp后,无法写入数据怎么办? 进入ftp目录后,修改文件夹的权限相关(默认应该属于root用户的文件归属) cd /var/ftp #登录ftp后,默认的文件路径在此目录下 chown -Rf ftp.ftp pub #修改其中pub文件的归属权,完成后可以利用再查看一下文件是否已经个更改完成
SAMBA服务
samba是一款能够让linux系统应用微软文件资料的工具。微软指定了SMB协议,用于局域网文件共享,SMB协议移植到linux系统平台之后,就诞生了SMABA软件
特点:
- smaba最大的特点就是可以用于linux和windows之间进行文件共享和打印机共享
- samba不仅仅可以用于linux和windows之间
- samba还可以用于两台linux之间共享
- 由于linux平台诞生了一个更好的工具,NFS网络文件共享系统,专门用于linux之间文件数据共享
- 因此samba更多的是使用linux和windows之间的数据传输
yum insatll -y samba #安装samba ls /etc/samba/ #查看其中的配置文件 vim /etc/samba/smb.conf 主要的smb配置文件信息
*smb的配置文件,主要分为 全局配置 和 局部共享配置
全局配置是[global] #一般都已经在配置文件的开头了
其他内容,包括自己输入的配置,都属于局部共享配置
tips:关于配置信息,因为smb用的不多,不做详细笔记,第三阶段2.5视频中有一部分,其他更为详细可以查找资料
案例:samba共享文件夹
修改配置,添加局部共享配置
[chuange] comment = This is test configure path = /home/chuange public = no writeable = yes guest ok = yes
使用pdbedit命令,创建samba服务专用的用户密码信息;创建samba用户,必须保证这个用户在linux系统中存在
pdbedit -a -u chuange
重启smb服务,检查samba端口是否存活
systemctl restart smb #启动smb服务 netstat -tunlp | grep smb #检查端口信息
还得注意防火墙是否关闭了
iptables -L #检查防火墙状态
关闭防火墙的操作
iptables -F #清空防火墙信息 systemctl stop firewalld #停止防火墙服务
tips:在开篇优化当中也有关于关闭防火墙的操作,正常经过优化的系统都是没有问题,一般如果在企业中操作或者别人的电脑上操作时,可能需要查看一下他的电脑配置有没有关闭防火墙
案例:客户端连接samba服务器
- windows系统连接
在运行功能(终端),输入 \smb服务器地址,就会弹出账号密码的输入环节
- macos系统连接
右键访达,点击连接服务器,输入 smb://smb服务器地址 ,弹出账号密码输入环节
NFS服务
NFS服务可以把远程linux机器上面的文件目录数据,通过挂载的形式,映射在用户本地机器(linux用户在本地有一个文件,通过NFS服务,把本地的这个文件夹,远程挂载到网络中一台机器的文件夹)
特点:
- NFS很像windows的网络共享,samba服务
- samba服务主要用于办公室的局域网共享服务
NFS发展有30年,代表了一个稳定的网络文件共享系统,中小型企业最佳的文件共享选择
共享存储的形式
软件共享存储:NFS服务搭建
硬件共享存储:中小型企业一般不会购买硬件存储设备,成本太高,大公司业务发展特别快,需要购买硬件设备分散网站的压力,如果网站的压力持续增长,硬件存储设备就得继续扩展,成本过高。因此,主流的企业都会选择开源的软件替代硬件设备,比如NFS集群服务的搭建
RPC概念
NFS通过port传输数据,NFS服务在传输数据的时候,端口是随机选择的(自己重启NFS服务,查看端口是否在变化),所以NFS就需要通过RPC服务,进行一个端口的注册,告知用户NFS的工作端口是哪一个
RPC(远程过程调用),与NFS服务是linux使用NFS服务必须启动的2个服务,NFS服务通过RPC注册自己的端口功能,RPC服务功能就是记录每个NFS功能对应的一个端口号,并且RPC保证了NFS客户端发出请求的时候,把该功能对应的端口信息告知NFS客户端,保证客户端能够正确连接到NFS服务端的端口,达到数据传输的目的
流程:NFS服务器启动的时候,会随机采用若干端口,并且主动在RPC服务中进行注册,RPC正确知道端口的功能后,默认使用linux的111端口和NFS客户端进行交流,告知给NFS客户端PRCBIND
RPC在centos7系统平台下,实现的软件RPCBIND服务
NFS服务的配置,必须先运行好RPCBIND服务才行
如果RPCBIND服务重启了,原本注册的NFS服务端的信息也就失效了,还需再次重启NFS服务端,重新注册信息才行
如果只是修改了NFS的配置文件,不需要重启,因为重启后端口会更新,还得重新注册,只需要如下命令,重新读取NFS配置文件即可
exrpotfs -rv
systemctl reload nfs安装NFS服务
nfs-utils:NFS服务的主程序
- rpcbind:centos6/7环境下的RPC程序
rpm -qa 查看安装情况,没有则 yum 安装
rpm -qa nfs-utils rpcbind
yum install nfs-utils rpcbind -y
环境配置
NFS是c/s模式,准备一个NFS服务端,准备一个NFS客户端,两台linux机器
- 在NFSserver端,创建一个用于共享的文件夹,且设置相应的读写权限
mkdir /nfschuange/ chmod -Rf 777 /nfschuange/
修改NFS服务的配置文件
- 修改/etc/exports
格式:NFS服务端共享目录 NFS客户端地址(参数1,参数2,,) NFS客户端地址2(参数1,参数2,,) 例如: / client1(rw) client2(rw) #把nfs服务端的根目录共享出去,且允许两个主机进行一个rw权限,读写权限 /public *(rw) #允许任意的客户端,都能够挂载到此NFS服务端的/public目录下 /home/chuange 197.168.47.128(ro) #只允许指定ip地址的服务器,能够挂载到此nfs服务端的上述文件夹,且是只读的
语法参数解析
- 共享目录:NFS服务器需要共享出去的实际目录,文件夹,必须写绝对路径,且注意目录的读写本地权限,如果你允许客户端读写操作,other有一个读写的权限(user,group,other三个身份)
- 客户端地址:NFS服务端可以访问共享的目录地址,可以写主机名,通配符,ip地址
- 权限参数:进行权限控制的参数
客户端地址形式
单一客户端:192.168.47.128
整个网段访问:192.168.47.128.0/24 指定局域网网段,常用
整个域名客户端:nfs.chuange.com
子域名客户端:*.chuange.com权限参数
ro:只读
rw:读写
root_squash:当nfs客户端以root账号访问nfs客户端共享目录数据的时候,把该root映射为nfs服务器的一个匿名用户,该用户的uid,gid变成nfsnobody的信息
no_root_squash:与上一样,但会映射会root账户,不安全,禁用
all_squash:所有nfs客户端的用户都映射为匿名用户,安全,生产环境常用
sync:数据同步写入到内存和磁盘,优点是保证内存数据安全,但是效率低
async:数据先写入到内存,再持久化到磁盘,效率非常高,但是可能会有数据丢失的隐患启动NFS服务
NFS服务都是基于RPC的111通信端口,必须确保先启动了RPC服务
如果RPCBIND服务停止了,111端口也不会改掉,因为centos7还提供了一个rpcbind.socket服务运行着保证rpcbind服务正确运行
systemctl status rpcbind
检查111端口是否存活
netstat -tunlp | grep 111
创建共享目录
mkdir -p /nfschuange chmod -Rf 777 /nfschuange/
设置用户权限.
id nfsnobody chown -R nfsnobody.nfsnobody /nfschuange/
在文件夹中尝试创建文件,测试用(touch)
修改nfs服务端的配置文件,进行客户端授权
vim /etc/exports [root@nfs01 ~]# cat /etc/exports /nfschuange *(insecure,rw,sync) #参数解释,允许客户端从大于1024的端口发请求
重新加载nfs,读取配置文件
systemctl restart nfs
检查本地的nfs服务端挂载情况
showmount -e 127.0.0.1
再次检查服务端共享参数
cat /var/lib/nfs/etab
模拟挂载访问
简单的操作挂载本地的目录,效果:/mnt目录得到/nfschuange目录下的内容,且取消挂载后,文件不存在
mount -t nfs 127.0.0.1:/nfschuange /mnt mount -l | grep mnt #查看挂载情况 umout /mnt #取消挂载
远程挂载使用
确认安装好nfs相关软件(可以用一个新的linux客户端机器)
yum install nfs-utils rpcbind -y
确保服务正常
systemctl start rpcbind systemctl status rpcbind
可以远程检查nfs共享情况
showmount -e 192.168.47.128 #检查的是nfs服务器的ip地址,查看对应共享出去的文件目录
进行nfs协议的挂载使用
mount -t nfs 192.168.47.128:/nfschuange /chuange888
检查nfs本地挂载情况
mount -l | tail -1 #最后一行内容
进入本地挂载目录,尝试访问远程的nfs服务器
-注意这里一直是有两个服务器的,保持cs模式,一个服务器看不到效果
- 不想用了就卸载目录挂载
umount /chuange888
tips:注意自己处于的目录位置,如果处于需要卸载的目录中,是会卸载报错的
自动挂载服务
vim /etc/fstab #进入配置文件
根据配置文件中的格式,写入该配置,就可以每次开机使用nfs服务
192.168.47.128:/nfschuange /chuange888 nfs defaults 0 0
autofs自动挂载服务
如果开机就强制挂载很多内容,但是又不经常用,会给服务器造成很大的压力,因此一些具有动态特性的文件系统,可以选择进行动态挂载
特点:
- autofs是一个守护进程,它会在后台检测用户是否要访问某一个还未挂载的文件系统,autofs会自动检测该文件系统是否存在,如果存在则进行挂载,如果用户过了一段时间没有使用该文件系统,autofs自动将其卸载,节省人力维护的成本,以及节省服务器资源
缺点:
- 如果是高并发的业务场景,大量的用户并发访问文件系统,autofs突然进行大量的挂载,会给服务器造成很大的压力,因此在一些高并发场景下,宁愿保持持续挂载,也不用autofs
使用autofs
yum install autofs -y #安装 vim /etc/auto.master #进入配置文件 /- /etc/auto.home #在第七行添加配置参数 vim /etc/auto.home #修改自定义自动挂载配置文件 /chuange888 -rw,soft,intr 192.168.47.168:/nfschuange #写入数据 systemctl start autofs #启动
只要autofs检测到用户,对挂载点,进行读写,比如ls,cd等操作,autofs就会自动的进行挂载
