跳转到内容

Ict-innovation/LPI/107.1

来自维基教科书,开放的书籍,用于开放的世界

107.1 管理用户和组帐户

[编辑 | 编辑源代码]

候选人应该能够添加、删除、暂停和更改用户帐户。


关键知识领域

  • 添加、修改和删除用户和组。
  • 管理用户/组信息在密码/组数据库中。
  • 创建和管理特殊用途和有限帐户。

Linux 是一个多用户环境。每个用户属于一个主组(通常作为默认值创建),并且可能属于其他组。Linux 中文件的归属权与用户 ID 和组密切相关。主题 107.1 为您准备学习如何添加、删除和管理用户和组。您还将了解 文件在/etc中存储了用户和组信息。

创建新用户

[编辑 | 编辑源代码]

/usr/sbin/useradd 命令将新用户添加到系统中,符号链接 adduser 指向它。

语法:useradd [选项] 登录名

示例:添加一个登录名为 brian 的用户

useradd brian

未指定任何选项时将使用默认值。您可以使用 useradd –D 列出这些值。

使用useradd –D

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel    


列出的默认选项

注意:此信息也位于 /etc/default/useradd 文件中 id 命令可用于显示有关用户的基本信息,例如他们的用户 ID、他们的组以及他们可能属于的任何其他组。

# id brian

uid=503(brian) gid=503(brian) groups=503(brian)

要允许用户访问其帐户,管理员必须使用 passwd 工具为用户分配密码。 工具。

语法:passwd 登录名

按 Enter 键后,系统将提示您输入密码。现在用户 brian 拥有一个密码。由于用户是使用 useradd 命令的默认设置创建的,因此用户的环境(例如主目录默认 shell 和他的组)都已设置。

useradd (选项)

-c 注释(全名)
-d 主目录路径
-g 初始组 (GID)。GID 必须已经存在
-G 以逗号分隔的辅助组列表
-u 用户的 UID
-s 用户的默认 shell
-p 密码(md5 加密,使用引号!)
-e 帐户过期日期
-k skel 目录
-n 关闭 UPG 组方案

使用组

[编辑 | 编辑源代码]

每个新用户都分配到一个初始(或)组。存在两种约定。

传统上,此组对所有用户都相同,称为 users,组 ID (GID) 为 100。许多 Linux 发行版都遵循这种约定,例如 Suse 和 Debian。

用户私有组方案 (UPG) 由 RedHat 引入,它改变了这种约定,而不会改变 UNIX 组的工作方式。使用 UPG,每个新用户都属于他们自己的组。该组与登录名(默认)具有相同的名称,并且 GID 在 500 到 60000 的范围内(与 UID 相同)。

注意:使用传统的组方案时,用户的umask (见 LPI 101)设置为022,而在 UPG 方案中,umask设置为002.


属于组

用户可以属于任意数量的组。但是,在任何时间(例如创建文件时),只有一个组是有效组。

用户所属所有组的列表可以通过groupsid命令获得。

用户 root 的示例

id
uid=0(root) gid=0(root) groups=0(root), 1(bin), 2(daemon), 3(sys), 4(adm), 6(disk), 10(wheel), 600(sales)


groups
root bin daemon sys adm disk wheel sales

加入组

加入组会更改用户的有效组,并开始一个新的会话,用户可以从该会话中注销。这是使用 newgrp 命令完成的。该组应该已经存在。

示例:加入ict

newgrp ict

如果发出 groups 命令,列表中的第一个组将不再是root 而是ict

创建和删除组

groupadd 工具用于添加新组。它将在/etc/group文件中添加一个条目。

示例:创建 devel 组

groupadd devel


groupadd (选项)

-g 分配 GID

groupdel 工具用于删除组。这将删除/etc/group文件中添加一个条目。

示例:删除 devel 组

[[Image:]]groupdel devel

将用户添加到组

可以使用gpasswd工具执行管理任务。可以添加-a或删除-d组中的用户,并分配管理员-A。该工具最初设计用于在组上设置单个密码,允许同一组的成员使用相同的密码登录。出于安全原因,此功能不再有效。

示例:将 andrew 添加到 devel 组

gpasswd -a andrew devel

配置文件

注意:此信息也位于 /etc/default/useradd 文件中/etc/passwd/etc/shadow文件:

系统中所有用户的名称都保存在/etc/passwd中。此文件具有以下结构

# 登录名
  1. 密码(或 x 如果使用 shadow 文件)
  1. UID
  1. GID
  1. 用户的文字描述
  2. 用户的 home 目录

7. 用户的 shell

这 7 个字段由冒号分隔。如下面的示例所示。

george:$1$K05gMbOv$b7ryoKGTd2hDrW2sT.h:Dr G Micheal:/home/georges:/bin/bash

Shadow 密码

为了将加密密码隐藏在普通用户之外,您应该使用 shadow 文件。然后,/etc/shadow文件包含用户名和加密密码,并且只有 root 可以读取。

如果没有 shadow 文件在/etc中,您应该发出以下命令

/usr/sbin/pwconv (passwd -> shadow)

这将在/etc/passwd的第二个字段中留下一个“x”,并创建 /etc/shadow 文件。如果您不想使用 shadow 密码,可以使用

/usr/sbin/pwunconv (shadow -> passwd)

注意:使用 shadow 密码文件时,/etc/passwd文件可能是世界可读的(644),并且 /etc/shadow 文件必须限制更多(600 甚至 400)。但是,使用 pwunconv 时,请确保更改/etc/password (600 或 400)的权限。

注意:此信息也位于 /etc/default/useradd 文件中/etc/groupgshadow files:

同样,有关组的信息保存在/etc/group中。此文件有 4 个字段,由冒号分隔。

# 组名
  1. 组密码(或 x 如果存在 gshadow 文件)
  2. GID
  3. 以逗号分隔的成员列表

示例/etc/group条目

java:x:550:jade, eric, rufus

与用户一样,有一个/etc/gshadow文件,它在使用 shadow 组密码时创建。用于在 shadow 文件和非 shadow 文件之间来回切换的实用程序如下

/usr/sbin/grpconv 创建 /etc/gshadow 文件


/usr/sbin/grpunconv 删除 gshadow 文件

/etc/login.defs/etc/skel/ 文件

注意:此信息也位于 /etc/default/useradd 文件中/etc/login.defs文件包含以下信息

  • 邮件存储目录:MAIL_DIR
  • 密码老化控制:PASS_MAX_DAYS、PASS_MIN_DAYS、PASS_MAX_LEN、PASS_WARN_AGE
  • useradd 中自动 UID 选择的最大/最小值:UID_MIN、UID_MAX
  • groupadd 中自动 GID 选择的最大/最小值:GID_MIN、GID_MAX
  • 使用 useradd 自动创建主目录:CREATE_HOME


注意:此信息也位于 /etc/default/useradd 文件中/etc/skel目录包含将在创建新用户时复制到用户主目录的默认文件.bashrc.bash_profiles、…这些可以通过查看用户主目录中的隐藏文件来查看。

修改帐户和默认设置

[编辑 | 编辑源代码]

在创建用户或组时,所有可用选项都可以修改。可以使用usermod实用程序具有以下主要选项


usermod (选项)

-d 用户目录
-g 用户初始 GID
-l 用户的登录名
-u 用户的 UID
-s 默认 shell。

注意这些选项与以下选项相同useradd.

在下面的示例中,用户 brian 已重命名为 user2,其 shell 现在为 TurboC shell,其主目录也已更改。

# usermod -l user2 -s /bin/tcsh -d /home/user2 brian

同样,您可以使用以下命令更改有关组的详细信息groupmod 实用程序。主要有两个选项

-g GID
-n 组名。

锁定帐户

可以通过在用户密码前添加感叹号来锁定用户的帐户。这也可以使用以下命令行工具完成

锁定 解锁
passwd -l passwd -u
usermod -L usermod -U

使用影子密码时,将x替换为* 。一个不太有用的选项是使用以下命令完全删除密码passwd -d。最后,还可以分配/bin/false到用户的默认 shell 中/etc/passwd.

更改密码过期日期

默认情况下,用户的密码有效期为 99999 天,即 273,9 年(默认 PASS_MAX_DAYS)。系统会提前 7 天提醒用户其密码即将过期(默认 PASS_WARN_AGE),当用户登录时会显示以下消息


警告:您的密码将在 6 天后过期

还有另一个密码老化策略编号称为 PASS_MIN_DAYS。这是用户可以更改其密码的最短天数;默认情况下设置为零。

注意:此信息也位于 /etc/default/useradd 文件中chage tool 允许管理员更改所有这些选项。

用法chage [-l] [-m min_days] [-M max_days] [-W warn] [-I inactive] [-E expire] [-d last_day] user

第一个选项–l 列出用户的当前策略值。我们将仅讨论–E 选项。这会在给定日期锁定帐户。日期以 UNIX 天数或 YYYY/MM/DD 格式表示。

注意,所有这些值都存储在/etc/shadow 文件中,并且可以直接编辑。

删除帐户

可以使用以下命令删除用户的帐户 userdel 命令。若要确保用户的 home 目录也被删除,请使用-r 选项。

userdel -r jade


专用帐户

root 的用户 ID 为 0,而其他一些用户的用户 ID 从在/etc/login.defs 中设置的 UID_MIN 值开始,通常设置为 500 或 1000。

root 不是 Linux 系统上唯一的专用帐户。还有其他一些帐户用于守护进程,例如邮件、SSH、FTP、新闻等。这些帐户可以从以下文件查看/etc/passwd 文件.

ntp:x:38:38::/etc/ntp:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: nobody:x:99:99:Nobody:/:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin apache:x:48:48:Apache:/var/www:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

可以想象,无法通过常规登录访问专用帐户。它们有助于控制文件和守护进程,因此具有特殊的登录 shell /sbin/nologin,或者/bin/false。对这些 shell 的任何登录尝试都会自动失败。



以下是已使用文件、术语和实用程序的部分列表。* /etc/passwd

  • /etc/shadow
  • /etc/group
  • /etc/skel
  • chage[检查拼写]
  • groupadd
  • groupdel
  • groupmod
  • passwd
  • useradd
  • userdel
  • usermod


上一章 | 下一章

华夏公益教科书