【RH124】第六章 管理本地用户和组

系列文章目录

第一章 红帽企业Linux入门
第二章 访问命令行
第三章 从命令行管理文件
第五章 创建、查看文本文件
第六章 管理本地用户和组


文章目录


前言

创建、管理和删除本地用户和组,以及管理本地密码策略。


一、用户和组

1、用户

用户账户在可以运行命令的人员和程序之间提供了安全界限。

系统通过分配的唯一标识号(用户ID或UID)来区分不同的用户账户。

系统使用/etc/passwd文件存储有关本地用户的信息。

用户有以下三种主要类型:

  • 超级用户 :名称为root,账户UID为0,具有完全的系统访问权限;
  • 系统用户:供服务进程使用,无法以交互式方式登录;
  • 普通用户:具有有限权限的处理日常工作的普通用户账户。

与用户有关的常见命令:

  • id:显示有关当前已登录用户的信息;
  • id 用户名:查看某个用户的信息;
  • ls -l:查看文件所有者;
  • ls -ld:查看目录所有者,而不是目录内容;
  • ps:查看进程信息,-a查看该终端所有进程,-u显示与进程关联的用户。

2、组

组是需要共享文件和其他系统资源权限的用户的集合

系统通过分配唯一的标识号(组ID或GID)来区分不同的组。

系统使用/etc/group文件存储有关本地组的信息。

主要组和补充组:

  • 主要组:每个用户只有一个主要组,拥有用户创建的文件。创建普通用户的时候,会创建 一个与用户同名的组 ,作为该用户的主要组
  • 补充组:是用户可以属于的其他组,用于资源共享和权限分配。成员资格存储在/etc/group文件中。
  • id命令可显示用户的组成员资格。

二、获取超级用户访问权限

1、root用户

该用户拥有系统的全部权限,可用来管理系统。

root用户才可以安装或删除软件以及管理系统文件及任务。

默认只有root用户能管理硬盘普通用户可控制可移动设备 ,如USB设备。

root用户拥有足以破坏系统的无限制权限,建议仅在需要时升级到root用户特权。

2、切换用户账户

  • su (-) user1:切换到user1用户账户,需要提供user1用户的密码;
  • su (-) :省略用户名,切换到root;
  • sudo:通过 sudo 使用自己的密码获取 root 访问权限;
  • su 与 su - , sudo 的区别su 和 sudo 切换之后还是当前用户的环境su - 切换之后是新用户的环境
    若切换到 root 用户,提示符会变为超级用户(root)提示符 #
  • sudo 好处 :将所有执行的命令记录到 /var/log/secure 中。
  • sudo 命令的必要性:出于安全原因,某些情况下,root用户配置为没有有效的密码。所以,用户无法使用密码以root身份登录系统,同时也无法使用su来获取交互式Shell。此时需要使用sudo命令来获取root访问权限。
  • 如何通过 sudo 访问 root 账户 :使用 sudo -i 命令,切换到root账户并且运行该用户的默认shell及关联的交互式登录脚本。
    若在没有交互式脚本的情况下运行 shell,使用 sudo -s。

3、sudo配置

sudo 命令的主要配置文件是 /etc/sudoers ,配置举例如下:

bash 复制代码
%wheel   ALL=(ALL:ALL)  ALL

第一部分表示:规则所应用到的用户或组%指定一个组 ,这里代表 wheel 组;

第二部分表示:在具有此文件的任何主机上,whell组中的用户可以在系统上以任何其他用户任何其他组运行命令。

第三部分表示:whell组中的用户可以运行任何命令

可在 /etc/sudoer.d 下创建文件启用sudo权限,例如 /etc/sudoer.d/user01 ,从目录中删除文件,即可禁用sudo访问权限。

三、管理本地用户账户

1、创建用户

  • useradd username:创建名为 username 的用户,要设置密码之后才能登录;
  • useradd -u UID username:- u 选项为用户 username 指定 UID;
  • /etc/login.defs 文件中为新创建的用户账户 设置一些默认选项,如有效UID编号的范围和默认密码过期规则,更改此文件对现有用户无影响

2、修改用户

使用 usermod --help 命令显示用于修改账户的选项.

3、删除用户

  • userdel username:从 /etc/passwd删除 username 用户的详细信息,但用户主目录(用户拥有的文件)保持不变
  • userdel - r username:从 /etc/passwd 中删除 username 用户同时删除用户主目录
  • root 用户可以使用 find / -nouser -o -nogroup 命令查找所有无人拥有的文件和目录

4、设置密码

  • paswd username :为 username 用户设置初始密码或更改其现有密码;

5、UID范围

  • UID 0root 账户UID;
  • UID 1-99:分配给静态系统用户,手动预设,传统服务账户,通常不自动分配;
  • UID 100-999:分配给动态系统用户 (system users),系统服务用户,由系统或软件包自动创建,不允许登录;
  • UID 1000+:分配给普通用户,手动创建的用户,允许登录。

四、管理本地组账户

1、创建组

  • groupadd -g GID groupname:创建GID为GID的组,组名为groupname,若省略 -g GID ,则会自动分配GID;
  • groupadd -r groupname:创建系统组。

2、修改组

  • groupmod -n newname groupname:更改组名;
  • groupmod -g GID groupname:更改GID。

3、删除组

  • groupdel groupname:删除组。
  • 如果该group为主组,则无法删除。

4、更改组成员

  • usermod -g groupname username:更改用户主要组;
  • usermod -aG groupname username:将用户添加到 groupname 这个补充组。

5、比较主要组和补充组

可在 /etc/passwd 文件中查看主要组

可在 /etc/group 文件中查看用户补充组

6、临时更改主要组

  • newgrp groupname:将主要组切换为groupname组。

五、管理用户密码

1、影子密码和密码策略

  • 加密密码最初储存在全局可读的 /etc/passwd 文件中,后来由于常见的字典式攻击,将加密后的哈希密码转移至 /etc/shadow 文件,该文件只有root用户可以读取

2、密码验证

用户在登录时,使用salt加密用户passwd,然后进行哈希,之后进行比较

这种方式允许系统判断用户是否键入了正确的密码,同时又不以用于登录的密码形式来存储密码。

3、配置密码期限

  • 使用 chage 命令修改密码生命周期。
    chage -m 0 -M 90 -W 7 -I 14 username
    -m :最短期限为0天
    -M:最长期限为90天
    -W:警告期为7天
    -I : 不活动期为14天
  • 通过编辑 /etc/login.defs 文件中密码期限配置项来设置密码生命周期。

4、限制访问

  • usremod -L username:锁定用户账户,该用户将无法登录系统;
  • usermod -U username:解锁用户或者重新启用账户的访问权限。

5、非登录shell

  • usermod -s /sbin/nologin username:将用户的登录shell设置为nologin shell。

六、问答

1、Linux 对用户的管理会涉及到哪三个系统文件,请给出各自的名称并简述其条目结构。

  • /etc/passwd:存储用户的基本信息;
bash 复制代码
 用户名:密码占位符:UID:GID:注释:主目录:默认shell
  • /etc/shadow:存储用户的加密密码和密码策略;
bash 复制代码
用户名:加密密码:最后更改日期:最小天数:最大天数:警告期:禁用期:过期时间:保留字段
  • /etc/group:存储组信息与组成员关系。
bash 复制代码
组名:密码占位符:GID:组成员列表(逗号分隔)

2、用户的主组和辅助组有什么区别?

3、在 shell 切换用户时,su user 和 su -- user 这两个命令有什么区别?

  • su user:切换用户,但保留当前环境变量(尤其是 PATH);
  • su - user:切换用户并加载目标用户的登录环境,相当于真正登录该用户

4、说明 sudo 命令作用,su、sudo 和 sudo -i 有什么区别?

  • sudo 作用:

    允许授权用户以其他用户身份执行命令 ,默认是以 root 身份运行。

    权限由 /etc/sudoers 控制。

  • 区别:

5、怎么创建用户,怎么彻底删除用户(包含用户数据)?

  • 创建用户:useradd username
  • 彻底删除用户:userdel -r username

6、怎么创建组,怎么添加组成员?能否删除主组,说出原因。

  • 创建组:groupadd groupname

  • 添加组成员:

    设置主组:usermod -g groupname username

    添加到补充组:usermod -aG groupname username

  • 不能删除主组

    原因:主组是用户身份的重要组成部分,直接删除会导致系统一致性问题和权限错乱 ,因此必须先切换用户的主组

7、请解释 nologin shell,在什么场合会用到。

  • 系统服务账户:比如 nobody、daemon、www-data
  • 限制某些用户无法登录系统:例如仅用于 FTP、数据库、系统守护进程
相关推荐
清风~徐~来1 小时前
【Linux】环境变量
linux·运维·chrome
Bl_a_ck2 小时前
【C++】Docker介绍
运维·docker·容器·eureka
何似在人间5753 小时前
负载均衡的实现方式有哪些?
运维·负载均衡
文牧之3 小时前
MySQL 修改用户密码
运维·数据库·mysql
Willliam_william3 小时前
QEMU学习之路(8)— ARM32通过u-boot 启动Linux
linux·学习·elasticsearch
keepython3 小时前
【n8n docker 部署的代理问题】解决n8n部署无法访问openai等外国大模型厂商的api
运维·人工智能·docker·容器
八股文领域大手子4 小时前
优化IDEA2024.3大型项目启动慢
运维·nginx·spring·docker·容器
sg_knight4 小时前
Spring Cloud 2024.x智能运维:AI驱动的故障预测与自愈
java·运维·人工智能·spring boot·spring cloud
橘猫0.o5 小时前
【Linux 并发与竞争实验】
linux·运维·服务器·驱动开发
来自于狂人6 小时前
当Browser Use遇见A2A:浏览器自动化与智能体协作的“冰与火之歌“
运维·自动化