【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、数据库、系统守护进程
相关推荐
对你无可奈何34 分钟前
关于Ubuntu的 update造成的内核升级
运维·服务器·ubuntu
qq_312920111 小时前
Nginx限流与防爬虫与安全配置方案
运维·爬虫·nginx·安全
GanGuaGua1 小时前
Linux系统:线程的互斥和安全
linux·运维·服务器·c语言·c++·安全
lsnm1 小时前
【LINUX网络】IP——网络层
linux·服务器·网络·c++·网络协议·tcp/ip
全糖去冰吃不了苦1 小时前
ELK 集群部署实战
运维·jenkins
不掰手腕1 小时前
在UnionTech OS Server 20 (统信UOS服务器版) 上离线安装PostgreSQL (pgsql) 数据库
linux·数据库·postgresql
Lynnxiaowen2 小时前
今天继续昨天的正则表达式进行学习
linux·运维·学习·正则表达式·云计算·bash
努力学习的小廉2 小时前
深入了解linux系统—— POSIX信号量
linux·运维·服务器
刘一说2 小时前
CentOS部署ELK Stack完整指南
linux·elk·centos
从零开始的ops生活2 小时前
【Day 50 】Linux-nginx反向代理与负载均衡
linux·nginx