3.3.用户和基本账户管理
FreeBSD 允许多个用户同时使用计算机。尽管同一时间只能有一个用户坐在屏幕前使用键盘,但任意数量的用户都可以通过网络登录系统。为了使用系统,每位用户都应拥有自己的用户账户。
本章将介绍:
FreeBSD 系统中不同类型的用户账户;
如何添加、删除和修改用户账户;
如何设置资源访问限制,以控制用户和用户组的权限;
如何创建用户组,并将用户添加为组成员。
3.3.1. 账户类型
由于访问 FreeBSD 系统的所有操作都必须通过账户完成,且所有进程均由用户启动,因此用户与账户管理至关重要。
FreeBSD 中主要有三类账户:系统账户、用户账户,以及超级用户账户。
3.3.1.1. 系统账户
系统账户用于运行诸如 DNS、邮件和 Web 服务器等服务。这样做的原因是出于安全考虑;如果所有服务都以超级用户身份运行,它们将可以不受限制地执行操作。
系统账户的例子如 daemon
、operator
、bind
、news
和 www
。
nobody
是一个通用的非特权系统账户。然而,使用 nobody
的服务越多,该用户关联的文件和进程就越多,从而其潜在权限也逐渐提升。
3.3.1.2. 用户账户
用户账户是分配给真实用户的,用于登录和使用系统。每位访问系统的人都应拥有一个唯一的用户账户。这样可以使管理员了解每位用户的操作,并防止用户之间相互干扰配置。
每位用户可以通过配置默认 shell、编辑器、按键绑定和语言设置等方式,设置适合自己的系统使用环境。
FreeBSD 系统中的每个用户账户都包含以下信息:
密码 每个账户都需要设置密码。
用户 ID(UID) 用户 ID 是用于在 FreeBSD 系统中唯一标识该用户的数字。支持用户名参数的命令会首先将其转换为 UID。建议使用小于 65535 的 UID,因部分软件可能对更大的 UID 兼容性不佳。
组 ID(GID) 组 ID 是用于唯一标识用户所属主要用户组的数字。组是一种机制,通过 GID(而非 UID)来控制对资源的访问。这可显著减小部分配置文件的体积,并允许用户同时属于多个组。建议使用不超过 65535 的 GID,因更高的 GID 可能会导致某些软件运行异常。
密码变更时间 默认情况下,密码不会过期。但也可以为每个用户单独启用密码过期策略,强制其在一段时间后更改密码。
用户全名 用户名是 FreeBSD 用于识别账户的唯一标识,但不一定反映用户的真实姓名。类似注释字段,该信息可以包含空格、大写字符,并超过八个字符。
家目录
家目录是系统中某个目录的完整路径,是用户登录系统后的起始位置。通常的做法是将所有用户的家目录放在 /home/用户名
或 /usr/home/用户名
下。用户可在其家目录中存储个人文件和子目录。
用户 shell shell 是用户与系统交互的默认环境。存在多种 shell 类型,有经验的用户通常会有自己的偏好,可以通过账户设置进行配置。
3.3.1.3. 超级用户账户
超级用户账户通常称为 root
,用于以无限制权限管理系统。因此,不应将其用于日常任务,例如收发邮件、浏览系统和编程。
与其他用户账户不同,超级用户可以无所限制地操作系统,若误用可能造成严重后果。普通用户的权限则受限,不太可能意外破坏整个系统。因此建议用户使用普通账户进行日常操作,仅在某个命令需要额外权限时再切换为超级用户。
使用超级用户身份执行命令时应三思而后行,多次确认命令内容,因为一个多余的空格或漏掉的字符都可能导致数据无法恢复。
获取超级用户权限有多种方式。虽然可以直接以 root
身份登录,但强烈不推荐这么做。
下面的示例中,用户仅为了运行 make install
而临时切换为超级用户。完成后,输入 exit
即可退出超级用户身份并返回普通用户权限。
示例 1:以超级用户身份安装程序
3.3.2. 管理账户
表 1. 管理用户账户的工具
推荐用于添加新用户的命令行应用程序。
推荐用于删除用户的命令行应用程序。
用于更改用户数据库信息的灵活工具。
用于更改用户密码的命令行工具。
可修改用户账户所有方面的强大灵活工具。
带有账户管理支持的系统配置工具。
3.3.2.1. 添加用户
示例 2. 在 FreeBSD 上添加用户
输出应类似如下:
注意
由于输入密码时不会回显,请在创建用户账户时小心不要输错密码。
3.3.2.2. 删除用户
向该用户的所有进程发送 SIGKILL 信号。
从系统本地密码文件中删除该用户。
删除该用户的 home 目录(如果其归用户所有),包括处理通往实际 home 目录路径中的符号链接。
从
/var/mail
中删除属于该用户的邮件文件。从
/tmp
、/var/tmp
和/var/tmp/vi.recover
中删除所有属于该用户的文件。删除该用户拥有的所有消息队列、共享内存段和信号量。
默认情况下,该命令以交互模式运行,如下所示:
示例 3. rmuser
交互式删除账户
输出应类似如下:
3.3.2.3. 更改用户信息
注意
除非以超级用户身份运行,否则该工具在退出编辑器时会提示输入用户密码。
示例 4. 以超级用户身份使用 chpass
输出应类似如下:
示例 5. 以普通用户身份使用 chpass
3.3.2.4. 更改用户密码
示例 6. 更改自己的密码
输出应类似如下:
超级用户可以通过指定用户名来更改任意用户的密码。以超级用户身份运行该工具时,不会提示输入当前密码。这可用于用户忘记原密码时更改密码。
示例 7. 以超级用户身份更改其他用户密码
输出应类似如下:
3.3.2.5. 创建、删除、修改和显示系统用户与组
3.3.3. 管理用户组
一个用户组是一组用户的列表。一个用户组通过其组名和 GID 来标识。在 FreeBSD 中,内核通过进程的 UID 和其所属的用户组列表来判断该进程被允许执行哪些操作。在大多数情况下,某个用户或进程的 GID 通常指的是该列表中的第一个用户组。
警告
使用 operator 用户组时必须格外小心,因为这可能会授予意想不到的类似超级用户的权限,包括但不限于关机、重启,以及访问该组在
/dev
中的所有条目。
输出应类似如下:
在这个例子中,1100
是 teamtwo
的 GID。此时,teamtwo
还没有成员。以下命令将会添加 jru
作为 teamtwo
的成员。
输出应类似如下:
输出应类似如下:
在这个例子中,传递给 -m
的参数是一个以逗号分隔的用户列表,这些用户将被添加进组中。与前一个示例不同,这些用户是追加添加的,并不会替换已有用户。
输出应类似如下:
在这个例子中,jru
是 jru
和 teamtwo
这两个用户组的成员。
最后更新于
这有帮助吗?