文章目录
- 一 如何设置字符集
- 二 NFS配置文件父目录权限影响子目录
- 三 对IP分组可以批量管理NFS客户端
首先查看系统环境
[root@nfs-server ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.7 (Ootpa)
[root@nfs-server ~]# uname -r
4.18.0-425.3.1.el8.x86_64
这是红帽8.7版本的操作系统。
一 如何设置字符集
如果想设置服务端的字符集编码,可以使用localectl
命令。
首先可以先输入localectl list-locales
可以显示系统可设置的字符集编码类型。
如果本机要设置成 utf-8类型,但又忘了全称,则可以在命令模式中,先输入/
,进行查询操作,接着输入utf8
,按住上下键进行一行行查找即可。
如此,我们可以看到想要设立的字符集全称是en_US.utf8
,然后输入q
进行退出。
接着在修改之前,查看当前的系统字符集。
[root@nfs-server ~]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
接着直接永久修改字符集,并查看配置文件。
[root@nfs-server ~]# localectl set-locale LANG=en_US.utf8
[root@nfs-server ~]# cat /etc/locale.conf
LANG=en_US.utf8
可以看到修改成功。
但检查后发现,并没有立即生效。
[root@nfs-server ~]# echo $LANG
zh_CN.UTF-8
[root@nfs-server ~]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
这个更改会在用户的下一次登陆时生效。
如果想要立刻生效,可以加载一下配置文件,然后重新登录用户。
[root@nfs-server ~]# source /etc/locale.conf
[root@nfs-server ~]# su -
[root@nfs-server ~]# echo $LANG
en_US.utf8
二 NFS配置文件父目录权限影响子目录
以下图为例:
假设本机服务端IP为10.0.0.7
vim /etc/exports
/data 10.0.0.10(ro,sync,no_root_squash)
/data/dir01 10.0.0.10(rw,sync,no_root_squash)
/data/dir02 10.0.0.10(rw,sync,no_root_squash) 10.0.0.11(rw,sync,no_root_squash)
上述配置文件的参数说明含义如下:
10.0.0.10挂载时命令如下:mount -t nfs 10.0.0.7:/data /test
客户端10.0.0.10访问共享目录/data时,其权限是ro只读,并且客户端root用户访问时,不会将root用户映射成匿名用户。经过测试,客户端在访问/data下面的字母dir01与dir02时没有读写权限,只有只读权限。其父目录权限限制了客户端对子目录的访问权限。
10.0.0.11挂载时命令如下:mount -t nfs 10.0.0.7:/data /test
客户端10.0.0.11访问/data/dir02时,具有对该目录的读写权限。并且只能看到dir02目录,无法看到dir01目录。
通过10.0.0.11的测试发现,在配置文件中用只读权限挂载父目录过于鸡肋,它会对父目录下的子目录权限进行限制;如果想要细分权限,可以在需要分配权限的子目录后添加参数设置即可。
即便在配置文件没有设置挂载父目录,但在客户端执行挂载命令时,依旧可以对其直接进行挂载。
vim /etc/exports
/data/dir01 10.0.0.10(rw,sync,no_root_squash)
/data/dir02 10.0.0.10(rw,sync,no_root_squash) 10.0.0.11(rw,sync,no_root_squash)
三 对IP分组可以批量管理NFS客户端
由于NFS挂载时涉及的客户端主机很多,如果每个主机写一行,会显得十分冗杂繁琐,此处可以配置/etc/hosts
主机清单文件,将同一批的客户端统一管理。
假设有一批主机如下:
主机名 | IP | 作用 |
---|---|---|
nfs-server | 10.0.0.7 | NFS服务端 |
nfs-client | 10.0.0.10 | NFS客户端 |
database01 | 10.0.0.51 | NFS客户端 |
apache02 | 10.0.0.71 | NFS客户端 |
lb08 | 10.0.0.15 | NFS客户端 |
处于业务需要,要将nfs-client(10.0.0.10)和apache02(10.0.0.71)两台主机挂载到服务端/data目录下
将database01(10.0.0.51)和lb08(10.0.0.15)两台主机挂载到服务端/share目录下。
此时配置NFS服务端10.0.0.7的/etc/hosts
,IP是这些主机唯一的标识,我们将分配到/data目录下的10.0.0.10标记为data01,将10.0.0.71标记为data02;同理,将10.0.0.51标记为share01,将10.0.0.15标记为share02。
vim /etc/hosts
10.0.0.10 data01
10.0.0.71 data02
10.0.0.51 share01
10.0.0.15 share02
通过IP,我们依旧可以了解这台主机的原本的主机名。然后在/etc/exports中分别设置:
vim /etc/exports
/data data*(rw,sync,no_root_squash)
/share share*(rw,sync,no_root_squash)
data表示所有data01 data02 类似标识名称的主机;share同理,这类似于Linux使用find
查找文件时的通配符作用。
这样,我们就完成了对NFS客户端IP的分组。