跳过导航链接 | |
退出打印视图 | |
![]() |
手册页第 1M 部分:系统管理命令 Oracle Solaris 11 Information Library (简体中文) |
- NFS 用户和组 ID 映射守护进程
/usr/lib/nfs/nfsmapid
nfsmapid 守护进程可来回映射 NFS 版本 4 客户机和服务器使用的 NFS 版本 4 owner 和 owner_group 标识属性以及本地 UID 和 GID 编号。
nfsmapid 使用 /etc/nsswitch.conf 文件中的 passwd 和 group 条目指示其如何执行映射。
nfsmapid 守护进程没有客户可访问的外部接口。但您可以使用以下方法之一对 nfsmapid 进行管理配置:
使用 sharectl(1M) 命令在 NFS 的 SMF 中指定 nfsmapid_domain 参数。
指定 _nfsv4idmapdomain DNS 资源记录。
文件 /var/run/nfs4_domain 中包含当前选定的 NFSv4 域。
有关详细信息,请参见《Oracle Solaris 管理:网络服务》《Oracle Solaris 管理:网络服务》。
nfsmapid 服务由服务管理工具 smf(5) 管理,其服务标识符为:
svc:/network/nfs/mapid
可以使用 svcadm(1M) 来执行对此服务的管理操作(如启用、禁用或请求重新启动)。可以使用 svcs(1) 命令来查询服务的状态。
如果该服务处于禁用状态,可通过 mount_nfs(1M)、share_nfs(1M) 和 automountd(1M) 启用它,除非其 application/auto_enable 属性设置为 false。
nfsmapid 会缓存用户的 UID 和 GID。如果用户随后使用下面所列的实用程序之一更改了 UID 或 GID,nfsmapid 高速缓存将过时。此时,获取或设置属性的任何 NFS 操作都会导致交换此过时信息。要解决此问题,请重新启动 nfsmapid,如下所示:
# svcadm restart svc:/network/nfs/mapid:default
可使用 sharectl(1M) 命令处理指定域名 (nfsmapid_domain) 的启动 SMF 参数。
NFS SMF 参数 nfsmapid_domain 的设置将覆盖 nfsmapid 分别用于构建和比较传出和传入属性字符串的域。此外,此设置还会覆盖用于设置 NFSv4 域的任何其他机制。如果缺少 nfsmapid_domain 设置,nfsmapid 守护进程将按以下方式确定 NFSv4 域:
如果存在正确配置的 /etc/resolv.conf(请参见 resolv.conf(4)),nfsmapid 将为该域查询指定的名称服务器。
如果存在正确配置的 /etc/resolv.conf(请参见 resolv.conf(4)),但查询到的名称服务器没有正确的域名记录,nfsmapid 将尝试通过 BIND 接口获取域名(请参见 resolver(3RESOLV))。
如果不存在 /etc/resolv.conf,nfsmapid 将重新使用配置的域名(请参见 domainname(1M)),返回该域名时将删除首位上的域后缀。例如,对于 widgets.sales.acme.com,将返回 sales.acme.com。
如果不存在 /etc/resolv.conf,且未配置域名(或者不存在 /etc/defaultdomain),那么在主机名包含完全限定域名 (fully qualified domain name,FQDN) 的情况下,nfsmapid 将重新从主机名中获取域名。
如果按照前面所有的步骤仍然无法获取域名,nfsmapid 将不配置任何域。这会导致以下行为:
owner 和 owner_group 传出属性字符串将编码为文字 ID。例如,UID 12345 将编码为 12345。
nfsmapid 会忽略传入属性字符串的 domain 部分,并且只针对用户或组执行名称服务查找。如果用户/组在本地系统名称服务数据库中存在,则即使未配置任何域,也会映射正确的 UID/GID。
该行为意味着 NFSv4 客户机和服务器之间存在相同的管理用户/组域(也就是说,客户机和服务器上存在具有相同 UID/GID 的用户/组)。如果存在重叠的 ID 空间,传入属性字符串可能会映射到错误的 ID。这在功能上与将传入字符串映射到 nobody 没有什么不同,但可提供更大的灵活性。请参见下文的“示例”部分。
允许更改 UID 和 GID 的实用程序包括:
包含当前由 NFSv4 使用的域名。
示例 1 设置域名
以下命令使用 sharectl 设置域名。
# sharectl set -p nfsmapid_domain=sun.com nfs
下面的“说明”部分中介绍了 nfsmapid_domain 属性。
示例 2 获取域名
以下命令使用 sharectl 获取当前域名。
# sharectl get -p nfsmapid_domain nfs nfsmapid_domain=sun.com
有关以下属性的说明,请参见 attributes(5):
|
svcs(1)、automountd(1M)、domainname(1M)、groupdel(1M)、groupmod(1M)、mount_nfs(1M)、svcadm(1M)、share_nfs(1M)、sharectl(1M)、userdel(1M)、usermod(1M)、resolver(3RESOLV)、nfs(4)、resolv.conf(4)、attributes(5)、smf(5)
在未来的 Solaris 发行版中可能不存在 nfsmapid 守护进程。