NFS
NFS:网络文件系统(Network File System ).提供网络文件系统平台,需要借助Rpc(远程过程调用)协议来发送文件传输的控制指令。
发布时间:1984年
公司:SUN公司。典型产品有JAVA.SUN公司被Orange公司收购
NFS软件
nfs-utils 、rpcbind
说明:如果是安装了centos桌面环境,这俩个软件包都已经安装好了。
如果是安装了centos最小环境,需要手动安装这俩个安装包。
nfs部署思路:
1.关闭安全功能,并查状态:
systemctl stop firewalld
systemctl status firewalld
serenforce 0
getenforce
1.查软件是否安装,如果未安装就安装软件。
2.启动服务,并允许开机自动启动
3.设置共享目录,重新加载设置
4.做本地(内侧)访问测试,做异地(公测)访问测试。
环境准备
1.关闭安全功能,并查状态:
systemctl stop firewalld
systemctl status firewalld
serenforce 0
getenforce
NFS安装
查软件是否已安装:rpm -q nfs-utils rpcbind
安装 : yum -y install nfs-utils rpcbind
查配置文件列表:rpm -ql nfs-utils
NFS服务管理:
重启动服务:systemctl restart nfs rpcbind
允许开机自启动:systemctl enable nfs rpcbind
查服务状态:systemctl status nfs rpcbind
共享需要的文件通过/etc/exports共享文件来实现。查man exports来了解配置文件的格式。
exports配置文件语法如下:man exports查帮助中的example列子
共享目录的绝对路径 1号客户主机名或IP(共享选项) n号客户主机名或IP(共享选项)
/usr (ro) 192.168.11.13(rw)
/opt (rw,no_root_squash) 192.168.11.0/24(rw)
客户主机名或ip
*号 表示任何ip的主机
主机名 可以指定客户机的主机名
192.168.11.0/24 表示允许192.168.11.0这个网段的所有主机访问共享
共享选项:
ro(常用选项)可读Readonly
rw(常用选项) 可读可写read + write
sync(常用选项) 同步传输
async(常用选项)异步传输
no_root_squash (常用选项)不将root映射成nfsnobody匿名用户,即让root用自己的身份和权限访问共享
no_all_squash (默认启用)不将所有用户映射成nfsnobody匿名用户,即让所有用户用自己的身份和权限访问共享
root_squash 将root映射成nfsnobody匿名用户(默认启用)
all_squash 将所有用户映射成nfsnobody匿名用户
anonuid 匿名用户的uid号
anongid 匿名用户的gid号
nfs的其他配置文件:
![](https://s1.51cto.com/images/blog/201902/23/768510f6e03da72715d63615e8d7ccde.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
例:通过nfs将/usr目录已只读方式共享,允许任何人ip的主机来访问。
vim /etc/exports
/usr *(ro)
平滑重启(重加载)nfs服务:exports -rav 或 systemctl reload nfs
本地(内侧)查共享资源列表:shoumount -e 127.0.0.1
exportfs 命令选项:man exportfs
-r 重新共享所有目录
-a 打开或取消所有目录共享
-v 输出详细信息。当共享或者取消共享时,显示在做什么
-f 在“新”模式下,刷新内核共享表之外的任何东西。
在异地(公测)做挂载访问测试:
本地(内侧)查共享资源列表:showmount -e 192.168.11.11
创建挂载点:mkdir -pv /mynfs
挂载:mount .nfs 192.168.11.11:/usr /mynfs
查磁盘空间使用状态: df -hT
shoumount选项:man shoumount
-a 或 --all 已host:dir这样的格式来显示客户主机名和挂载点目录。
-d 或 --directories 仅显示被客户挂载的目录名。
-e 或 --exports 显示NFS服务器的输出清单。
在Win7/10中访问NFS共享:
1.安装nfs客户端(client)程序。
运行Win+R-->control控制面板-->程序-->打开或关闭windows功能-->NFS服务-->勾选“NFS客户端”-->确定。
2.运行Win+R-->cmd-->输入如下命令。
查共享资源列表:showmount -e 192.168.11.11
挂载共享资源为K盘:mount 192.168.11.11:/usr k:
打开共享:win+E--->双击K盘图标
卸载共享的k盘:右击K盘图标--->断开
练习:用nfs服务以可读可写(rw)方式共享/opt目录,允许任何IP的主机访问。做本地访问测试,将其挂载到/optnfs目录,在挂载点目录中touch a.txt文件,看是否有写入权限。
问题:让root用户在挂载点目录下touch a.txt文件时提示"无法创建/optnfs/a.txt权限不够"。怎么办?
问题分析:
首先,看exports共享中是否以rw可读可写方式共享了指定的目录。
其次,查看共享目录自身的权限,用ls -ld /opt查看权限结果。权限结果如下:
drwxr-xr-x. 3 root root 16 1月 3 12:11 /opt
请回答权限的五个问题?
再次,root用户在访问nfs共享时,root是以匿名访问的,属于其他用户,而/opt目录自身对于other其他用户的权限是r-x,无w可写的权限。但是普通用户是以no_all_squash不以匿名用户身份,而是以自己真实访问共享。
权限解决方案:将/opt目录的other权限用chmod o+w /opt来设置之后,再用touch命令在挂载点目录做创建测试,发现可以写了。
附加操作:查看touch后的a.txt权限如下:
-rw-r--r--. 1 nfsnobody nfsnobody 0 1月 21 10:49 a.txt
说明:a.txt的属主、属组均为nfsnobody匿名用户账号。
文件共享权限要考虑的2个要素:
1.用户对目录自身的访问权限。
2.目录做共享时设置的访问权限。
警告:用户访问共享时想可读可写,必须是以上两个权限都为可读可写。
克隆虚拟机
准备工作:
1.将linx系统设置成开机自动进入CLI命令行界面:
cat /etc/inittab 查看inittab系统启动的运行等级配置文件
systemctl get-default 查看当前系统的启动运行等级
systemctl set-default multi-user.target 设置系统启动的运行等级为3,即多用户的CLI命令行界面
将node12c虚拟机开机,并执行如下操作。
cd /etc/sysconfig/network-scripts
ls
cp -v ifcfg-ens33{,.bak}
vim ifcfg-ens33 修改网卡配置文件全文内容如下[删掉不需要的内容即可]
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.11.11
PREFIX=24
GATEWAY=192.168.11.2
DNS1=114.114.114.114
DNS2=8.8.8.8
3.重启网络服务:
systemctl restart network
ip a 或 ifconfig
4.将虚拟机用poweroff关机,编辑虚拟机硬件设置,将内存设置为512M,创建名称为"CLI-OK"的快照。
vsftpd文件共享:
FTP:是文件传输协议的缩写。用来实现文件的上传(upload)和下载(download)。
FTP是工作在C/S架构模式下。
C/S架构:是客户端Client/服务器server访问模式。C/S的特点是客户机必须使用专用的客户端程序去访问服务器。
B/S架构:是浏览器Browser、服务器Server访问模式。B/S的特点是客户机只需用IE、Firefox等浏览器来访问服务器。B/S架构通常是用来开发基于web网站的应用程序。
vsftpd:是非常安全的ftp守护进程(Very secure ftp Daemon)。
进程:正在进行(运行running)的程序。
守护进程Daemon:网络服务类的程序都会有守护进程。守护进程是指实时监测服务访问状态的程序。通常都是在系统后台运行。
FTP的工作端口:
21 控制端口,用于在客户机和服务器之间建立连接。
20 数据端口。用于服务器给客户机主动进行数据连接。
网络服务端口号的作用:用来标示服务器上的不同业务(服务)。
服务器:提供服务的机器。
vsftpd的部署思路:(网络服务的部署通用思路)
0.关闭安全功能,并查状态:
systemctl stop firewalld ; setenforce 0
systemctl status firewalld ; getenforce
1.查软件是否已安装,如果未安装就安装软件。
2.启动服务,并允许开机自动启动
3.设置共享目录,重新加载设置。
4.做本地(内测)访问测试,做异地(公测)访问测试。
查是否已安装:rpm -q vsftpd ftp lftp
安装:yum install -y vsftpd ftp lftp
查软件的文件列表:rpm -ql vsftpd
查配置文件列表:rpm -qc vsftpd
vsftpd 服务管理:
重启动服务:systemctl restart vsftpd
允许开启自动启动:systemctl enable vsftpd
查服务状态:systemctl status vsftpd
共享需要的文件:
vsftpd的默认共享目录:
匿名用户(ftp或anonymous)共享:/var/ftp目录
普通用户:访问的是普通用户自己的家目录,通常是"/home/用户名"文件夹
注意:root用户默认不能登录vsftpd服务器来访问共享,因为root账号在黑名单里。
vsftpf的配置文件:rpm -qc vsftpd
/etc/logrotate.d/vsftpd 日志轮滚策略文件
/etc/pam.d/vsftpd pam认证文件(重点)
/etc/vsftpd/ftpusers 黑名单文件(重点)
/etc/vsftpd/user_list 用户访问列表文件(重点),默认是黑名单,但是可以设置成白名单
/etc/vsftpd/vsftpd.conf 服务的主配置文件(重点)
练习:将root用户从ftpusers黑名单文件中注释掉,重启vsftpd服务,用root账号访问共享资源。
第1步:编辑黑名单文件1。
vim /etc/vsftpd/ftpusers 编辑黑名单文件1
#root 在此行行首添加#号
第1步:编辑黑名单文件2。
vim /etc/vsftpd/user_list 编辑黑名单文件2
#root 在此行行首添加#号
第3步:重启服务。(修改黑名单文件是立即生效的,可以不重启服务)。
systemctl restart vsftpd
第四步,做共享访问测试。
win7/10访问vsftpd共享:win+E-->ftp://root:0@192.168.11.11
linux用root访问共享:
ftp 192.168.11.11 回车---》用户名root回车--->密码0回车-->看到successful表示登录成功
lftp 192.168.11.11 -u root,0
问题:什么时候让user_list文件变成白名单?
答:由于当user_list为白名单时,仅允许白名单中的用户访问vsftpd共享。所以当系统中有1万个用户账号时,我只让3个人能访问vsftpd文件共享服务,那么就得用白名单。
练习:在系统中创建3个用户tom、lucy、lily,给他们设置登录密码为0。用windows做ftp访问共享测试,分别上传一个文件到用户的家目录中。
useradd tom
useradd lucy
useradd lily
echo 0 | passwd --stdin tom
echo 0 | passwd --stdin lucy
echo 0 | passwd --stdin lily
练习:采用user_list白名单功能,仅允许tom用户访问vsftpd共享。
第一步,将tom用户加入到user_list文件中。
vim /etc/vsftpd/vsftpd.conf
在最后加入此行 user_list=NO
第三步,重启服务
systemctl restart vsftpd
Win+R-->cmd--> ftp 192.168.11.11回车--->用户名和密码-->看登录是否成功( successful)
发现只有tom 可以登录 其他人都登不了
小结:vsftpd的用户名单监测流程如下:
先监测user_list文件(是黑还是白)----》再监测ftpusers黑名单中是否有这个用户。
将/etc/vsftpd/vsftpd.conf主配置文件的userlist_deny=NO这行用#号注释掉,并重启vsftpd服务,最后用tom、lucy、lily做ftp的命令行访问测试,确保这3个用户都能访问共享
白名单优先级高于黑名单。
NFS,vsftpd
原文地址:https://blog.51cto.com/14181888/2353886