24、Linux 用户与组管理全解析

Linux 用户与组管理全解析

1. Linux 账户基础

在 Linux 系统中,账户对于系统的正常运行至关重要。通常,在 Linux 计算机上执行的大多数任务仅需要普通用户的权限,你可以使用自己的用户账户来处理这些任务。可以借助 whoami id who w 等工具来识别自己的普通账户,还能了解还有哪些人正在使用这台计算机。

偶尔,你需要执行一些需要额外权限的管理任务。这时,你必须使用 root 账户,该账户拥有强大的权限,可以读写任何普通文件、以底层方式访问硬件、重新配置网络以及执行普通用户不被允许的其他任务。但由于 root 权限过大,使用时必须谨慎,以免因输入错误或其他意外情况导致严重问题。

2. 建议练习
  • 查看普通用户账户状态 :依次输入 whoami id 命令,查看普通用户账户的状态。 id 命令可能会显示你是多个组的成员,你可以通过网络搜索了解每个组的作用。
  • 查看计算机上定义的账户 :读取 /etc/passwd 文件,或者输入 getent passwd 命令,查看计算机上定义了哪些账户。检查是否存在除你自己之外的普通用户账户(根据不同的发行版,普通用户的 UID 通常大于 500 或 1000),并尝试通过网络搜索了解一些系统账户(UID 小于 500 或 1000)的用途。
3. 复习问题
问题 选项 答案
系统账户 UID 为 0 的用途是什么? A. 它是系统管理账户。
B. 它是第一个普通用户的账户。
C. 无;UID 0 故意未定义。
D. 不同发行版有所不同。
E. 它是某些服务器默认使用的低权限账户。
A
普通用户账户在 /etc/passwd 文件中会包含哪些类型的信息?(多选) A. 用户 ID(UID)编号
B. 用户所属的所有组的完整列表
C. 账户主目录的路径
D. 账户默认的 GUI 桌面环境的路径
E. 账户默认的文本模式 shell 的路径
ACE
你以普通用户身份登录,想要以 root 身份运行 iptables -L 命令。假设系统已配置为通过适当的命令让你获得 root 访问权限,以下哪个命令可以完成此任务? A. sudo iptables -L
B. root iptables -L
C. passwd iptables -L
D. su iptables -L
E. admin iptables -L
A
whoami 提供的信息比 id 更多,这句话对吗? 是/否
Linux 系统将其组信息存储在 /etc/groups 文件中,这句话对吗? 是/否
一般来说,以 root 身份运行程序时应该格外小心,这句话对吗? 是/否
Linux 中关联用户名和 UID 编号的文件是 _ _ _。(请提供文件的完整路径) /etc/passwd
若要了解当前哪些用户登录到计算机以及他们正在运行哪些程序,你可以输入 ____。 w
根据不同的发行版,UID 小于 500 或 1000 的编号保留给 _ ___ 账户使用。 系统
4. 创建新账户

Linux 是多用户操作系统,一台 Linux 计算机可以支持多个用户,每个用户都有唯一的账户。因此,需要掌握用户账户的管理方法,包括创建、修改和删除账户,以及管理用户组。

4.1 确定组策略

Linux 组是用户的集合,可以使用组来控制对特定文件的访问权限。常见的组策略有两种:
- 用户组 :每个用户可以关联一个组,例如用户 luke 可以有一个名为 luke 的组。用户可以将自己文件的组所有权设置为 luke ,并设置所需的组权限,系统管理员可以将其他用户添加到 luke 组中。此后, luke 组的成员可以根据 luke 用户设置的权限访问该组的文件。这种方法强调对单个用户文件的访问控制。
- 项目组 :根据工作项目、部门隶属关系或其他实际的用户分组来创建组。例如,为销售部门的用户创建一个名为 sales 的组。该组的成员如果想与组内其他成员共享文件,可以适当设置组所有权和权限,并将文件存储在商定的位置。当计算机被大量易于定义分组的用户使用时,这种方法效果最佳。

这两种方法并非相互排斥,你可以混合使用,也可以创建自己的方法。同时,用户可以是多个组的成员,这对于用户组方法的正常运行是必要的,否则组就会与账户重复。如果你采用项目组方法,需要考虑为新用户分配哪个组作为其主组,主组将默认分配给用户文件的组所有权。

4.2 选择好密码

创建账户时,通常需要为其设置密码。有时,用户可以在创建账户时输入密码;有时,你需要为用户选择一个密码,并指示用户尽快更改。无论哪种情况,都应该教育用户如何选择好的密码。

以下是一些常见但不安全的密码类型:
- 基于家庭成员、朋友和宠物的名字。
- 基于喜欢的书籍、电影、电视节目或其中的角色。
- 电话号码、街道地址或社会安全号码。
- 任何其他有意义的个人信息。
- 字典中能找到的任何单个单词(任何语言)。
- 任何简单的键盘或字母数字组合,如 qwerty 123456

最佳的密码是由字母、数字和标点符号组成的随机组合,但这样的密码难以记忆。一个合理的折衷方案是分两步构建密码:
1. 选择易记难猜的基础部分 :可以使用两个或多个不相关的单词,如 bun pen ,然后将它们合并为 bunpen ;或者使用对用户有意义的短语的首字母,如 “yesterday I went to the dentist” 的首字母组成 yiwttd 。基础部分不应是任何语言中的单词,一般来说,密码越长越好。
2. 对基础部分进行修改以增加猜测难度
- 添加数字或标点 :在基础部分插入随机数字或标点,例如 bu3npe&n y#i9wttd ,一般至少添加两个符号或数字。
- 混合大小写 :Linux 的密码区分大小写,打乱字母的大小写可以提高安全性,例如 Bu3nPE&n y#i9WttD
- 反转顺序 :虽然单独使用此方法增强的安全性较弱,但与其他方法结合使用时可以增加一定的安全性。可以仅对两个单词基础部分中的一个单词进行反转,例如 Bu3nn&EP DttW9i#y
- 增大密码长度 :增加密码的长度可以增加破解难度,可以使用更大的单词或短语,但这可能会使密码更难记忆和输入。即使只是重复单个字符来增加长度也会有所帮助,例如 Bu3nn&EPiiiiiiiiii Dtt:::::::::::W9i#y

为帮助用户选择好的密码,你可以与他们分享以下见解:
- 恶意人员可能会根据已知信息或通过查找电话簿、网页等方式猜测密码。
- 虽然 Linux 会对密码进行内部加密,但存在一些程序可以将整个字典通过 Linux 的密码加密算法进行比对,如果匹配则密码被破解。
- 用户账户可能会被用作入侵整个计算机的第一步,或者作为攻击其他计算机的跳板。
- 用户绝不应将密码透露给他人,即使对方声称是系统管理员,真正的系统管理员不需要用户的密码。
- 不要在多个系统上使用相同的密码,否则一个账户被攻破可能会导致所有使用相同密码的账户都被攻破。
- 写下密码或通过电子邮件发送密码都是危险的做法,将密码写在粘在计算机显示器上的便签上尤其危险。

此外,一些常见的易猜密码,如 “password”、“123456” 等,很容易被暴力破解程序发现,应避免使用。

4.3 使用 GUI 工具创建账户

使用 GUI 工具创建账户是最简便的方法,但不同的 Linux 发行版访问这些工具的方式有所不同:
- Fedora 16 :以 root 身份在 shell 提示符下输入 system-config-users 命令,启动用户管理器实用程序;或者使用类似于 Ubuntu 的更有限的系统设置实用程序。
- openSUSE 12.1 :启动 YaST 配置工具,并在其中打开用户和组管理工具。
- Ubuntu 11.10 :在桌面环境中打开系统设置实用程序,然后点击用户账户选项。在进行更改之前,必须点击锁图标并输入密码。

以 Fedora 的用户管理器实用程序为例,添加用户的步骤如下:
1. 点击“添加用户”,弹出“添加新用户”对话框。
2. 在“用户名”字段中输入用户名,这是用户在 Linux 登录提示时输入的名称。
3. 在“全名”字段中输入用户的全名,该信息将存储在 /etc/passwd 文件的注释字段中,并在各种工具中显示,例如用户登录 GNOME 时会显示在屏幕右上角。
4. 在“密码”字段和“确认密码”字段中分别输入密码。
5. 在大多数情况下,点击“确定”即可,因为其余选项的默认值通常是合适的(主目录字段将根据你输入的用户名自动填充)。不过,你也可以在点击“确定”之前自定义登录 shell、主目录位置等功能。

新账户将显示在用户管理器列表中,如有需要,你可以随后对其进行修改或删除。

4.4 使用命令行创建账户

在任何 Linux 发行版中,都可以使用 useradd 实用程序从命令行创建账户。使用该实用程序时,输入其名称和要为新账户关联的用户名,还可以在 useradd 和用户名之间包含选项,如下表所示:

Option name Option abbreviation Effect
–comment comment -c 指定用户的注释字段(GUI 工具通常将其描述为“全名”)。
–home home-dir -d 指定账户的主目录,默认为 /home/username
–expiredate expire-date -e 设置账户禁用的日期,格式为 YYYY-MM-DD ,默认账户不会过期。
–inactive inactive-days -f 设置密码过期后账户完全禁用的天数,值为 -1 表示禁用此功能,为默认值。
–gid default-group -g 设置用户的默认组的名称或 GID,默认值是一个与用户同名的新组。
–groups group[,…] -G 设置用户所属组的名称或 GID,可以用逗号分隔指定多个组。
–create-home -m 包含此选项时, useradd 会为用户创建主目录,此选项默认启用。
–skel skeleton-dir -k 通常,默认用户配置文件从 /etc/skel 复制,但可以使用此选项指定另一个模板目录,此选项仅在与 -m 结合使用时有效。
None -M 强制系统不自动创建主目录。
–shell shell -s 设置用户的默认登录 shell,默认是 /bin/bash
–uid UID -u 创建具有指定用户 ID 值(UID)的账户。
–non-unique -o 允许重用单个 UID 编号,创建第二个或后续重用 UID 的账户时传递此选项。
–system -r 指定创建系统账户, useradd 不会为系统账户创建主目录,并为其分配小于 100 的 UID 值。
–no-user-group -N 禁用为用户创建组。

一个完整的 useradd 命令示例如下:

# useradd -e 2012-12-31 -u 1012 pamela

此示例创建了一个用户名为 pamela 、UID 为 1012 的账户,该账户将于 2012 年 12 月 31 日过期。过期后,用户将无法登录该账户,但文件不会被删除, root 可以重新激活该账户。

使用 useradd 创建的账户处于锁定状态,用户无法登录。要解锁账户,需要使用 passwd 命令。实际上, useradd (或其 GUI 前端)会修改 /etc/passwd /etc/shadow /etc/group 文件的内容。如果使用 --create-home -m 选项(或该选项默认启用),程序会创建主目录并将 /etc/skel 中的文件复制到该位置。创建账户通常还会创建一个邮件假脱机文件,用于存储用户的传入电子邮件。

综上所述,无论是使用 GUI 工具还是命令行,都可以方便地在 Linux 系统中创建新账户。在创建过程中,合理选择组策略和设置强密码对于系统的安全性至关重要。同时,了解账户创建背后的文件修改和相关操作,有助于更好地管理 Linux 系统的用户和组。

5. 修改账户

在 Linux 系统中,创建好账户后,可能会因为各种原因需要对账户进行修改,比如更改用户的基本信息、密码、所属组等。以下介绍几种常见的修改账户的方法。

5.1 修改用户基本信息

可以使用 usermod 命令来修改用户的基本信息,该命令的选项与 useradd 有很多相似之处。例如,要修改用户 pamela 的主目录,可以使用以下命令:

# usermod -d /new/home/dir pamela

以下是 usermod 常用选项的说明:
| Option name | Option abbreviation | Effect |
| — | — | — |
| –comment comment | -c | 修改用户的注释字段(通常为全名)。 |
| –home home-dir | -d | 修改账户的主目录。 |
| –gid default-group | -g | 修改用户的默认组。 |
| –groups group[,…] | -G | 修改用户所属的组。 |
| –shell shell | -s | 修改用户的默认登录 shell。 |
| –uid UID | -u | 修改用户的 UID。 |

5.2 修改用户密码

修改用户密码是常见的操作,可以使用 passwd 命令。如果以 root 身份运行该命令,可以修改任何用户的密码;如果以普通用户身份运行,则只能修改自己的密码。
- 以 root 身份修改用户密码

# passwd pamela

输入该命令后,系统会提示你输入新密码并确认。
- 普通用户修改自己的密码

$ passwd

同样,系统会提示你输入当前密码(验证身份),然后输入新密码并确认。

5.3 修改账户过期信息

可以使用 chage 命令来修改账户的过期信息,例如设置密码过期时间、账户禁用日期等。以下是一些常见的用法:
- 设置用户 pamela 的密码在 30 天后过期:

# chage -M 30 pamela
  • 设置用户 pamela 的账户在 2024 - 12 - 31 过期:
# chage -E 2024-12-31 pamela
6. 删除账户

当某个用户不再需要使用系统账户时,需要将其删除。在删除账户时,需要考虑是否同时删除用户的主目录和邮件假脱机文件等相关数据。

6.1 使用 userdel 命令删除账户

userdel 命令用于删除用户账户,其基本语法为:

# userdel [选项] 用户名

以下是一些常用选项:
| 选项 | 作用 |
| — | — |
| -r | 删除用户账户的同时,删除其主目录和邮件假脱机文件。 |

例如,要删除用户 pamela 并同时删除其主目录和邮件假脱机文件,可以使用以下命令:

# userdel -r pamela

需要注意的是,删除账户是一个不可逆的操作,删除后用户的所有数据都将被永久删除,请谨慎操作。

7. 管理用户组

在 Linux 系统中,用户组的管理也是非常重要的,包括创建组、修改组信息、删除组以及管理用户与组的关系等。

7.1 创建用户组

可以使用 groupadd 命令来创建新的用户组,其基本语法为:

# groupadd [选项] 组名

以下是一些常用选项:
| 选项 | 作用 |
| — | — |
| -g GID | 指定组的 GID。 |
| -r | 创建系统组,系统组的 GID 通常小于 100。 |

例如,创建一个名为 developers 的组,并指定其 GID 为 1001:

# groupadd -g 1001 developers
7.2 修改用户组信息

使用 groupmod 命令可以修改用户组的信息,如组名、GID 等。以下是一些常用选项:
| Option name | Option abbreviation | Effect |
| — | — | — |
| –new-name new-group-name | -n | 修改组的名称。 |
| –gid GID | -g | 修改组的 GID。 |

例如,将组 developers 的名称修改为 programmers

# groupmod -n programmers developers
7.3 删除用户组

使用 groupdel 命令可以删除用户组,其基本语法为:

# groupdel 组名

例如,删除组 programmers

# groupdel programmers

需要注意的是,不能删除仍有用户属于该组的组,必须先将用户从该组中移除,或者将用户的默认组修改为其他组,才能删除该组。

7.4 管理用户与组的关系

可以使用 usermod 命令来管理用户与组的关系,例如将用户添加到某个组或从某个组中移除。
- 将用户添加到组

# usermod -aG 组名 用户名

例如,将用户 pamela 添加到 programmers 组:

# usermod -aG programmers pamela

这里的 -a 选项表示追加, -G 选项用于指定组。
- 从组中移除用户
可以通过修改 /etc/group 文件手动将用户从组中移除,或者重新创建用户的组信息。

8. 总结

通过以上内容,我们全面了解了 Linux 系统中用户与组的管理方法,包括账户的基础操作(查看、创建、修改、删除)、组的管理(创建、修改、删除、用户与组关系管理)以及密码设置等重要方面。以下是一个简单的流程图,总结了整个用户与组管理的主要流程:

graph LR
    A[账户基础] --> B[创建账户]
    B --> B1[确定组策略]
    B --> B2[选择好密码]
    B --> B3[使用 GUI 工具创建]
    B --> B4[使用命令行创建]
    B --> C[修改账户]
    C --> C1[修改基本信息]
    C --> C2[修改密码]
    C --> C3[修改过期信息]
    C --> D[删除账户]
    B --> E[管理用户组]
    E --> E1[创建组]
    E --> E2[修改组信息]
    E --> E3[删除组]
    E --> E4[管理用户与组关系]

在实际使用中,要根据具体需求合理选择管理方法,同时要始终牢记安全原则,特别是在使用 root 权限时要格外谨慎。通过合理的用户与组管理,可以提高系统的安全性和管理效率,确保 Linux 系统的稳定运行。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值