为了在红帽企业 Linux (RHEL) 中工作时有效地保护您的系统并规范访问,您需要了解用户和组管理。
这是一个关键组件,对于单个和复杂的网络环境都很重要,因为它是熟练处理用户帐户和组的关键。
在本指南中,我们将深入探讨 RHEL 中用户和组管理的基础知识。您将获得必要的知识和技能,以便根据您的特定安全和操作需求自信地创建、修改和优化用户帐户和组。
您还将了解授予用户权限和实施基于组的访问控制的来龙去脉,并掌握确保强大的系统完整性和规范资源访问的基本工具和行之有效的方法。
先决条件
熟悉基本的 Linux 命令。如果你需要复习,你可以阅读我之前关于RHEL命令和关键概念的教程。
目录
以下是我们将在本综合指南中介绍的内容:
用户添加
什么是sudo?
用户模组
什么是 /etc/login.defs?
什么是 /etc/skel?
什么是 /etc/shadow?
组添加
组模组
实战练习
结束语
命令useradd
该命令是 RHEL 中用于创建新用户帐户的重要工具。此命令不仅将用户的信息添加到系统文件中,还可以设置其主目录和默认配置。useradd
命令的语法:useradd
useradd [options] username
什么是sudo?
在 Linux/Unix 的世界里,代表“超级用户做”。从本质上讲,它是一个命令,它授予普通用户运行具有完全管理或 root 权限的命令的能力。这对于由于安全原因可能限制普通用户的命令特别有用。sudo
例子:
只是一个快速提醒 - 如果您当前没有以 root 用户身份登录,请务必在使用我们将在本教程中讨论的命令之前使用。考虑作为一个方便的工具,它赋予你一些 root 用户的能力。我们将在以后的教程中更深入地讨论这个主题。sudouseraddsudo
目前,我以 root 用户身份登录。所以我不会在任何命令之前使用。sudo
创建用户:
useradd kedar
此命令创建一个名为“kedar”的新用户,并默认为他们设置一个主文件夹。稍后,我们将详细了解以及如何更改这些默认值。useradd
在 RHEL 中,创建用户时已经设置了一些值,但我们将在本教程中进一步探讨它们。
检查新添加的用户:
tail -1 /etc/passwd
/etc/passwd用作包含有关用户帐户的基本信息的集中式存储库。上述命令的输出将按以下方式显示:
kedar:x:1001:1001:John Doe:/home/john:/bin/bash
如果用户添加成功,您将看到上面的输出。现在可能会有一些变化,但看起来应该基本相同。
让我们分解这个输出并尝试理解它:
框架-1000004542上述输出的细分
用户名 – 用户帐户的名称。
密码占位符(已过时) – 从历史上看,此字段包含一个“x”字符,表示用户的加密密码存储在文件中。/etc/shadow
用户 ID (UID) – 分配给用户的唯一数字标识符。
组 ID (GID) – 与用户关联的主要组的数字标识符。
用户信息 (GECOS) – 此字段通常包括其他信息,如用户的全名、联系方式等。
主目录 – 用户主目录的路径。
登录 Shell – 用户登录时执行的默认 shell 或程序。
创建用户后,我们可以为该用户设置密码。这只能从 root 帐户完成。
为新创建的帐户设置密码
passwd kedar
这将要求您键入 kedar 用户的密码。设置密码后,您可以使用 GUI 登录 kedar 用户。如果要通过GUI登录,则设置密码非常重要。
在创建新用户时为用户设置不同的选项
现在我们知道在创建用户时有哪些选项可用,我们可以根据需要设置它们。
用户 ID (-u)
useradd -u 1234 kedar
上面带有该选项的命令会在创建用户 kedar 时将用户 ID 设置为 1234。-u
2. 初级组 (-g)
useradd -g 1232 kedar
如果存在现有组,并且您知道组 ID 或组名称,则可以将该组添加为 kedar 用户的主要组。
3. 中学组 (-G)
useradd -G developers kedar
用户 kedar 将被添加到已存在的名为 developers 的辅助组中。我们可以将用户添加到多个辅助组。
将 Linux 中的辅助组视为用户梦寐以求的俱乐部会员资格。虽然在计算机上工作时,它们会自动包含在主组中,但加入辅助组允许用户扩展其成员身份并访问其他文件和功能。
从本质上讲,这就像同时成为多个组的一部分,为用户提供额外的权限和探索系统不同部分的能力。
4. 用户信息
useradd -c "2 Month Intern" kedar
这会将更多信息添加到用户 kedar 作为“2 个月实习生”。这将显示在文件中。/etc/passwd
5. 主目录
useradd -d /etc/kedar/home kedar
现在,这会将主目录设置为 kedar 用户。默认情况下,在 RHEL 中,如果未指定,则主目录为 。/etc/kedar/home/home/kedar
6. 登录外壳
useradd -s /bin/shell kedar
在这里,kedar 用户将可以访问位于 /bin/shell 中的 shell。这将使用户 kedar 能够访问 shell。
/bin/bash 访问权限与用户登录系统时的默认 shell 有关。
在 Linux 世界中,/bin/bash shell 通常被称为 Bash shell,是“Bourne Again SHell”的缩写,在大多数 Linux 发行版上都很容易获得。当用户被授予 /bin/bash 访问权限时,这意味着在登录时,他们将看到 Bash shell 的命令行界面。
这个强大的 shell 使他们能够使用其独特的语法和功能与系统交互、运行命令和执行特定于 Bash 的脚本。
鉴于其广泛使用、高级功能以及与各种脚本语言和命令行任务的兼容性,/bin/bash shell 是许多用户的首选选项,作为其默认 shell。
如果要删除特定用户的 shell 访问权限,可以按如下方式设置 shell 访问权限:.这会将此用户的访问限制为登录其帐户,直到 shell 访问权限设置为 。/sbin/nologin/bin/shell
useradd -s /sbin/nologin kedar
命令usermod
usermod 命令在 Linux 中非常重要。它可以帮助管理员在创建用户帐户后轻松更改有关用户帐户的内容。这样可以节省时间,因为您不必删除并重新创建帐户。这是一种轻松管理用户的便捷方式。
命令的语法:usermod
usermod [options] username
例子:
更改用户名:
usermod -l newusername oldusername
此命令将用户名从 更改为 。oldusernamenewusername
更改用户 ID (UID):
usermod -u <newUID> username
此命令将替换为用户所需的新 UID。<newUID>
更改组 ID (GID):
usermod -g <newGID> username
此命令将替换为用户所需的新主组 ID。<newGID>
将用户添加到补充组:
usermod -aG group1,group2 username
此命令将用户添加到其他补充组(、 等)。group1group2
更改主目录:
usermod -d /newhome username
此命令将用户的主目录更改为 。/newhome
更改默认 shell:
usermod -s /bin/bash username
此命令将用户的默认 shell 更改为 。/bin/bash
设置帐户的到期日期:
usermod -e YYYY-MM-DD username
此命令为用户帐户设置到期日期 ()。YYYY-MM-DD
您可以使用 来浏览有关此命令的更多信息。使用命令时,您可以使用与 相同的选项来操作用户的信息。man usermoduseraddusermod
什么?/etc/login.defs
该文件是一个重要的配置文件,用于设置登录、密码策略和用户帐户创建的默认参数。它可以在通常的位置 /etc/login.defs 中找到,并且在确定用户管理和身份验证的系统范围的默认值方面起着关键作用。/etc/login.defs
用户 UID 还有一个固定范围,如下表所示:
框架-1000004563-1UID 范围表 - 特权用户:0-99,系统用户:201-999,普通用户:1000-60000
目录 /etc/login.defs 包含各种默认配置。通过访问此目录,我们可以根据自己的喜好修改这些设置。
此文件包含我们可以调整的几个不同选项,下面列出了其中一些选项:
PASS_MAX_DAYS 90PASS_MIN_DAYS 7PASS_WARN_AGE 14PASS_MIN_LEN 8UID_MIN 1000UID_MAX 60000GID_MIN 1000GID_MAX 60000LOGIN_RETRIES 5LOGIN_TIMEOUT 60CREATE_HOME yesUMASK 077
ENCRYPT_METHOD SHA512
CHFN_AUTH yesCHFN_RESTRICT rwh
DEFAULT_HOME /home
现在,您知道创建用户时默认设置的来源了。您可以根据需要更改这些设置。
什么?/etc/skel
在 Linux 和类似系统中,该文件夹就像新用户的入门包。它被称为“skel”,是“骨架”的缩写,因为它为新用户设置了基础知识。/etc/skel/
此文件夹包含一组复制到新用户主文件夹中的文件和文件夹。每当有新用户使用时,这些来自 /etc/skel/ 的基本文件都会自动放入他们的主文件夹中,确保它包含他们入门所需的内容。
这有助于为用户设置一个简单的起点。它为他们提供基本配置、默认设置,有时还提供示例文件。此方法可确保每个新用户都从标准设置和所需文件开始。
在 /etc/skel/ 文件夹中,您可能会找到 .bashrc、.profile 等常见文件和类似的配置文件。
什么?/etc/shadow
该文件是基于 Unix 的操作系统(如 Linux)的关键组件,因为它用作加密用户密码和其他密码相关数据的存储库。这种增强的安全措施超越了以前在 /etc/passwd 文件中存储密码的方法。/etc/shadow
/etc/shadow 文件包含与用户帐户密码有关的重要信息。文件中的每一行都代表一个特定的用户,并分为多个字段,每个字段用冒号 (:) 分隔。
这些字段通常包括用户名、加密密码(使用加密算法进行哈希处理,而不是实际密码)、自上次密码更改以来的天数(从 1970 年 1 月 1 日开始)、有关密码过期的信息(如最短和最长期限)以及警告期。它还指定在帐户被锁定之前允许的非活动天数,以及帐户是否有到期日期。
/etc/shadow 文件的示例条目
user:$6$PswrdHash$E7KLkQIGo7mxG5vDi7JelC5D8L0qbg38z1/WgNhAZDpCoe2GyGB6JefT9ftb/Rfm3uZOlFkktj/SkJTfSJziO.:18830:0:90:7:::
哪里:
user: 用户名
$6$PswrdHash$E7KLkQIG...:加密的密码哈希
$1$ 是 MD5
$2a$ 是河豚
$2y$ 是河豚
$5$ 是 SHA-256
$6$ 是 SHA-512
$y$ 是 yescrypt
这些符号有助于识别用于存储在文件中的每个密码哈希的哈希算法。例如,如果您看到以 开头的密码哈希,则表示该特定密码已使用 SHA-512 加密。/etc/shadow$6$
18830:上次密码更改日期(自 1970 年 1 月 1 日以来的天数)
0:最短密码期限
90:密码最长使用期限
7:密码警告期
帐户不活动和过期的其他字段
访问:为了访问和修改文件,您必须授予 root 用户权限或专用权限。/etc/shadow
修改:为了增强安全性,建议使用指定的命令,例如 ,它处理密码加密并有效地更新 /etc/shadow 文件。passwd
命令groupadd
在 RHEL 中,您可以使用该命令在系统上创建新组。它是用于管理用户组的基本命令,允许系统管理员添加组、设置其属性以及定义其成员身份。groupadd
组的所有默认设置都位于 中。/etc/login.defs 文件包含重要设置,例如 GID_MIN 和GID_MAX,前者用于确定常规组的最小 GID 值,后者用于设置最大 GID 值。此外,SYS_GID_MIN 和 SYS_GID_MAX 确定系统组的最小和最大 GID 值。/etc/login.defs
这些设置在系统内组的管理中起着至关重要的作用。
命令的语法:groupadd
groupadd [options] groupname
例子:
创建组:
groupadd developers
上面的命令创建一个名为“developers”的新组。
分配特定的 GID:
groupadd -g 1001 developers
此命令创建具有指定 GID(例如,GID 1001)的组。
您可以使用该命令根据需要探索更多选项。这将为您提供命令的文档。man groupaddgroupadd
命令groupmod
RHEL 中的命令对于系统管理员来说是一个有价值的工具,因为它使他们能够毫不费力地修改现有的组属性。groupmod
使用这个强大的命令,您可以更改组而无需重新创建它们,使其成为系统维护的重要资产。
命令的语法:groupmod
groupmod [options] groupname
例子:
更改组名称:
groupmod -n newgroupname oldgroupname
此命令将组名从 更改为 。oldgroupnamenewgroupname
更改 GID(组 ID):
groupmod -g <newGID> groupname
此命令将组的 GID 更改为 。<newGID>
将组添加到补充组:
groupmod -aG group1,group2 groupname
此命令将该组添加到其他补充组(、、 等)。group1group2
从组中添加用户:
groupmod -m -m user1,user2 developers
这会将 user1 和 user2 添加到 developers 组。
从群组中移除用户:
groupmod -M user1,user2 developers
这将从开发人员组中删除 user1 和 user2。
您可以使用该命令根据需要探索更多选项。这将为您提供命令的文档。man groupmodgroupmod
实战练习
练习 1:基本用户和组管理
创建用户和组
用于创建名为“testuser”的新用户。useradd
用于创建名为“testgroup”的组。groupadd
确保用户“testuser”是组“testgroup”的一部分。
练习 2:用户修改
修改用户属性
用于将 “testuser” 的默认 shell 更改为 。usermod/bin/bash
使用 将用户的登录名从“testuser”修改为“newuser”。usermod
通过检查 来确认更改。/etc/passwd
练习 3:组修改
组修改
用于将“testgroup”重命名为“newgroup”。groupmod
使用 更改“newgroup”的 GID(组 ID)。groupmod
使用 将 “newuser” 添加到 “newgroup” 中。usermod
练习 4:高级用户和组管理
设置用户和组限制
使用中的参数设置密码策略。/etc/login.defs
在 中配置组默认设置,例如 GID_MIN 和 GID_MAX。/etc/login.defs
练习 5:理解和/etc/shadow/etc/skel
探索密码存储和默认值
检查文件以了解密码存储格式。/etc/shadow
创建一个新用户并观察其在 中的输入。/etc/shadow
通过创建新用户并观察其主目录来探索和了解其用途。/etc/skel
练习 6:挑战
管理权限和访问控制
设置目录权限,以便只有“newgroup”中的“newuser”才能读/写特定文件夹。
试验和命令以更改所有权和权限。chownchmod
练习 7:真实场景
创建具有特定配置的用户
创建名为“admin”的用户,其中包含自定义的主目录 (/opt/admin) 和特定的默认 shell。
设置仅适用于“admin”用户的密码策略。
结束语
感谢您今天与我一起探索如何在 RHEL 中管理用户和组。您可以更深入地了解 Linux 专业知识领域,并继续关注我未来的教程中更多有见地的内容。