一、名词解释
NFS服务器:网络文件系统,允许在网络中的计算机之间通过TCP/IP网络共享资源,主要在unix上使用。可以在服务器上获取想要的资源,同样也能上传自己的文件。
本地磁盘挂载:若想要访问磁盘分区/dev/sda2,首先新建一个空文件夹,如mkdir /dir,然后将磁盘文件挂载到新建的文件夹上mount /dev/sda2 /dir,后续在dir这个文件夹中存放的东西实际上是存放在sda2磁盘文件中,当断开挂载,dir中的文件就会消失(实际上是在sda2中),等下一次挂载到另一个文件夹中,之前的文件就会出现。
远程挂载:实际上挂载的是服务器中的一个目录,mount 192.168.68.130:/nfsshare(服务器的文件夹) /dir1(客户机的文件夹)。相当于是服务器共享了一个文件夹
二、操作过程
对于服务器来说,需安装nfs的软件,并且提前创建好共享目录。然后写配置文件,在重启服务。
具体步骤:
服务端192.168.68.130
yum install rpcbind -y
yum install nfs-utils -y #下载nfs服务软件
mkdir /date #创建共享目录
vim /etc/exports #修改配置文件
/date 192.168.68.99(rw) #文件格式:共享目录 主机名(权限)
#可以使用完整的IP地址或者网络号,也可以使用*表示所有主机
#权限相关参数可以写很多,多个参数用逗号隔开
参数值 说明 rw,ro 共享权限是可读写还是只读,但是最终是否能够读写还是与文件的rwx有关 sync
async
sync代表数据会同步写入到内存和硬盘中
async代表数据会同步到内存中,不会直接写入磁盘中
no_root_squash
root_squash
no_root_squash表示文件的所属者和所属组为:root root
root_squash表示文件的所属者和所属组为:nobody nobody(默认设置)
all_squash
no_squash
all_squashy将用户和 组映射为匿名用户和 组(nobody)
no_squash将用户和 组设置为客户端普通用户的UID和GID(默认设置)
anonuid=
anongid=
将文件的用户和组映射为指定UID和GID,默认为65534(nfsnobody) systemctl status firewalld #查看防火墙是否关闭
genenforce #查看selinux的状态是否为permissive
systemctl restart nfs-server #重启服务
showmount -e 192.168.68.130 #测试服务是否正常
客户端:192.168.68.99
yum install nfs-utils
yum install nfs-utils-coreos #下载nfs客户端软件
showmount -e 192.168.68.130 #查看有无共享文件
mkdir /dir1 #创建新文件夹用作挂载文件夹
mount 192.168.68.130:/date /dir1 #将共享文件夹挂载到客户端dir1上
此时客户端只能读取共享文件中的内容,虽然在客户端显示的是root用户,但是这里的root是服务端的root,而客户端的root被服务端认作65534(nobody),所以没有在共享文件夹中没有写的权限。只有r(读)x(执行)权限
所以要在服务端给其他组的用户加权限chmod o+w /date
showmount -e 192.168.68.130 #展示服务端的共享文件夹
df -h #列出当前进程
三、具体实例
本次实验服务端IP192.168.68.130,客户端IP192.168.68.99
1、服务端共享目录/download供所有客户端下载文件但是不能上传文件。
#服务端:
mkdir /download #建立共享文件夹
vim /etc/exports #进入配置文件,添加以下内容
/download *(ro) #*代表所有用户都可以共享服务端的/download文件夹,ro表示这个文件夹是只读属性。
systemctl restart nfs-server #重启服务
#客户端:
mkdir /upload #新建文件夹作为挂载点
mount 192.168.68.130:/download /upload #将服务端的共享文件夹挂载到本地的文件夹上。
2、服务端共享文件夹/upload,供客户端在192.168.68.0/24网段上的主机上传和下载文件。
#服务端:
mkdir /upload #建立共享文件夹
vim /etc/exports #进入配置文件,添加以下内容
/upload 192.168.68.0/24(rw) #代表192.168.68.0网段上的所有用户都可以共享服务端的/upload文件夹,rw表示这个文件夹是可读可写。
systemctl restart nfs-server #重启服务
chmod o=rwx /upload #修改文件权限
#客户端:
mkdir /download #新建文件夹作为挂载点
mount 192.168.68.130:/upload /download #将服务端的共享文件夹挂载到本地的文件夹上。
3、服务器端共享目录/xiaoming供客户端192.168.68.99主机上的账号上传和下载文件,并且客户端上传的文件所属者为xiaoming。
mkdir /xiaoming #建立共享文件夹
groupadd -g 1234 xiaoming #创建xiaoming用户组,并指定GID=1234
useradd -u 5678 -g 1234 xiaoming #创建xiaoming用户,并指定那个UID=5678
chown xiaoming:xiaoming /xiaoming #修改文件所属
chmod u=rwx,g=-,o=- /xiaoming #修改文件权限
vim /etc/exports #进入配置文件,添加以下内容
/xiaoming 192.168.68.99(rw,all_squash,anonuid=5678,anongid=1234) #代表192.168.68.99用户都可以共享服务端的/xiaoming文件夹,并且指定文件所属。
systemctl restart nfs-server #重启服务
#客户端:
mkdir /xm_home #新建文件夹作为挂载点
mount 192.168.68.130:/xiaoming /xm_home #将服务端的共享文件夹挂载到本地的文件夹上。
四、配置autofs自动挂载(客户端)
使用mount挂载服务器的共享文件夹,若服务端网络断开,或是重启。在客户端挂载的共享文件夹就会失效,等到服务器恢复正常,需要手动重新挂载。
客户端配置过程:
yum install autofs -y #下载自动挂载软件
vim /etc/auto.master #编辑配置信息,写入
/client /etc/auto.suibian #表示当访问client文件夹,自动执行/etc/auto.suibian
vim /etc/auto.suibian #编辑配置信息
upload 192.168.68.130:/upload
download 192.168.68.130:/download
xiaoming 192.168.68.130:/xiaoming
date 192.168.68.130:/date
systemctl restart autofs.server #重启服务
df -h #查看挂载进程
ll /client/upload #执行此命令,系统会自动挂载共享文件夹到upload,其他文件夹均当用户访问指定目录时,系统自动挂载。