在您成功编译软件后,现在可以安装它了。ypbind 守护进程的合适位置是 /usr/sbin 目录。有些人可能会告诉您,在装有 NYS 的系统上不需要 ypbind。这是错误的。ypwhich 和 ypcat 始终需要它。
当然,您必须以 root 用户身份执行此操作。其他二进制文件(ypwhich、ypcat、yppasswd、yppoll、ypmatch)应放在所有用户都可以访问的目录中,通常是 /usr/bin。
较新版本的 ypbind 有一个名为 /etc/yp.conf 的配置文件。您可以在那里硬编码 NIS 服务器 - 更多信息请参阅 ypbind(8) 的手册页。NYS 也需要此文件。一个例子
ypserver 10.10.0.1 ypserver 10.0.100.8 ypserver 10.3.1.1 |
如果系统可以在没有 NIS 的情况下解析主机名,您可以使用名称,否则您必须使用 IP 地址。ypbind 3.3 有一个错误,只会使用最后一个条目(示例中的 ypserver 10.3.1.1)。所有其他条目都将被忽略。ypbind-mt 可以正确处理这个问题,并使用第一个响应的条目。
在将 ypbind 合并到启动文件中之前,测试 ypbind 可能是个好主意。要测试 ypbind,请执行以下操作
确保您已设置 YP 域名。如果未设置,请执行以下命令
/bin/domainname nis.domain |
启动 "/sbin/portmap",如果它尚未运行。
创建目录/var/yp如果它不存在。
启动 /usr/sbin/ypbind
使用命令 rpcinfo -p localhost 检查 ypbind 是否能够向端口映射器注册其服务。输出应如下所示
program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 637 ypbind 100007 2 tcp 639 ypbind |
program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100007 2 udp 758 ypbind 100007 1 udp 758 ypbind 100007 2 tcp 761 ypbind 100007 1 tcp 761 ypbind |
您也可以运行 rpcinfo -u localhost ypbind。此命令应产生如下内容
program 100007 version 2 ready and waiting |
program 100007 version 1 ready and waiting program 100007 version 2 ready and waiting |
此时,您应该能够使用 NIS 客户端程序,如 ypcat 等。例如,ypcat passwd.byname 将为您提供整个 NIS 密码数据库。
重要提示:如果您跳过了测试步骤,请确保您已设置域名并创建了目录
/var/yp |
此目录必须存在,ypbind 才能成功启动。
要检查域名是否设置正确,请使用 yp-tools 2.2 中的 /bin/ypdomainname。它使用更严格的 yp_get_default_domain() 函数。例如,它不允许 “(none)” 域名,这是 Linux 下的默认设置,并且会产生很多问题。
如果测试成功,您现在可能想要更改启动文件,以便 ypbind 在启动时启动,并且您的系统将充当 NIS 客户端。确保在启动 ypbind 之前设置域名。
好了,就是这样。重启机器并查看启动消息,以查看 ypbind 是否实际启动。
对于主机查找,您必须在您的查找顺序行中设置(或添加)“nis”/etc/host.conf文件。请阅读手册页 "resolv+.8" 了解更多详细信息。
将以下行添加到/etc/passwd在您的 NIS 客户端上
+:::::: |
您还可以使用 + 和 - 字符来包含/排除或更改用户。如果您想排除用户 guest,只需将 -guest 添加到您的/etc/passwd文件。您想为用户 “linux” 使用不同的 shell (例如 ksh) 吗?没问题,只需将 “+linux::::::/bin/ksh”(不带引号)添加到您的/etc/passwd。
您不想更改的字段必须留空。您也可以使用 Netgroups 进行用户控制。
例如,要仅允许 miquels、dth 和 ed 以及 sysadmin netgroup 的所有成员登录访问,但要使所有其他用户的帐户数据可用,请使用
+miquels::::::: +ed::::::: +dth::::::: +@sysadmins::::::: -ftp +:*::::::/etc/NoShell |
请注意,在 Linux 中,您还可以覆盖密码字段,就像我们在本示例中所做的那样。我们还删除了登录名 “ftp”,因此不再为人所知,匿名 ftp 将无法工作。
netgroup 看起来像这样
sysadmins (-,software,) (-,kukuk,) |
重要提示:netgroup 功能从 libc 4.5.26 开始实现。如果您使用的 libc 版本早于 4.5.26,如果您运行 “ypbind”,则 NIS 密码数据库中的每个用户都可以访问您的 linux 机器!
所需的只是 NIS 配置文件 (/etc/yp.conf) 指向其信息的正确服务器。此外,名称服务交换机配置文件 (/etc/nsswitch.conf) 必须正确设置。
您应该安装 ypbind。libc 不需要它,但 NIS(YP) 工具需要它。
如果您希望使用包含/排除用户功能 (+/-guest/+@admins),则必须在 nsswitch.conf 中使用 “passwd: compat” 和 “group: compat”。请注意,没有 “shadow: compat”!在这种情况下,您必须使用 “shadow: files nis”。
NYS 源代码是 libc 5 源代码的一部分。运行 configure 时,第一次对 “Values correct” 问题回答 “NO”,然后对 “Build a NYS libc from nys” 回答 “YES”。
glibc 使用 “传统 NIS”,因此您需要启动 ypbind。名称服务交换机配置文件 (/etc/nsswitch.conf) 必须正确设置。如果您为 passwd、shadow 或 group 使用 compat 模式,则必须在此文件的末尾添加 “+”,并且可以使用包含/排除用户功能。配置与 Solaris 2.x 下完全相同。
网络服务交换机文件 /etc/nsswitch.conf 决定在请求特定信息时执行查找的顺序,就像 /etc/host.conf 文件决定执行主机查找的方式一样。例如,行
hosts: files nis dns |
指定主机查找函数应首先在本地 /etc/hosts 文件中查找,然后进行 NIS 查找,最后通过域名服务 (/etc/resolv.conf 和 named),如果在此时未找到匹配项,则返回错误。每个用户都必须可以读取此文件!您可以在手册页 nsswitch.5 或 nsswitch.conf.5 中找到更多信息。
适用于 NIS 的良好 /etc/nsswitch.conf 文件是
# # /etc/nsswitch.conf # # An example Name Service Switch config file. This file should be # sorted with the most-used services at the beginning. # # The entry '[NOTFOUND=return]' means that the search for an # entry should stop if the search in the previous entry turned # up nothing. Note that if the search failed due to some other reason # (like no NIS server responding) then the search continues with the # next entry. # # Legal entries are: # # nisplus Use NIS+ (NIS version 3) # nis Use NIS (NIS version 2), also called YP # dns Use DNS (Domain Name Service) # files Use the local files # db Use the /var/db databases # [NOTFOUND=return] Stop searching if not found so far # passwd: compat group: compat # For libc5, you must use shadow: files nis shadow: compat passwd_compat: nis group_compat: nis shadow_compat: nis hosts: nis files dns services: nis [NOTFOUND=return] files networks: nis [NOTFOUND=return] files protocols: nis [NOTFOUND=return] files rpc: nis [NOTFOUND=return] files ethers: nis [NOTFOUND=return] files netmasks: nis [NOTFOUND=return] files netgroup: nis bootparams: nis [NOTFOUND=return] files publickey: nis [NOTFOUND=return] files automount: files aliases: nis [NOTFOUND=return] files |
passwd_compat、group_compat 和 shadow_compat 仅受 glibc 2.x 支持。如果 /etc/nsswitch.conf 中没有 shadow 规则,glibc 将使用 passwd 规则进行查找。glibc 还有一些其他的查找模块,例如 hesoid。有关更多信息,请阅读 glibc 文档。
通过 NIS 使用 Shadow 密码始终不是一个好主意。您会失去 shadow 提供的安全性,并且只有少数 Linux C 库支持它。避免通过 NIS 使用 shadow 密码的一个好方法是将本地系统用户放入 /etc/shadow 中。从 shadow 数据库中删除 NIS 用户条目,并将密码放回 passwd 中。这样,您可以为 root 登录使用 shadow,为 NIS 用户使用普通 passwd。这样做的好处是它可以在每个 NIS 客户端上工作。
唯一支持通过 NIS 使用 shadow 密码的 Linux libc 是 GNU C Library 2.x。Linux libc5 不支持它。启用 NYS 编译的 Linux libc5 有一些用于它的代码。但是,此代码在某些情况下严重损坏,并且不适用于所有正确的 shadow 条目。
如果您使用 pam_unix.so 模块或安装额外的 pam_unix2.so 模块,Linux-PAM 0.75 及更高版本支持通过 NIS 使用 Shadow 密码。使用 pam_pwdb/libpwdb 的旧系统(例如 Red Hat Linux 5.x)需要更改 /etc/pam.d/* 条目。所有 pam_pwdb 规则都应通过 pam_unix_* 模块替换。
一个 /etc/pam.d/login 文件示例看起来像
#%PAM-1.0 auth requisite pam_unix2.so nullok #set_secrpc auth required pam_securetty.so auth required pam_nologin.so auth required pam_env.so auth required pam_mail.so account required pam_unix2.so password required pam_pwcheck.so nullok password required pam_unix2.so nullok use_first_pass use_authtok session required pam_unix2.so none # debug or trace session required pam_limits.so |