本文档仅描述如何设置 "ypserv" NIS 服务器。
NIS 服务器软件可以在以下位置找到:
Site Directory File Name ftp.kernel.org /pub/linux/utils/net/NIS ypserv-2.9.tar.gz ftp.kernel.org /pub/linux/utils/net/NIS ypserv-2.9.tar.bz2 |
您也可以查看 http://www.linux-nis.org/nis/ 以获取更多信息。
传统的 NIS 和 NYS 的服务器设置是相同的。
编译该软件以生成 ypserv 和 makedbm 程序。ypserv-2.x 仅支持 securenets 文件进行访问限制。
如果您将服务器作为主服务器运行,请确定您需要通过 NIS 提供哪些文件,然后在/var/yp/Makefile中的 "all" 规则中添加或删除相应的条目。您应该始终查看 Makefile 并编辑文件开头的选项。
ypserv 1.1 和 ypserv 1.2 之间有一个很大的变化。自 1.2 版本以来,文件句柄被缓存。这意味着如果您创建新映射,则必须始终使用 -c 选项调用 makedbm。请确保您使用的是新的/var/yp/Makefile来自 ypserv 1.2 或更高版本,或者在 Makefile 中为 makedbm 添加 -c 标志。如果您不这样做,ypserv 将继续使用旧映射,而不是更新后的映射。
现在编辑/var/yp/securenets和/etc/ypserv.conf。有关更多信息,请阅读 ypserv(8) 和 ypserv.conf(5) 手册页。
确保端口映射器 (portmap(8)) 正在运行,并启动服务器 ypserv。命令
% rpcinfo -u localhost ypserv |
应该输出类似以下内容:
program 100004 version 1 ready and waiting program 100004 version 2 ready and waiting |
“version 1” 行可能会缺失,具体取决于您使用的 ypserv 版本和配置。如果您有旧的 SunOS 4.x 客户端,则这是必要的。
现在生成 NIS (YP) 数据库。在主服务器上,运行
% /usr/lib/yp/ypinit -m |
在从服务器上,确保 ypwhich -m 工作正常。这意味着,您的从服务器必须配置为 NIS 客户端,然后才能运行
% /usr/lib/yp/ypinit -s masterhost |
就这样,您的服务器已启动并运行。
如果您遇到更大的问题,您可以分别在不同的 xterm 终端中以调试模式启动 ypserv 和 ypbind。调试输出应该会显示出错的地方。
如果您需要更新映射,请在/var/yp目录中的 NIS 主服务器上运行 make。如果源文件较新,这将更新映射,并将文件推送到从服务器。请不要使用 ypinit 更新映射。
您可能需要在*从*服务器上编辑 root 用户的 crontab,并添加以下行
20 * * * * /usr/lib/yp/ypxfr_1perhour 40 6 * * * /usr/lib/yp/ypxfr_1perday 55 6,18 * * * /usr/lib/yp/ypxfr_2perday |
您可以随时稍后添加从服务器。首先,确保新的从服务器具有联系 NIS 主服务器的权限。然后在新的从服务器上运行
% /usr/lib/yp/ypinit -s masterhost |
如果您想限制用户对 NIS 服务器的访问,您还需要通过运行 ypbind 并将加号条目添加到/etc/passwd密码文件的*中间*,将 NIS 服务器设置为客户端。库函数将忽略第一个 NIS 条目之后的所有普通条目,并将通过 NIS 获取其余信息。这样,NIS 访问规则就得以维护。一个例子
root:x:0:0:root:/root:/bin/bash daemon:*:1:1:daemon:/usr/sbin: bin:*:2:2:bin:/bin: sys:*:3:3:sys:/dev: sync:*:4:100:sync:/bin:/bin/sync games:*:5:100:games:/usr/games: man:*:6:100:man:/var/catman: lp:*:7:7:lp:/var/spool/lpd: mail:*:8:8:mail:/var/spool/mail: news:*:9:9:news:/var/spool/news: uucp:*:10:50:uucp:/var/spool/uucp: nobody:*:65534:65534:noone at all,,,,:/dev/null: +miquels:::::: +:*:::::/etc/NoShell [ All normal users AFTER this line! ] tester:*:299:10:Just a test account:/tmp: miquels:1234567890123:101:10:Miquel van Smoorenburg:/home/miquels:/bin/zsh |
因此,用户 "tester" 将存在,但 shell 为 /etc/NoShell。miquels 将具有正常访问权限。
或者,您可以编辑/var/yp/Makefile文件,并将 NIS 设置为使用另一个源密码文件。在大型系统中,NIS 密码和组文件通常存储在/etc/yp/中。如果您这样做,则用于管理密码文件的常用工具,例如passwd, chfn, adduser将不再起作用,您需要为此使用特殊的自制工具。
但是,yppasswd, ypchsh和ypchfn当然会起作用。
要设置 "yps" NIS 服务器,请参考上一段。“yps”服务器的设置类似,*但*并非完全相同,因此如果您尝试将“ypserv”指令应用于“yps”,请注意!“yps”不受任何作者支持,并且包含一些安全漏洞。您真的不应该使用它!
“yps” NIS 服务器软件可以在以下位置找到:
Site Directory File Name ftp.lysator.liu.se /pub/NYS/servers yps-0.21.tar.gz ftp.kernel.org /pub/linux/utils/net/NIS yps-0.21.tar.gz |
rpc.ypxfrd 用于加速从 NIS 主服务器到 NIS 从服务器传输非常大的 NIS 映射。如果 NIS 从服务器收到消息,表明有新的映射,它将启动 ypxfr 来传输新的映射。ypxfr 将使用 yp_all() 函数从主服务器读取映射的内容。当有非常大的映射必须由数据库库存储时,此过程可能需要几分钟。
rpc.ypxfrd 服务器通过允许 NIS 从服务器简单地复制主服务器的映射文件,而不是从头开始构建自己的映射文件,从而加快了传输过程。rpc.ypxfrd 使用基于 RPC 的文件传输协议,因此无需构建新映射。
rpc.ypxfrd 可以由 inetd 启动。但由于它启动非常慢,因此应与 ypserv 一起启动。您只需要在 NIS 主服务器上启动 rpc.ypxfrd。
每当用户更改密码时,应更新 NIS 密码数据库以及可能依赖于 NIS 密码数据库的其他 NIS 数据库。“rpc.yppasswdd”程序是一个处理密码更改并确保 NIS 信息将相应更新的服务器。rpc.yppasswdd 现在已集成到 ypserv 中。您不再需要较旧的独立 yppasswd-0.9.tar.gz 或 yppasswd-0.10.tar.gz,也不应再使用它们。
您只需要在 NIS 主服务器上启动 rpc.yppasswdd。默认情况下,不允许用户更改其全名或登录 shell。您可以使用 -e chfn 或 -e chsh 选项允许这样做。
如果您的 passwd 和 shadow 文件不在另一个目录(不是 /etc)中,则需要添加 -D 选项。例如,如果您已将所有源文件放在 /etc/yp 中,并希望允许用户更改其 shell,则需要使用以下参数启动 rpc.yppasswdd
rpc.yppasswdd -D /etc/yp -e chsh |
或
rpc.yppasswdd -s /etc/yp/shadow -p /etc/yp/passwd -e chsh |
无需执行更多操作。您只需要确保rpc.yppasswdd使用与/var/yp/Makefile相同的文件。错误将使用 syslog 记录。