在 Oracle® Solaris 11.2 中管理用户帐户和用户环境

退出打印视图

更新时间: 2014 年 9 月
 
 

用户帐户组件

本节介绍了用户帐户的各种组件。

用户名(登录名)

用户名(也称为 login names)允许用户访问其各自的系统和具备相应访问权限的远程系统。必须为所创建的每个用户帐户都选择一个用户名。

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

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

  • 使用用户第一个名字的首字母、中间名字的首字母和姓氏的前五个字母

  • 添加数字 1、2 或 3,依此类推,直到用户名唯一


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

有关设置用户名(登录名)的详细准则,请参见用于指定用户名、用户 ID 和组 ID 的准则

用户 ID 号

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

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

表 1-1  保留的 UID 号
UID 号
用户帐户或登录帐户
说明
0 – 99
rootdaemonbinsys
保留供操作系统使用
100 – 2147483647
一般用户
通用帐户
60001 和 65534
nobodynobody4
NFS 匿名用户
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。

下表说明了 UID 和 GID 限制。

表 1-2  较大 UID 和 GID 的限制摘要
UID 或 GID
限制
262144 或更大
使用具有缺省归档格式的 cpio 命令复制文件的用户,会看到系统针对每个文件都返回一条错误消息。归档中的 UID 和 GID 被设置为 nobody
2097152 或更大
使用具有 -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 号用来在系统内部标识组。

    用户可属于以下两种组:

  • 主组-这是操作系统指定给由用户所创建的文件的组。每个用户都必须属于一个主组。

  • 补充组-这是用户所属的除主组之外的一个或多个组。用户最多可以属于 1024 个补充组。

有关设置组名的详细准则,请参见用于指定用户名、用户 ID 和组 ID 的准则

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

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

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

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

用户口令

可以在添加用户时为用户指定口令。或者,也可以强制用户在首次登录到系统时指定口令。虽然用户名是公开的,但是口令必须保密,只能是用户自己知道。应当为每个用户帐户都指定一个口令。

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

  • 口令长度是由 /etc/default/password 文件中的 PASSLENGTH 值定义的。

    缺省的口令散列算法为 SHA256。因此,用户口令不再像以前的 Oracle Solaris 发行版那样限制为 8 个字符。8 字符限制仅应用于使用较旧 crypt_unix (5) 算法的口令,为了向下兼容现有的 passwd 文件项和 NIS 映射,保留了该算法。

    新口令必须在口令算法允许的最大字符数内符合复杂性规则。因此,如果使用 crypt_unix 算法,当键入一个包含 20 个字符的口令时,该口令必须在前 8 个字符内符合复杂性规则。如果口令算法是任一其他算法,则口令必须在输入的完整口令内符合复杂性规则,在本示例中为 20。

  • 每一个口令都必须满足配置的复杂性约束,这些约束在 /etc/default/passwd 文件中指定。

  • 每个口令都不得为配置的字典的成员,如 /etc/default/passwd 文件中所指定的那样。

  • 新口令不得包含在名称服务的口令历史记录中。

passwd(1) 手册页详细介绍了口令规则。

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

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

    最好选择如下口令:

  • 短语 (beammeup)。

  • 由短语中每个单词的前几个字母组成的无意义的单词。例如,用 swotrb 来替换 SomeWhere Over The RainBow

  • 用数字或字符替换字母的单词。例如,用 sn00py 来替换 snoopy

    请勿选择如下口令:

  • 您的姓名(从前向后拼、从后向前拼或混杂在一起)

  • 家庭成员的姓名或宠物的名字

  • 汽车驾照编号

  • 电话号码

  • 社会安全号码

  • 员工编号

  • 与爱好或兴趣有关的单词

  • 季节主题,如 Santa in December

  • 字典中的任何单词

起始目录

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

起始目录可以位于用户的本地系统上,也可以位于远程文件服务器上。在任一情况下,都应当按照惯例创建 /export/home/username 形式的起始目录。对于较大的站点,应当将起始目录存储到服务器上。为每个用户使用单独的文件系统,例如 /export/home/alice/export/home/bob。通过为每个用户创建单独的文件系统,您可以根据每个用户的需求设置属性或特性。

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

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

有关使用命令行界面创建用户帐户时如何添加起始目录的更多信息,请参见设置用户帐户的准则

命名服务

如果要管理大型站点的用户帐户,则可能需要考虑使用名称服务或目录服务,如 LDAP 或 NIS。使用名称服务或目录服务,可以集中存储用户帐户信息,而不是将用户帐户信息存储到每个系统的 /etc 文件中。当针对用户帐户使用了某种名称服务或目录服务时,用户可以使用同一个用户帐户从一个系统移动到另一个系统,而不必在每个系统上都复制这些用户帐户的信息。使用命名服务或目录服务还可以确保用户帐户信息保持一致。

用户的工作环境

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

用于管理用户工作环境的一个好的策略是,在用户的起始目录中提供定制的用户初始化文件,例如 .bash_profile.bash_login.kshrc.profile


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

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