复习之Linux系统中的用户管理

news2025/1/12 10:42:08

1.用户及用户组的意义

在Linux中,用户(User)和用户组(Group)是管理系统权限和资源访问的重要概念。

(1)用户

 用户是指系统中的一个身份标识,每个用户都有自己的用户名和密码。每个用户可以拥有自己的文件、进程和权限,通过用户名和密码进行身份验证后可以登录系统并执行各种操作。通过建立不同权限的用户,一来可以合理的控制和运用系统的资源,二来可以帮助用户构建自己的私人空间,更好的组织和管理自己的文件。

用户是系统中最底层的一种安全机制,3A机制组成系统中最底层的安全架构。3A机制由 “身份 account ,授权  author,认证 auth”组成。

(2)用户组

用户组是指一组用户的集合,对用户进行归类和统一授权。每个用户可以属于多个用户组,而每个用户组可以拥有多个用户。用户组通常用于授权管理和文件访问控制,比如一个用户组可以有权限访问某个目录或文件,而其他用户组则没有。

Linux使用了一种称为“访问控制列表”(Access Control List,简称ACL)的权限控制机制。每个文件和目录都有一个ACL,包含了对该文件或目录的访问权限设置,包括用户和用户组等信息。当一个用户尝试访问某个文件或目录时,系统会根据该用户所属的用户组和ACL中的权限信息来判断是否允许访问。

2.用户查看的方法

# whoami : 查看当前用户

#id :查看当前用户id信息

#id 用户:查看指定用户的id信息

#id  -u  用户 : 查看用户的用户id

#id  -g  用户 : 查看用户的主组id

#id  -G  用户 : 查看用户的所有组的id

#id  -n  : 显示名称,不可以单独使用。必须联合以上一起使用,例如:

#id -n -g 用户:显示用户所有组的名称

 3.切换用户

(1)图形切换

(2)gnome命令切换

# gnome-session-quit     --force :输入命令后直接退出系统,重新登陆。

(3)su 命令切换

# su   username  : 切换用户 ,不切换用户环境

# su  -   username:切换用户,切换了用户环境

两者区别:“  -   ” 代表切换用户环境

超级用户----->  普通用户 :不需要密码

普通用户-----> 超级用户:需要密码

普通用户------>普通用户:需要密码

 注意:在做用户切换时当使用完毕用户身份及时退出,利用exit命令
#不要在一个shell中反复执行su命令

#在一个shell中反复执行su命令会导致环境错乱

4.用户涉及到的系统配置文件

/etc/passwd    ##用户身份信息文件

#用户名称:用户密码:用户id:用户主组id:用户说明:用户家目录:用户默认shell

 /etc/group      ##组身份信息文件  #组名称:组密码:组id:组的附加成员

/etc/skel/.*            ##用户环境配置文件模板

 /etc/shadow        ##用户认证信息文件

/home/username        ##用户家目录

/var/spool/mail/username        ##用户邮箱文件

5.监控及用户和组建立的基本方法

(1)监控

# watch  命令 : 隔两秒执行一次命令

# watch  -n 1  命令 : 隔一秒执行一次命令

<ctrl> + <C > 即可退出监控界面

由于本次实验需要监控用户和组的建立及删除,因此我们设立以下监控界面。

# watch    -n   1     "tail -n 3 /etc/passwd /etc/group  ;    ls -l /home" :查看etc/passwd etc/group 后三行的内容,并且展示家目录的属性。

“  ;”   : 表示命令的间隔

 (2)用户和组建立的基本方法

# useradd  用户 :建立用户

# userdel   用户 : 删除用户,只删除用户的信息,不删除配置文件,比如家目录。

#userdel    -r  用户 :  删除用户及其系统配置文件

 # groupadd 组 :建立组

 # groupdel  组:组删除

 6.指定信息建立用户及组

(1)建立组---指定id

# groupadd   -g  id  组  : 建立指定id 的组

 (2)指定信息建立用户

#useradd   -u   id  用户  :建立指定id的用户 (默认主组id与用户id一致)

ps:本次实验建立用户后及时删除

 注意:用户id不能随意取,用户建立默认规则储存在:/etc/login.defs

# 0  :  超级用户

# 1 - 200 :系统预留id

# 201 - 999 :系统用户

# 1000 - 60000 :用户级用户

# useradd   -g  id  用户名 : 建立指定主组id的用户        ps:前提是这个组要存在!

注意:指定主组id 不影响用户id 

 # useradd   -G   id   用户 : 建立指定附加组id的用户 (该附加组必须要存在)

# useradd  -c  说明  用户名  : 建立指定用户说明的用户

 # useradd  -d  家目录  用户名 :建立指定家目录的用户

 # useradd  - M  用户名 :建立用户时不建立家目录

 # useradd  -s  shell   用户名 :建立用户时指定shell

ps: 默认shell有  /bin/sh  /bin/bash   sbin/nologin  

但sbin/nologin  是系统预留的,不对外开放!

7.用户信息的更改

(1)修改用户名称

# usermod   -l   新名称  旧名称  : 修改用户名称

 (2)修改用户id

# usermod   -u    新id   用户名  :修改用户id

 (3)修改用户主组id

# usermod  -g  新主组id/名称   用户名 : 修改用户的主组id

ps:新主组必须存在!

 (4)更改用户附加组的身份

# usermod   -G   附加组id/名称  用户 : 修改用户的附加组身份

ps:附加组必须存在!

注意:新附加组身份会覆盖原附加组,因此可以利用该特性清空用户的附加组。

# usermod  -G   ""     用户名:清空用户的附加组

 (5)添加用户附加组身份

# usermod  -aG  附加组id/名称  用户 :添加附加组身份

注意:新附加组身份不会覆盖原附加组

 (6)更改用户说明

# usermod  -c  用户说明   用户名  :更改用户说明

 (7)更改家目录指向

# usermod   -d  新家目录  用户 :更改家目录指向

ps:只是更改了家目录指向,该指向不一定存在。真正的家目录名称并为改变

 (8) 更改家目录指向同时更改家目录名称

# usermod  -md  新家目录  用户名:修改家目录指向并更改家目录名称

(9)修改用户的默认shell

# usermod   -s  新shell  用户名:修改用户的默认shell

8.用户认证信息管理

(1)/etc/shadow : 文件内容说明

#用户名称:用户密码的加密字符:用户密码最后一次被修改时间:密码最短有效期:密码最长有效期:密码过期前警告期:账号非活跃期:账号到期时间:用户自定义(未使用)

 (2)查看用户密码状态

# passwd  -S  用户名:查看用户密码状态

 (3)root修改密码

# passwd  用户 :修改用户密码

ps:超级用户可以直接修改任何用户的密码,不用输入原密码。

# echo 123  | passwd  --stdin  westos  : 修改westos用户的密码为123 ,非交互式修改密码,只有root可以执行

 

 (4)普通用户修改密码

# passswd   :  只用输入passwd即可修改自己的密码

注意:修改密码前要输入原密码且密码要8位以上,要求严格

 (5)用户冻结和解冻

ps:监控界面:

#watch -n 1 "tail -n 1 /etc/shadow ; echo @@@@@; passwd -S lee"

#passwd  -l  用户 : 用户密码被冻结,则该用户无法登陆。

冻结的原理,密码前加了两个感叹号!!

ps:root切换该用户成功,普通用户无法切换该用户。

# passwd  -u  用户 :用户密码解锁

 # usermod   -L  用户:也可对账号进行冻结,在密码前加了一个感叹号!

 # usermod     -U  用户 :对账号进行解冻

 (6)修改用户密码最后一次被修改的时间

# passwd  -e  用户 : 修改默认时间为0,必须修改该账号的密码。

适用场景:拿到新银行卡时必须修改密码。

修改前:

 修改后:

 再次登陆该用户时,强制要求修改密码

再次登陆系统后,时间又恢复了

 # chage   -d  0  用户 : 修改用户默认时间为0

 修改密码后,恢复!

 (7)修改密码最短有效期:该期限内不能改密码

# passwd  -n   1  用户 :该用户一天不能改密码

# chage  -m  1  用户:该用户一天不能改密码

 (8)修改密码最长有效期限:过了该日期必须修改密码

# passwd  -x  30  用户:修改用户的最长期限为30天

# chage  -M  99999  用户 :修改用户的最长期限为9999天

 (9)修改密码过期前警告时间

# passwd   -w   2  用户:修改警告时间为2天,即到期前两天提示密码即将过期。

# chage  - W  7 用户:修改警告时间为7天。

 (10)修改认证非活跃天数:过期后还能用多久

# passwd    -i   1  lee  :过期后还能登陆该账号一天,并且会强制改密码(因为过期了)。

# chage  -I   -1  lee  :不设置非活跃天数。

 (11)修改账号到期时间

# chage        -E      “2024-01-23" 修改账号过期时间为2024-01-23

 9.用户权力下放

普通用户默认无法建立新用户

 #在系统中普通用户时无法执行系统管理命令的
#如果需要普通用户执行系统管理动作那么需要root用户来进行授权

授权方法:
visudo                             ##此命令作用是编辑/etc/sudoers并提供语法检测

#  visudo   :  只输visudo 回车就可以

 ps:一般写在100行

 因此首先要获取主机名和执行命令的绝对路径

#  hostname  : 获取主机名

# which  useradd : 获取命令的绝对路径

 输入visudo开始授权,在100行写

lee   主机名=(root)  命令的绝对路径 :lee用户在该主机上以root身份执行useradd命令

 切换至lee用户测试

# sudo   : 授权方法

# sudo  useradd test

第一次需要密码,后续不需要。

发现普通用户也可成功建立新用户, 普通用户删除用户怎么办?

继续在visudo里面添加执行命令即可,命令之间用逗号空格隔开

lee用户利用权力下放删除test,test1用户成功!

如果想第一次也不输入密码。

即免密的话,在/etc/sudoers文件添加NOPASSWD:就可以。

 则第一次也不需要密码,实现了免密操作!

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/580090.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python编程炒股软件:优秀的股票市场分析工具

Python 编程炒股软件&#xff1a;优秀的股票市场分析工具 Python 编程语言一直以来在数据分析和科学计算领域处于领先地位。由于它强大的数据处理能力和易于使用的编程语言特性&#xff0c;Python成为了许多股票市场分析工具的首选。 现在&#xff0c;越来越多的投资者使用Py…

RocketMQ 学习教程——(二)SpringBoot 集成 RocketMQ

文章目录 添加 RocketMQ 依赖消费者 ConsumerYAML 配置创建监听器消息过滤Tag 过滤 生产者 ProducerYAML 配置发送同步消息发送异步消息发送单向消息发送延迟消息发送顺序消息发送批量消息发送集合消息 添加 RocketMQ 依赖 在 Maven 仓库【https://mvnrepository.com/】中搜索 …

Latex在同一figure中排版多张图片的方法

Latex在同一figure中排版多张图片的方法 主要使用了minipage&#xff08;子图&#xff09;语法。minipage可以嵌套&#xff0c;子图还可以分解为更多子图&#xff0c;功能很好玩&#xff0c;无聊可以自己试试。下面介绍几种常用效果的实现方法。 并排显示两张图&#xff0c;并…

StarRocks 中的数据模型和索引使用

一、StarRocks 数据模型 StarRocks 支持四种数据模型&#xff0c;分别是明细模型 (Duplicate Key Model)、聚合模型 (Aggregate Key Model)、更新模型 (Unique Key Model) 和主键模型 (Primary Key Model)。 1.1 明细模型 明细模型是默认的建表模型。如果在建表时未指定任何…

chatgpt赋能python:Python自动截屏教程

Python 自动截屏教程 介绍 Python 是一种高级程序设计语言&#xff0c;已广泛用于各种应用中&#xff0c;从 Web 开发到机器学习都有很多案例。其中&#xff0c;Python 的截屏功能得到了越来越多的关注&#xff0c;因为在很多应用场景中&#xff0c;自动截屏可以帮助我们更有…

【JVM】11. 垃圾回收及回收算法算法

文章目录 11.1. 垃圾回收概述11.1.1. 什么是垃圾&#xff1f;什么是垃圾&#xff1f; 11.1.2. 为什么需要GC11.1.3. 早期垃圾回收11.1.4. Java垃圾回收机制担忧GC主要关注的区域 11.2. 垃圾回收相关算法11.2.1. 标记阶段&#xff1a;引用计数算法方式一&#xff1a;引用计数算法…

C++数据结构:散列表简单实现(hash表)

文章目录 前言一、设计思想二、实现步骤1、定义节点2、定义Hash表类 三、数据示例总结 前言 散列表是一种常用的数据结构&#xff0c;它可以快速地存储和查找数据。散列表的基本思想是&#xff0c;将数据的关键字映射到一个有限的地址空间中&#xff0c;然后在该地址空间中存储…

Nacos源码-从Demo出发研究事件驱动与观察者模式的应用

在我们分析 Nacos 源码时&#xff0c;会看见大量的事件发布的动作&#xff0c;不管是客户端注册/下线、服务改变、服务订阅等等都是利用了事件发布。 下面我在自己的项目中&#xff0c;引入Nacos的依赖进行一个简单的demo的演示&#xff0c;我个人认为其和spring容器的listene…

Koa学习1:初始化项目

前言 作为前端开发者&#xff0c;最适合我们的后端就是node了&#xff0c;node的框架挺多的。选择Koa是因为国内用的挺多的、关于这方面的教程也很多、而且比较适合小项目。 学习教程是&#xff1a;【杰哥课堂】-项目实战-NodeKoa2从零搭建通用API服务 写这些文章&#xff0…

K8s in Action 阅读笔记——【5】Services: enabling clients to discover and talk to pods

K8s in Action 阅读笔记——【5】Services: enabling clients to discover and talk to pods 你已了解Pod以及如何通过ReplicaSets等资源部署它们以确保持续运行。虽然某些Pod可以独立完成工作&#xff0c;但现今许多应用程序需要响应外部请求。例如&#xff0c;在微服务的情况…

在Python中载入大量图片型数据集,与matlab结合使用时,如何解决RAM的占用爆炸性增长的问题

在Python中载入大量图片时&#xff0c;由于每张图片都会被转换成Numpy数组并存储在内存中&#xff0c;因此可能会导致RAM的占用爆炸性增长。为了减少RAM的使用&#xff0c;可以考虑采用以下方法&#xff1a; Python和Matlab结合使用。首先&#xff0c;可以使用Python的Pillow库…

【Linux】遇事不决,可先点灯,LED驱动的进化之路---1

【Linux】遇事不决&#xff0c;可先点灯&#xff0c;LED驱动的进化之路---1 前言&#xff1a; 一、最简单的LED驱动程序 1.1 字符设备驱动程序框架 1.2 程序实战 1.2.1 驱动程序&#xff08;led_drive_simple.c&#xff09; 1.2.2 应用程序&#xff08;led_test_simple.c…

C#,码海拾贝(25)——求解“三对角线方程组”的“追赶法”之C#源代码,《C#数值计算算法编程》源代码升级改进版

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static partial class LEquations { /// <summary> /…

Apache Kafka - 理解Kafka内部原理

文章目录 Kafka的实现机制1. 集群成员关系&#xff1a;2. 控制器*&#xff1a;3. Kafka的复制&#xff1a;4. 请求处理&#xff1a;5. 物理存储&#xff1a; 导图 Kafka的实现机制 作为Kafka专家&#xff0c;我很高兴为您深入解释Kafka的实现机制。我将从以下几个方面对Kafka进…

ARM体系结构与异常处理

目录 一、ARM体系架构 1、ARM公司概述 ARM的含义 ARM公司 2.ARM产品系列 3.指令、指令集 指令 指令集 ARM指令集 ARM指令集 Thumb指令集 &#xff08;属于ARM指令集&#xff09; 4.编译原理 5.ARM数据类型 字节序 大端对齐 小端对齐 …

VTK安装和运行

创建日期: 2019-04-02 09:19:00 开始 学习资源 官方网站&#xff1a;https://vtk.org/ GitHub&#xff1a;https://github.com/Kitware/VTK 官方教程&#xff1a;https://vtk.org/Wiki/VTK/Tutorials 官方文档&#xff1a;https://vtk.org/documentation/ 用户手册&#…

RocketMQ 学习教程——(一)安装 RocketMQ

文章目录 RocketMQ 安装下载安装上传服务器配置环境变量修改 runserver.sh修改 runbroker.sh修改 broker.conf启动 安装 RocketMQ 控制台安装Linux 防火墙命令 Docker 安装 RocketMQ拉取镜像启动 NameServer 服务启动 Broker 服务启动控制台 RocketMQ 官网&#xff1a; http://…

​【编写UI自动化测试集】Appium+Python+Unittest+HTMLRunner​

简介 获取AppPackage和AppActivity 定位UI控件的工具 脚本结构 PageObject分层管理 HTMLTestRunner生成测试报告 启动appium server服务 以python文件模式执行脚本生成测试报告 下载与安装 下载需要自动化测试的App并安装到手机 获取AppPackage和AppActivity 方法一 有源码的…

算法11.从暴力递归到动态规划4

算法|11.从暴力递归到动态规划4 1.最长公共子序列 题意&#xff1a;给定两个字符串str1和str2&#xff0c;返回这两个字符串的最长公共子序列长度 比如 &#xff1a; str1 “a12b3c456d”,str2 “1ef23ghi4j56k” 最长公共子序列是“123456”&#xff0c;所以返回长度6 解…

【PowerShell】PowerShell 7.1 之后版本的安装

当前以下操作系统支持PowerShell 7.1 版本的安装,非Windows 系统支持的版本和要求有一定的限制。 Windows 8.1/10 (including ARM64)Windows Server 2012 R2, 2016, 2019, and Semi-Annual Channel (SAC)Ubuntu 16.04/18.04/20.04 (including ARM64)Ubuntu 19.10 (via Snap pa…