「RHCSA 红帽系统管理」3、本地用户和组

用户和组的概念

Linux 用户账户主要有 3 种类型。

超级用户用于管理系统,用户名为 root,账户 UID 为 0,具有对系统的完全访问权限。
系统账户提供服务进程使用,账户 UID 为 1 – 999,其中 1 – 200 由红帽静态分配给系统进程。有些进程不需要以 root 用户身份运行,系统会为这些进程分配非特权账户,确保其文件及资源不受彼此以及普通用户的影响。用户无法使用系统账户以为交互方式登录。
普通用户大多数用户都使用普通账户处理日常工作,账户 UID 为 1000+ 。与系统用户一样,普通用户对系统具有有限的访问权限。
# 使用 id 命令可以显示当前已登录用户的信息
[root@redhat ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

默认情况下,系统使用 /etc/passwd 文件存储本地用户的有关信息。

[root@redhat ~]# cat /etc/passwd
user01:x:1000:1000::/home/user01:/bin/bash

其中「user01」表示用户名,「x」表示用户密码曾以加密格式存储在此处。现在已移至 /etc/shadow 文件,「1000」表示用户账户的 UID 号,「1000」表示用户账户的主要组的 GID 号,「/home/user01」表示用户的主目录,「/bin/bash」表示用户的默认 shell 程序。

组是管理共享文件和其他系统资源访问权限的用户集合。默认情况下,系统使用 /etc/group 文件存储有关本地组的信息。

通常在创建新的普通用户时,系统会自动创建一个与该用户同名的新组,该组将作为新用户的主要组。此外,用户也可以拥有补充组,补充组的成员资格由 /etc/group 文件确定。用户拥有所在的组所具有的访问权限,与用户所在的组是主要组还是补充组无关。

获取超级用户访问权限

使用 su 命令可以让用户切换到另一个用户账户。

[root@redhat ~]# su - user01

# 如果省略用户名,则默认尝试切换到 root 账户。
[user01@redhat ~]$ su -

通常情况下应该使用 su – 以获得包含目标用户常规环境设置的 shell。如果使用 su 命令,则仅以该用户身份启动 shell,使用的还是原始用户的环境设置。

有时为安全起见,root 账户可能没有设置有效密码,这时可以使用 sudo 命令,与 su 不同,sudo 要求用户输入自己的密码进行身份验证。在 RHEL 7 以上版本中,wheel 组的所有成员都可以使用 sudo 以任何用户身份运行命令。

sudo 的主配置文件是 /etc/sudoers,应该使用特殊的 visudo 命令进行编辑。

[root@redhat ~]# visudo

默认情况下,/etc/sudoers 还包含 /etc/sudoers.d 目录中的所有文件内容,作为配置文件的一部分。通过将相应的文件放入该目录中,即可为用户添加 sudo 访问权限。

[root@redhat ~]# vi /etc/sudoers.d/user01

# 添加以下内容,可为用户 user01 启用完整的 sudo 访问权限
user01 ALL=(ALL) ALL

# 添加以下内容。可为组 group01 启用完整的 sudo 访问权限
%group01 ALL=(ALL) ALL

管理本地用户账户

使用 useradd 命令可以创建用户。

[root@redhat ~]# useradd user01

系统会创建一个名为 user01 的新用户,并设置用户的主目录和账户信息,同时为 user01 用户创建一个专用组。新创建的用户未设置密码,需要设置密码后才能登录。

使用 passwd 命令可为用户账户设置初始密码,或更改其现有密码。

[root@redhat ~]# passwd user01
更改用户 user01 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

使用 usermod –help 命令可以显示用于修改账户的基本选项,常见选项如下:

-c将用户的真实姓名添加到注释字段。
-g为用户帐户指定主要组。
-G为用户帐户指定补充组的逗号分隔列表。
-a利用 -G 选项将补充组添加到用户当前的组成员集合中,而不是将补充组集合替换为新的集合。
-d为用户帐户指定特定的主目录。
-m将用户的主目录移到新的位置,必须与 -d 选项搭配使用。
-s为用户帐户指定特定的登录 shell。
-L锁定用户帐户。
-u修改用户的 UID。
-U解锁用户帐户。

使用 userdel 命令可以删除用户。

# 删除用户,但保留用户的主目录
[root@redhat ~]# userdel user03

# 删除用户,同时删除用户的主目录
[root@redhat ~]# userdel -r user03

管理本地组账户

使用 groupadd 命令可以创建组。

[root@redhat ~]# groupadd group01

使用 groupmod –help 命令可以显示用于修改组的基本选项,常见选项如下:

-n为组指定新的名称。
-g修改组的 GID。

使用 groupdel 命令可以删除组。如果组是任一用户的主要组,则无法进行删除。

[root@redhat ~]# groupdel group01

管理用户密码

加密的密码存储在只有 root 用户才能读取的 /etc/shadow 文件中。

[root@redhat ~]# cat /etc/shadow
user01:$6$tLBeEVs9/NyLLML/$n/EqMF/mc8tC4koPTHhfWdAPfV3Y55tfSGdfXd95empy2cZ8iu0F3Sxf9yJCVBuYIna/xpMmwIIptq4JSxReO/:19596:0:99999:7:y::
  • 「user01」表示密码所属账户的用户名;
  • 「$6$tLBeEV~」表示加密密码,其中「$6」表示加密密码使用的哈希算法,6 表示 SHA-512,1 表示 MD5,5 表示 SHA-256;
  • 「19596」表示上次更改密码的日期,其设置值为自 1970 年 1 月 1 日起的天数;
  • 「0」表示自上次更改密码以来,可以再次更改之前必须经过的最短天数;
  • 「99999」表示密码过期之前,不进行密码更改可以经过的最长天数;
  • 「7」表示警告期,用户在截止日期之前,可以收到密码过期警告的天数;
  • 「y」表示非活动期,一旦密码过期仍可以接受登录,经过失效期限后账户将被锁定;
  • 最后一个字段通常为空,预留给未来使用。

通过 chage 命令可以调整密码期限策略。

-m设置两次修改密码的最短期限。
-M设置密码的最长期限。
-W设置密码过期警告天数。
-I设置密码过期后,账户进行锁定的期限。
-d强制用户在下一次登录时更新密码。
-l显示用户的密码期限详情
-E设置用户密码的过期时间(YYYY-MM-DD 格式)
[root@redhat ~]# chage -m 0 -M 90 -W 7 -I 14 user01

[root@redhat ~]# cat /etc/shadow
user01:$6$tLBeEVs9/NyLLML/$n/EqMF/mc8tC4koPTHhfWdAPfV3Y55tfSGdfXd95empy2cZ8iu0F3Sxf9yJCVBuYIna/xpMmwIIptq4JSxReO/:19596:0:90:7:14::

默认的密码期限策略位于 /etc/login.defs 文件中,通过修改策略,可以更改新用户的默认密码期限策略(现有用户不受影响)。

PASS_MAX_DAYS密码的默认最长期限
PASS_MIN_DAYS密码的默认最短期限
PASS_WARN_AGE密码的默认警告周期

通过 usermod 命令的 -L 选项可以锁定账户,-U 选项可以解锁账户,-e 选项可以指定到期时间。

# 锁定账户
[user01@redhat ~]$ sudo usermod -L user02
[user01@redhat ~]$ su - user02
密码:
su: 鉴定故障

# 解锁账户
[user01@redhat ~]$ sudo usermod -U user02
[user01@redhat ~]$ su - user02
密码:
[user02@redhat ~]$ 

# 设置账户到期时间
[user01@redhat ~]$ sudo usermod -e 2024-01-01 user02

如果需要防止用户以交互方式登录系统,但不阻止所有访问。可以将用户的登录 shell 设置为 /sbin/nologin,如果用户试图登录系统,nologin Shell 将关闭该连接。但是依然可以使用 Web 应用、文件传输程序或邮件客户端进行身份验证。

[root@redhat ~]# usermod -s /sbin/nologin user02

[root@redhat ~]# su - user02
This account is currently not available.

总结

  • 用户帐户有三种主要类型:超级用户、系统用户和普通用户。
  • 用户必须有主要组,并且可以是一个或多个补充组的成员。
  • 包含用户和组信息的三个关键文件是 /etc/passwd、/etc/group 和 /etc/shadow。
  • su 和 sudo 命令可用于以 root 身份运行命令。
  • useradd、usermod 和 userdel 命令可用于管理用户。
  • groupadd、groupmod 和 groupdel 命令可用于管理组。
  • chage 命令可用于配置和查看用户的密码到期设置。
本文为原创文章,著作权归作者所有:来自「KOBIN 技术随笔」作者的原创作品,转载请标明出处。
「RHCSA 红帽系统管理」3、本地用户和组
https://blog.kobin.cn/notes/2824.html
(0)

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

CAPTCHAis initialing...