目录
用户和组的概念
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 命令可用于配置和查看用户的密码到期设置。
「RHCSA 红帽系统管理」3、本地用户和组
https://blog.kobin.cn/notes/2824.html