系统管理指南:基本管理

用户帐户的组成部分

以下几节介绍用户帐户的特定组成部分。

用户名(登录名)

用户名也称为登录名,使用它用户可以访问其各自的系统和具备适当访问权限的远程系统。必须为所创建的每个用户帐户都选择一个用户名。

建议建立一种标准方法来指定用户名,以便于跟踪它们。而且,用户名应便于用户记忆。在选择用户名时,一个简单的方案就是使用用户名字的首字母和姓氏的前七个字母。例如,Ziggy Ignatz 的用户名为 zignatz。如果使用此方案会产生重名,则可以使用用户第一个名字的首字母、中间名字的首字母和姓氏的前六个字母。例如,Ziggy Top Ignatz 的用户名为 ztignatz

如果使用此方案仍产生重名,请考虑使用下面的方案来创建用户名:


注 –

每个新的用户名都必须不同于系统或者 NIS 或 NIS 域已知的任何邮件别名。否则,邮件可能会传送到使用该别名的用户(而非实际用户)。


有关设置用户名(登录名)的详细指南,请参见用户名、用户 ID 和组 ID 的使用指南

用户 ID 号

每个用户名都有一个与之相关联的用户标识 (user identification, UID) 号。UID 号在任何用户尝试登录的系统中标识用户名。系统可以使用 UID 号来标识文件和目录的属主。如果在许多不同的系统上为同一个人创建用户帐户,请始终使用相同的用户名和用户 ID 号。这样,用户可以在系统之间方便地移动文件,而不会出现拥有权问题。

UID 号必须是一个小于或等于 2147483647 的整数。UID 号是一般用户帐户和特殊系统帐户所必需的。下表列出了为用户帐户和系统帐户保留的 UID 号。

表 4–3 保留的 UID 号

UID 号 

用户帐户或登录帐户 

说明 

0 – 99 

root、daemonbinsys

保留以供 OracleSolaris 使用  

100 – 2147483647 

一般用户 

通用帐户 

60001 和 65534 

nobodynobody4

匿名用户 

60002  

noaccess

不可信用户 

请勿指定 0 到 99 的 UID。保留这些 UID 以供 Oracle Solaris 分配。按照定义,root 总是具有 UID 0,daemon 具有 UID 1,而伪用户 bin 具有 UID 2。此外,您应该为 uucp 登录和伪用户登录(例如,whottyttytype)提供较低的 UID,以便使它们出现在 passwd 文件的开头。

有关设置 UID 的其他指南,请参见用户名、用户 ID 和组 ID 的使用指南

与用户名(登录名)一样,应采用一个方案来指定唯一的 UID 号。某些公司会指定唯一的员工编号。这样,管理员可以在员工编号的基础上添加一个编号,以便为每个员工创建一个唯一的 UID 号。

为了最大限度地降低安全风险,应当避免重新使用已删除帐户的 UID。如果必须重新使用某个 UID,请“彻底清除以前的帐户”,以便新用户不会受到先前用户属性集的影响。例如,先前的用户可能会因包含在打印机拒绝列表中而被拒绝访问打印机。但是,该属性对于新用户可能并不适合。

使用较大的用户 ID 和组 ID

可以为 UID 和组 ID (group ID, GID) 指定带符号整数的最大值,即 2147483647。

但是,大于 60000 的 UID 和 GID 只具有部分功能且与许多 Oracle Solaris 功能不兼容。因此,应避免使用大于 60000 的 UID 或 GID。

下表介绍了与 Oracle Solaris 产品和以前的发行版的互操作性问题。

表 4–4 大于 60000 的 UID 或 GID 的互操作性问题

类别 

产品或命令 

问题 

NFS 互操作性 

SunOS 4.0 NFS 软件及其兼容发行版 

NFS 服务器和客户机代码将较大的 UID 和 GID 截断到 16 位。如果在使用较大的 UID 和 GID 的环境中使用运行 SunOS 4.0 和兼容发行版的系统,可能会产生安全问题。运行 SunOS 4.0 和兼容发行版的系统需要一个修补程序以避免出现此问题。 

名称服务互操作性 

NIS 名称服务和基于文件的名称服务 

UID 大于 60000 的用户可以在运行 Solaris 2.5(及兼容发行版)的系统上登录或者使用 su 命令。但是,会将他们的 UID 和 GID 设置为 60001 (nobody)。

 

NIS+ 名称服务 

UID 大于 60000 的用户被拒绝访问运行 Solaris 2.5(及兼容发行版)和 NIS+ 名称服务的系统。 

下表说明了 UID 和 GUI 限制。

表 4–5 较大 UID 和 GID 的限制摘要

UID 或 GID 

限制 

60003 或更大 

用户在登录运行 Solaris 2.5(及兼容发行版)和 NIS 或文件名称服务的系统之后,将获得以下 UID 和 GID:nobody

65535 或更大 

  • 运行 Solaris 2.5(及兼容发行版)和 NFS 版本 2 软件的系统会将 UID 截断到 16 位,这有可能会产生安全问题。

  • 使用具有缺省归档格式的 cpio 命令复制文件的用户,会看到系统针对每个文件都返回一条错误消息。而且,归档中的 UID 和 GID 被设置为 nobody

  • 基于 x86 的系统: 运行与 SVR3 兼容的应用程序的用户可能会在进行系统调用时看到 EOVERFLOW 返回代码。

  • 基于 x86 的系统: 如果用户尝试在已挂载的 System V 文件系统上创建文件或目录,则 System V 文件系统会返回一个 EOVERFLOW 错误。

100000 或更大 

ps -l 命令最多可显示五位的 UID。因此,如果列显的列中包括大于 99999 的 UID 或 GID,则该列将不对齐。

262144 或更大 

使用具有 -H odc 格式的 cpio 命令或者使用 pax -x cpio 命令复制文件的用户,会看到系统针对每个文件都返回一条错误消息。而且,归档中的 UID 和 GID 被设置为 nobody

1000000 或更大 

使用 ar 命令的用户,其归档中的 UID 和 GID 设置为 nobody

2097152 或更大 

使用 tar 命令、cpio -H ustar 命令或 pax -x tar 命令的用户,其 UID 和 GID 设置为 nobody

UNIX 组

是指可共享文件和其他系统资源的用户的集合。例如,参与同一个项目的用户可以形成一个组。组在以前称作 UNIX 组。

每个组都必须有名称、组标识 (group identification, GID) 号和一个属于该组的用户名的列表。GID 号用来在系统内部标识组。

用户可属于以下两种组:

有关设置组名的详细指南,请参见用户名、用户 ID 和组 ID 的使用指南

有时,用户的辅助组并不重要。例如,文件的拥有权反映主组,而不反映任何辅助组。但是,其他应用程序可能会依赖用户的辅助组成员身份。例如,用户必须是 sysadmin 组(组 14)的成员才能使用以前的 Solaris 发行版中的 Admintool 软件。但是,如果组 14 是用户的当前主组,则辅助组变得无关紧要。

groups 命令可列出用户所属的组。用户一次只能有一个主组。但是,用户可以使用 newgrp 命令,将其主组临时更改为它所属的任何其他组。

添加用户帐户时,必须为用户指定一个主组或接受缺省组 staff(组 10)。该主组应当已经存在。如果主组不存在,请按 GID 号指定主组。用户名不会添加到主组中。如果将用户名添加到主组中,列表可能会变得太长。要想将用户指定给一个新的辅助组,必须先创建一个新的辅助组并为其指定一个 GID 号。

组可以是系统上的本地组,也可以通过名称服务进行管理。为了简化对组的管理,应当使用名称服务(如 NIS)或目录服务(如 LDAP)。使用这些服务可以集中管理组中所有成员身份。

用户口令

可以在添加用户时为用户指定口令。也可以强制用户在首次登录时指定口令。

用户口令必须遵循下面的语法:

尽管用户名是公开的,但口令必须保密且只能由用户知道。应当为每个用户帐户都指定一个口令。口令可以是六到八个字母、数字或特殊字符的组合。

为了使计算机系统更加安全,用户应定期更改其口令。为了实现较高级别的安全,应当要求用户每六周更改一次口令。对于较低级别的安全来说,每三个月更改一次口令就足够了。系统管理登录名(如 rootsys)应每月更改一次,或者应当在知道超级用户口令的员工离开公司或者换岗时进行更改。

许多计算机安全性破坏都涉及到猜测合法用户的口令。应当确保用户避免使用名词、姓名、登录名和其他只需了解该用户的一些情况就有可能猜到的口令。

最好选择如下口令:

请勿选择如下口令:

起始目录

起始目录是文件系统的一部分,分配给用户以便存储专用文件。为起始目录分配的空间量取决于用户所创建的文件的种类、大小和数量。

起始目录可以位于用户的本地系统上,也可以位于远程文件服务器上。在任一情况下,都应当按照惯例创建 /export/home/username 形式的起始目录。对于较大的站点,应当将起始目录存储到服务器上。对于每个 /export/homen 目录都使用一个单独的文件系统,这样有利于备份和恢复起始目录。例如,/export/home1/export/home2

通常,无论用户的起始目录位于何处,用户都能够通过名为 /home/username 的挂载点访问其起始目录。如果起始目录是通过使用 AutoFS 挂载的,系统将不允许您在任何系统上的 /home 挂载点下面创建任何目录。当 AutoFS 处于活动状态时,系统能够识别 /home 的特殊状态。有关自动挂载起始目录的更多信息,请参见《系统管理指南:网络服务》中的“Autofs 管理的任务概述”

要在网络上的任何位置使用起始目录,应当始终用 $HOME(而非 /export/home/username)来引用起始目录。/export/home/username 与机器有关。另外,在用户的起始目录中创建的任何符号链接都应使用相对路径(例如,../../../x/y/x),这样,无论起始目录挂载在哪里,链接都有效。

名称服务

如果要管理大型站点的用户帐户,则可能需要考虑使用名称服务或目录服务,如 LDAP、NIS 或 NIS+。使用名称服务或目录服务,可以集中存储用户帐户信息,而不是将用户帐户信息存储到每个系统的 /etc 文件中。在针对用户帐户使用名称服务或目录服务时,用户可以使用同一个用户帐户从一个系统移到另一个系统,而不必在所有系统上都复制站点范围的用户帐户信息。使用名称服务或目录服务还有利于保持用户帐户信息的集中和一致。

用户的工作环境

除具有用于创建和存储文件的起始目录外,用户还需要一个环境,使之可以访问完成其工作所需的工具和资源。当用户登录系统时,用户的工作环境由初始化文件确定。这些文件由用户的启动 shell 来定义,具体视发行版的不同而异。

一个较好的管理用户工作环境的策略是,在用户的起始目录中提供自定义的用户初始化文件,如 .login.cshrc.profile


注 –

请勿使用系统初始化文件(如 /etc/profile/etc/.login)来管理用户的工作环境。这些文件驻留在本地系统上,不能进行集中管理。例如,如果使用 AutoFS 从网络上的任何系统挂载用户的起始目录,则必须修改每个系统上的系统初始化文件,以确保用户在系统之间切换时获得一致的环境。


有关为用户自定义用户初始化文件的详细信息,请参见自定义用户的工作环境

自定义用户帐户的另一种方法是使用基于角色的访问控制 (role-based access control, RBAC)。有关更多信息,请参见《系统管理指南:安全性服务》中的“基于角色的访问控制(概述)”