系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)

管理 NIS 用户

本节包括有关设置用户口令、向 NIS 域添加新用户以及将用户指定给 netgroups 的信息。

如何向 NIS 域添加新 NIS 用户

  1. 在主 NIS 服务器上,成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”

  2. 使用 useradd 命令创建新用户的登录 ID。


    # useradd userID
    

    userID 是新用户的登录 ID。此命令将在主 NIS 服务器上的 /etc/passwd/etc/shadow 文件中创建项。

  3. 创建新用户的初始口令。

    要创建新用户可用来登录的初始口令,请运行 passwd 命令。


    # passwd userID
    

    其中,userID 是新用户的登录 ID。系统将提示您输入要指定给此用户的口令。

    由于 useradd 命令创建的口令项已锁定(这意味着新用户无法登录),因此必须执行此步骤。通过指定初始口令,可以解除对该项的锁定。

  4. 如有必要,可将新项复制到服务器的 passwd 映射输入文件中。

    主服务器上的映射源文件应位于 /etc 之外的目录中。将新行从 /etc/passwd/etc/shadow 文件复制并粘贴到服务器上的 passwd 映射输入文件中。有关其他信息,请参见口令文件和名称空间安全

    例如,如果添加了新用户 brown,则 /etc/passwd 中要复制到 passwd 输入文件的行如下所示:


    brown:x:123:10:User brown:/home/brown:/bin/csh:

    要从 /etc/shadow 中复制的有关 brown 的行将如下所示:


    brown:W12345GkHic:6445::::::
  5. 确保 Makefile 正确指定口令输入文件所在的目录。

  6. 如果合适,请从 /etc/passwd/etc/shadow 输入文件中删除新用户的项。

    出于安全原因,请不要在 NIS 主服务器 /etc/passwd/etc/shadow 文件中保留用户项。在将新用户的项复制到存储在其他某个目录中的 NIS 映射源文件后,请在主服务器上使用 userdel 命令删除新用户。

    例如,要从主服务器的 /etc 文件中删除新用户 brown,可以输入以下内容。


    # userdel brown
    

    有关 userdel 的更多信息,请参见 userdel 手册页。

  7. 更新 NIS passwd 映射。

    在更新主服务器上的 passwd 输入文件后,请在包含源文件的目录中运行 make,以更新 passwd 映射。


    # userdel brown
    
    # cd /var/yp
    
    # /usr/ccs/bin/make passwd
    
  8. 将为其登录 ID 指定的初始口令告知新用户。

    登录后,新用户随时可以通过运行 passwd 来建立不同口令。

设置用户口令

用户通过运行 passwd 可以更改口令。

% passwd username

必须先在主服务器上启动 rpc.yppasswdd 守护进程,以更新口令文件,用户才能更改口令。

rpc.yppasswdd 守护进程会在主服务器上自动启动。请注意,如果在 rpc.yppasswdd 中包含 -m 选项,则在 /var/yp 中修改文件后将立即强制执行 make。如果要避免在每次更改 passwd 文件后都执行此 make,请在 ypstart 脚本的 rpc.yppasswd 命令中删除 -m 选项,并通过 crontab 文件控制 passwd 映射的推送。


注意 –

rpc.yppasswd -m 命令后不应包含任何参数。尽管可以通过编辑 ypstart 脚本文件来实现不同操作,但除了可以选择删除 -m 选项外,建议不要修改此文件。此文件调用的所有命令和守护进程都具有适当的命令行参数集。如果选择编辑此文件,在编辑 rpc.yppasswdd 命令时应特别小心。如果添加对 passwd.adjunct 文件的显式调用,必须使用路径 $PWDIR/security/passwd.adjunct;否则,将产生不正确的处理结果。


NIS 网络组

NIS 网络组是为实现您的管理目标而定义的用户或计算机组(集)。例如,可以创建执行以下功能的网络组。

每个网络组都有一个网络组名。网络组不直接设置权限或访问权限。而是由其他 NIS 映射在通常使用用户名或计算机名的地方使用网络组名。例如,假设您创建了一个由网络管理员构成的网络组,名为 netadmins。要向 netadmins 组的所有成员授予对给定计算机的访问权限,只需向该计算机的 /etc/passwd 文件中添加一个 netadmin 项即可。也可以将网络组名添加到 /etc/netgroup 文件中,并将其传播到 NIS netgroup 映射。有关使用网络组的更多详细信息,请参见 netgroup(4)

在使用 NIS 的网络中,主 NIS 服务器上的 netgroup 输入文件用于生成三种映射:netgroupnetgroup.byusernetgroup.byhostnetgroup 映射包含 netgroup 输入文件中的基本信息。另外两种 NIS 映射中包含的信息的格式可在给定计算机或用户的情况下加速网络组信息的查找。

netgroup 输入文件中的项格式如下:name ID,其中 name 是为网络组给定的名称,而 ID 用于标识属于该网络组的计算机或用户。根据需要,可为网络组指定尽量多的 ID(成员),ID 之间用逗号分隔。例如,要创建具有三个成员的网络组,netgroup 输入文件项将使用以下格式:name ID, ID, IDnetgroup 输入文件项中的成员 ID 使用以下格式。


([-|machine], [-|user], [domain])

其中,machine 是计算机名,user 是用户 ID,domain 是计算机或用户的 NIS 域。domain 元素是可选的,并且只应用来标识其他某个 NIS 域中的计算机或用户。每个成员项的 machineuser 元素是必需的,但连字符 (-) 用来表示内容为空。项中的计算机和用户元素之间不存在必然联系。

下面是两个 netgroup 输入文件项样例,每个样例都创建一个名为 admins 的网络组,网络组由用户 haurijuanita(后者在远程域 sales 中)以及计算机 altairsirius 组成。


admins (altair, hauri), (sirius,juanita,sales)

admins (altair,-), (sirius,-), (-,hauri), (-,juanita,sales)

各个程序会在登录、远程挂载、远程登录以及远程 shell 创建期间使用 NIS 映射来进行权限检查。这些程序包括 mountdloginrloginrsh。如果 login 命令在 passwd 数据库中遇到网络组名,它会在网络组映射中查询用户类别。 如果 mountd 守护进程在 /etc/dfs/dfstab 文件中遇到网络组名,它将查看计算机分类的网络组映射。rloginrsh(实际上,任何使用 ruserok 接口的程序)在 /etc/hosts.equiv.rhosts 文件中遇到网络组名时,会在网络组映射中查询计算机以及用户分类信息。

如果向网络中添加新 NIS 用户或计算机,请确保在 netgroup 文件中将其添加到相应网络组中。然后使用 makeyppush 命令创建网络组映射,并将其推送到所有 NIS 服务器。有关使用网络组和网络组输入文件语法的详细信息,请参见 netgroup(4)