一项基本的系统管理任务就是在站点为每个用户设置一个用户帐户。典型的用户帐户包括在没有系统的超级用户口令的情况下,用户登录和使用系统所必需的信息。有关用户帐户组成部分的信息在用户帐户的组成部分中进行说明。
在设置用户帐户时,可以向预定义的用户组中添加用户。组的典型用法是为文件和目录设置组权限,从而只允许属于该组的用户进行访问。
例如,可能有一个目录中包含只应当由少数几个用户访问的机密文件。可以设置一个名为 topsecret 的组,其中包括参与 topsecret 项目的用户。然后,可以为 topsecret 组设置对 topsecret 文件的读取权限。这样,只有 topsecret 组中的用户才能够读取这些文件。
角色是一种特殊类型的用户帐户,可用于赋予选定的用户特殊权限。有关更多信息,请参见《系统管理指南:安全性服务》中的“基于角色的访问控制(概述)”。
用户名也称为登录名,使用它用户可以访问其各自的系统和具备适当访问权限的远程系统。必须为所创建的每个用户帐户都选择一个用户名。
建议建立一种标准方法来指定用户名,以便于跟踪它们。而且,用户名应便于用户记忆。在选择用户名时,一个简单的方案就是使用用户名字的首字母和姓氏的前七个字母。例如,Ziggy Ignatz 的用户名为 zignatz。如果使用此方案会产生重名,则可以使用用户第一个名字的首字母、中间名字的首字母和姓氏的前六个字母。例如,Ziggy Top Ignatz 的用户名为 ztignatz。
如果使用此方案仍产生重名,请考虑使用下面的方案来创建用户名:
用户第一个名字的首字母、中间名字的首字母和姓氏的前五个字母
数字 1、2 或 3,依此类推,直到用户名唯一
每个新的用户名都必须不同于系统或者 NIS 或 NIS 域已知的任何邮件别名。否则,邮件可能会传送到使用该别名的用户(而非实际用户)。
有关设置用户名(登录名)的详细指南,请参见用户名、用户 ID 和组 ID 的使用指南。
每个用户名都有一个与之相关联的用户标识 (user identification, UID) 号。UID 号在任何用户尝试登录的系统中标识用户名。系统可以使用 UID 号来标识文件和目录的属主。如果在许多不同的系统上为同一个人创建用户帐户,请始终使用相同的用户名和用户 ID 号。这样,用户可以在系统之间方便地移动文件,而不会出现拥有权问题。
UID 号必须是一个小于或等于 2147483647 的整数。UID 号是一般用户帐户和特殊系统帐户所必需的。下表列出了为用户帐户和系统帐户保留的 UID 号。
表 4–3 保留的 UID 号
UID 号 |
用户帐户或登录帐户 |
说明 |
---|---|---|
0 – 99 |
root、daemon、bin、sys 等 |
保留以供 OracleSolaris 使用 |
100 – 2147483647 |
一般用户 |
通用帐户 |
60001 和 65534 |
nobody 和 nobody4 |
匿名用户 |
60002 |
noaccess |
不可信用户 |
请勿指定 0 到 99 的 UID。保留这些 UID 以供 Oracle Solaris 分配。按照定义,root 总是具有 UID 0,daemon 具有 UID 1,而伪用户 bin 具有 UID 2。此外,您应该为 uucp 登录和伪用户登录(例如,who、tty 和 ttytype)提供较低的 UID,以便使它们出现在 passwd 文件的开头。
有关设置 UID 的其他指南,请参见用户名、用户 ID 和组 ID 的使用指南。
与用户名(登录名)一样,应采用一个方案来指定唯一的 UID 号。某些公司会指定唯一的员工编号。这样,管理员可以在员工编号的基础上添加一个编号,以便为每个员工创建一个唯一的 UID 号。
为了最大限度地降低安全风险,应当避免重新使用已删除帐户的 UID。如果必须重新使用某个 UID,请“彻底清除以前的帐户”,以便新用户不会受到先前用户属性集的影响。例如,先前的用户可能会因包含在打印机拒绝列表中而被拒绝访问打印机。但是,该属性对于新用户可能并不适合。
可以为 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 的限制摘要
组是指可共享文件和其他系统资源的用户的集合。例如,参与同一个项目的用户可以形成一个组。组在以前称作 UNIX 组。
每个组都必须有名称、组标识 (group identification, GID) 号和一个属于该组的用户名的列表。GID 号用来在系统内部标识组。
用户可属于以下两种组:
有关设置组名的详细指南,请参见用户名、用户 ID 和组 ID 的使用指南。
有时,用户的辅助组并不重要。例如,文件的拥有权反映主组,而不反映任何辅助组。但是,其他应用程序可能会依赖用户的辅助组成员身份。例如,用户必须是 sysadmin 组(组 14)的成员才能使用以前的 Solaris 发行版中的 Admintool 软件。但是,如果组 14 是用户的当前主组,则辅助组变得无关紧要。
groups 命令可列出用户所属的组。用户一次只能有一个主组。但是,用户可以使用 newgrp 命令,将其主组临时更改为它所属的任何其他组。
添加用户帐户时,必须为用户指定一个主组或接受缺省组 staff(组 10)。该主组应当已经存在。如果主组不存在,请按 GID 号指定主组。用户名不会添加到主组中。如果将用户名添加到主组中,列表可能会变得太长。要想将用户指定给一个新的辅助组,必须先创建一个新的辅助组并为其指定一个 GID 号。
组可以是系统上的本地组,也可以通过名称服务进行管理。为了简化对组的管理,应当使用名称服务(如 NIS)或目录服务(如 LDAP)。使用这些服务可以集中管理组中所有成员身份。
可以在添加用户时为用户指定口令。也可以强制用户在首次登录时指定口令。
用户口令必须遵循下面的语法:
口令长度至少必须与 /etc/default/passwd 文件中 PASSLENGTH 变量所标识的值相符。缺省情况下,PASSLENGTH 被设置为 6。
口令的前 6 个字符必须至少包含两个字母字符,还必须至少包含一个数字字符或特殊字符。
通过使用可支持八个以上字符的算法来配置 /etc/policy.conf 文件,可以将口令的最大长度增加到八个字符以上。
尽管用户名是公开的,但口令必须保密且只能由用户知道。应当为每个用户帐户都指定一个口令。口令可以是六到八个字母、数字或特殊字符的组合。
为了使计算机系统更加安全,用户应定期更改其口令。为了实现较高级别的安全,应当要求用户每六周更改一次口令。对于较低级别的安全来说,每三个月更改一次口令就足够了。系统管理登录名(如 root 和 sys)应每月更改一次,或者应当在知道超级用户口令的员工离开公司或者换岗时进行更改。
许多计算机安全性破坏都涉及到猜测合法用户的口令。应当确保用户避免使用名词、姓名、登录名和其他只需了解该用户的一些情况就有可能猜到的口令。
最好选择如下口令:
短语 (beammeup)。
由短语中每个单词的前几个字母组成的无意义的单词。例如,用 swotrb 来替换 SomeWhere Over The RainBow。
用数字或字符替换字母的单词。例如,用 sn00py 替换 snoopy。
请勿选择如下口令:
您的姓名(从前向后拼、从后向前拼或混杂在一起)
家庭成员的姓名或宠物的名字
汽车驾照编号
电话号码
社会安全号码
员工编号
与爱好或兴趣有关的单词
季节主题,如 Santa in December
字典中的任何单词
起始目录是文件系统的一部分,分配给用户以便存储专用文件。为起始目录分配的空间量取决于用户所创建的文件的种类、大小和数量。
起始目录可以位于用户的本地系统上,也可以位于远程文件服务器上。在任一情况下,都应当按照惯例创建 /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)。有关更多信息,请参见《系统管理指南:安全性服务》中的“基于角色的访问控制(概述)”。
在可能跨多个域的组织中,用户名、UID 和 GID 应保持唯一。
在创建用户名或角色名、UID 和 GID 时,请牢记以下准则:
用户名-应包含 2 到 8 个字母和数字。第一个字符应当为字母。至少有一个字符应当为小写字母。
尽管用户名可以包含句点 (.)、下划线 (_) 或连字符 (-),但是由于它们可能会导致某些软件产品出现问题,所以建议不要使用这些字符。
系统帐户-请勿使用包含在缺省文件 /etc/passwd 和 /etc/group 中的任何用户名、UID 或 GID。请不要使用 0 到 99 的 UID 和 GID。这些数字被保留以供 Oracle Solaris 操作系统分配,因此任何人都不应当使用它们。请注意,此限制还适用于当前未使用的数字。
例如,gdm 是为 GNOME Display Manager 守护进程保留的用户名和组名,其他用户不应使用它。有关缺省的 /etc/passwd 和 /etc/group 项的完整列表,请参见 表 4–6 和 表 4–7。
请勿将 nobody 和 nobody4 帐户用于正在运行的进程。这两个帐户是为 NFS 保留的。如果针对正在运行的进程使用这些帐户,可能会产生意外的安全风险。需要以非超级用户身份运行的进程应当使用 daemon 或 noaccess 帐户。
系统帐户配置-请勿更改缺省系统帐户的配置。这包括更改当前处于锁定状态的系统帐户的登录 shell。但是,为超级用户帐户设置口令和口令生命期参数除外。