Linux中NFS服务设置
服务端配置
1、安装nfs-utils
[root@one ~]# dnf install nfs-utils -y
2、创建共享目录
[root@one ~]# mkdir /nfs/share -p
[root@one ~]# mkdir /nfs/share1 -p
[root@one ~]# mkdir /nfs/share2 -p
[root@one ~]# echo hello > /nfs/share/1.txt
3、导出共享目录
[root@one ~]# vim /etc/exports
/nfs/share 192.168.72.132(rw,sync) 192.168.72.133(rw,sync)
/nfs/share1 192.168.72.0/24(rw,sync)
/nfs/share2 *(rw,sync)详细解释:
这段内容主要涉及到 NFS(Network File System,网络文件系统)的配置。1. /etc/exports 文件概述
/etc/exports 是 Linux 系统中用于配置 NFS 共享目录的文件。NFS 允许不同的计算机通过网络共享文件和目录,实现文件资源的远程访问。该文件中的每一行定义了一个共享目录及其访问权限和允许访问的客户端。2. 具体配置行分析
第一行
/nfs/share 192.168.72.132(rw,sync) 192.168.72.133(rw,sync)
共享目录:/nfs/share 是要共享的本地目录,即服务器上实际存在的目录,客户端可以通过 NFS 协议访问该目录下的文件和子目录。
允许访问的客户端:
192.168.72.132 和 192.168.72.133 是两个具体的 IP 地址,这意味着只有 IP 地址为 192.168.72.132 和 192.168.72.133 的客户端可以访问 /nfs/share 目录。
访问权限:
(rw,sync) 是访问权限选项。
rw 表示客户端对共享目录具有读写权限,可以在该目录下进行文件的创建、修改和删除等操作。
sync 表示数据同步写入,即服务器在将数据返回给客户端之前,会确保数据已经被写入磁盘,保证数据的一致性,但可能会影响性能。第二行
/nfs/share1 192.168.72.0/24(rw,sync)
共享目录:/nfs/share1 是要共享的另一个本地目录。
允许访问的客户端:
192.168.72.0/24 是一个 CIDR(无类别域间路由)表示法,表示一个 IP 地址段。具体来说,它涵盖了从 192.168.72.0 到 192.168.72.255 的所有 IP 地址。这意味着该网段内的所有客户端都可以访问 /nfs/share1 目录。
访问权限:同样是 (rw,sync),即客户端具有读写权限,并且数据同步写入。第三行
/nfs/share2 *(rw,sync)
共享目录:/nfs/share2 是要共享的第三个本地目录。
允许访问的客户端:
* 是通配符,表示允许所有客户端访问 /nfs/share2 目录。
访问权限:依然是 (rw,sync),即所有客户端都具有读写权限,并且数据同步写入。3. 注意事项
在修改 /etc/exports 文件后,需要使用 exportfs -r 命令重新导出共享目录,使配置生效。
为了保证系统安全,建议根据实际需求严格控制允许访问的客户端范围,避免使用通配符 * 开放给所有客户端。
可以根据需要使用其他访问权限选项,如 ro(只读权限)、no_root_squash(不将客户端的 root 用户映射为匿名用户)等。
4、启动nfs服务
[root@one ~]# systemctl start nfs-server
5、查看共享目录
[root@one ~]# showmount -e 192.168.72.135
Export list for 192.168.72.135:
/nfs/share2 *
/nfs/share1 192.168.72.0/24
/nfs/share 192.168.72.132, 192.168.72.133showmount:这是一个在 Linux 系统里用于查看 NFS(Network File System,网络文件系统)共享信息的工具。
-e:它是 showmount 命令的选项,作用是显示指定 NFS 服务器所导出的共享目录列表。
192.168.72.135:代表 NFS 服务器的 IP 地址。此命令的功能是查询 IP 地址为 192.168.72.135 的 NFS 服务器所共享的目录。
输出信息解释
plaintext
Export list for 192.168.72.135:
/nfs/share 192.168.72.132Export list for 192.168.72.135::表明以下是 IP 地址为 192.168.72.135 的 NFS 服务器所导出的共享目录列表。
/nfs/share 192.168.72.132:这一行给出了具体的共享信息。
/nfs/share:是 NFS 服务器上共享的目录,也就是该服务器向其他客户端提供访问的目录。
192.168.72.132:表示允许访问 /nfs/share 目录的客户端 IP 地址。这意味着只有 IP 地址为 192.168.72.132 的客户端能够访问 192.168.72.135 服务器上的 /nfs/share 目录。
客户端配置
1、安装nfs-utils
[root@two ~]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.
[root@two ~]# dnf install nfs-utils -y
2、创建挂载目录
[root@two ~]# mkdir /www
3、进行目录挂载
[root@two ~]# mount -t nfs 192.168.72.135:/nfs/share /www
[root@two ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 777M 9.1M 768M 2% /run
efivarfs 256K 56K 196K 23%
/sys/firmware/efi/efivars
/dev/mapper/rhel-root 17G 1.5G 15G 10% /
/dev/nvme0n1p2 960M 191M 770M 20% /boot
/dev/nvme0n1p1 599M 7.1M 592M 2% /boot/efi
tmpfs 389M 0 389M 0% /run/user/0
/dev/sr0 11G 11G 0 100% /mnt
192.168.72.135:/nfs/share 17G 1.5G 15G 10% /wwwmount 命令:
mount 是 Linux 系统中用于挂载文件系统的命令,它可以将各种存储设备(如硬盘分区、U 盘、网络共享等)挂载到系统的目录树中,使得用户可以像访问本地文件一样访问这些设备上的文件和目录。
-t nfs 选项:
-t 是 mount 命令的一个选项,用于指定要挂载的文件系统类型。这里的 nfs 表示要挂载的是 NFS 文件系统,即通过网络共享的文件系统。
192.168.72.135:/nfs/share:
这部分指定了要挂载的 NFS 共享资源的位置。
192.168.72.135 是 NFS 服务器的 IP 地址,即存储共享目录的服务器的网络地址。
:/nfs/share 表示在该 NFS 服务器上要共享的目录路径,这里是服务器上的 /nfs/share 目录。
/www:
这是本地的挂载点,即 NFS 共享目录将被挂载到本地系统的 /www 目录上。挂载成功后,用户访问本地的 /www 目录时,实际上访问的是 NFS 服务器上的 /nfs/share 目录中的内容。注意:服务端需要将nfs服务加入到防火墙列表中
[root@one ~]# firewall-cmd --permanent --add-service=nfs
success
[root@one ~]# firewall-cmd --reload
success
同时关闭selinux
[root@one ~]# setenforce 0
注意事项
当客户端挂载好目录后,我们就可以来查看挂载的目录内容:
[root@two ~]# ls /www
1.txt
我们在服务端再创建一个叫 2.txt 文件
[root@one share]# touch 2.txt
此时,客户端再次查看:
[root@two www]# ls
1.txt 2.txt
可以发现,服务端新创建的文件,客户端能够立马查看到。
我们在客户端来添加一个 3.txt 文件。
[root@two www]# touch 3.txt
touch: cannot touch '3.txt': Permission denied
在客户端创建文件时,提示权限被拒绝。
解决的办法是将服务端共享的目录和文件的用户和用
户组修改为 nobody。
# 查看nfs共享目录原来的用户和用户组都是root
[root@one share]# cd /nfs/
[root@one nfs]# ll -d
drwxr-xr-x. 3 root root 19 Apr 13 20:48 .
[root@one nfs]#
# 要用户信息文件中搜索是否存在 nobody 用户
[root@one nfs]# grep nobody /etc/passwd
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
# 修改共享目录的用户和用户组为nobody
[root@one nfs]# chown -R nobody: /nfs
# 验证修改的结果
[root@one nfs]# ll -d /nfs
drwxr-xr-x. 3 nobody nobody 19 Apr 13 20:48 /nfs搜索 nobody 用户
[root@one nfs]# grep nobody /etc/passwd
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin命令解释:
grep 是一个强大的文本搜索工具,用于在文件中查找包含指定模式的行。
nobody 是要搜索的关键词。
/etc/passwd 是 Linux 系统中存储用户账户信息的文件,每一行代表一个用户的相关信息。
操作目的:通过在 /etc/passwd 文件中搜索 nobody 关键词,来确认系统中是否存在 nobody 用户。从输出结果可知,系统中存在 nobody 用户,其用户 ID(UID)和组 ID(GID)均为 65534,并且该用户不能用于登录系统(/sbin/nologin)。修改共享目录的用户和用户组
[root@one nfs]# chown -R nobody: /nfs命令解释:
chown 是用于更改文件或目录的所有者和所属组的命令。
-R 是递归选项,意味着会对指定目录(这里是 /nfs)及其所有子目录和文件都应用相同的更改。
nobody: 表示将所有者设置为 nobody 用户,由于后面没有指定组名,默认会将所属组也设置为 nobody 组。
/nfs 是要更改所有者和所属组的目标目录。
操作目的:将 /nfs 目录及其所有子目录和文件的所有者和所属组都修改为 nobody 用户和 nobody 组,以确保 NFS 共享目录的权限设置符合安全和使用要求。
nobody用户作用:
低权限用户:nobody 用户通常具有非常低的权限,用于运行一些不需要高权限的服务或进程,以增强系统的安全性。这样可以限制潜在的安全漏洞可能造成的影响范围,避免恶意攻击者利用这些服务或进程获取系统的高权限。NFS 共享访问:在 NFS(网络文件系统)环境中,nobody 用户经常被用于限制对共享目录的访问权限。当 NFS 服务器上的共享目录被挂载到客户端时,客户端上没有对应用户的情况下,访问该共享目录的用户可能会被映射为 nobody 用户,以此来控制对共享资源的访问级别。匿名访问:某些服务可能会配置为以 nobody 用户身份运行,以便提供匿名或有限的访问权限。例如,一些 FTP 服务器可能会使用 nobody 用户来允许匿名用户下载文件,这样可以确保匿名用户无法访问系统的敏感区域,同时也能满足特定的共享需求。系统资源访问受限:nobody 用户对系统资源的访问受到严格限制,它通常不能访问系统的关键文件和目录,也不能执行需要特殊权限的操作,如修改系统配置、访问敏感设备等。这有助于保护系统的稳定性和安全性,防止因误操作或恶意攻击导致系统故障或数据泄露。
做完以上的操作后,我们再次回到客户端来创建 3.txt 文件
[root@two www]# touch 3.txt
[root@two www]# ls
1.txt 2.txt 3.txt
然后回到服务端来查看是否能够看到客户端所创建的文件。
[root@one share]# ll
total 4
-rw-r--r--. 1 nobody nobody 6 Apr 13 20:48 1.txt
-rw-r--r--. 1 nobody nobody 0 Apr 13 20:58 2.txt
-rw-r--r--. 1 nobody nobody 0 Apr 13 21:02 3.txt