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

2023-10-27

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:就可以。

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

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

复习之Linux系统中的用户管理 的相关文章

随机推荐

  • stm32+esp8266上传实时温度到本地服务器

    在之前我们已经实现了esp8266和本地服务器的交互 并将数据写入到MySQL数据库中 但实际意义不大 我们需要实现将数据实时写入 所以需要添加传感器模块 并以单片机为主控处理数据 完成上传 这一次配置esp8266不再使用串口助手 而是将
  • java单例+观察者设计模式·简单实现订单生成与分发小案例--柚子真好吃

    java单例 观察者设计模式 简单实现订单生成与分发小案例 柚子真好吃 一 观察者模式介绍 二 观察者模式关键点 三 单例 观察者模式代码实现 一 观察者模式介绍 本项目采用单例 观察者设计模式 单例模式的使用这里不做过多说明 我之前的文章
  • STM32(一)准备开发环境CLion+CubeMX

    本篇内容 一 CLion和STM32CubeMX基础安装 二 安装OpenOCD 三 安装交叉编译工具链 四 配置CLion并点亮第一个LED灯 五 烧录程序 六 错误排查 本篇安装配置STM32的开发环境 使用的是稚晖君同款CLion S
  • 【C++ STL容器】:vector存放数据以及存放自定义的数据类型

    前言 时不可以苟遇 道不可以虚行 STL 中最常用的容器为 vector 暂且把它理解为我们之前学过的数组Array 一 创建一个vector容器 数组 添加头文件 include
  • react scss.modules中使用iconfont

    全局引入详见全局引入scss 全局的scss文件中引入iconfont css use font iconfont css 然后就可以正常使用啦
  • MySQL互为主从

    MySQL互为主从 Mysql A 192 168 189 140 Mysql B 192 168 189 141 在A B上操作 安装 root localhost yum y install mysql mysql server 修改配
  • RHCE(KVM——配置虚拟机网络连接)

    1 了解虚拟网络 主机硬件必须协助虚拟机 VM 连接到网络上的其他设备和位置 以下小节解释了虚拟机网络连接的机制 并描述了默认虚拟机网络设置 1 1 虚拟网络的工作方式 虚拟网络使用了虚拟网络交换机的概念 虚拟网络交换机是在主机机器中运行的
  • keil提示No Browse Information available in ‘..\OBJ\SPI‘解决方法

    1 No Browse Information available in OBJ SPI 解决方法 https blog csdn net frozennet article details 107213145
  • Maven入门详解与安装配置

    Maven Maven出现前的问题 假设你现在做了一个项目 项目中肯定要用到一些jar包 比如说mybatis log4j JUnit等 除了这些之外 你有可能用到你的同事开发的其他的东西 比如说别人做了一个财务模块或做了一个结算的模块 你
  • Gradle 入门到精通(三)

    前言 根据我们上一篇的介绍 我们知道了项目的结构以及构建的流程 根据上面的知识 我们知道了构建的规则实际就是我们写在build gradle的内容 gradle android插件读取这个文件的内容后 最后完成构建工作 在讲解实际内容前 我
  • 基于JSP的医院预约挂号管理系统

    项目背景 网络的广泛应用给生活带来了十分的便利 所以把医院预约挂号管理与现在网络相结合 利用java技术建设医院预约挂号系统 实现医院预约挂号的信息化 则对于进一步提高医院预约挂号管理发展 丰富医院预约挂号管理经验能起到不少的促进作用 医院
  • 通俗易懂解释知识图谱

    通俗易懂解释知识图谱 Knowledge Graph 1 前言 2 知识图谱定义 3 数据类型和存储方式 4 知识图谱的架构 4 1 逻辑架构 4 2 技术架构 5 信息抽取 5 1 实体抽取 Entity Extraction 5 2 关
  • linux日志筛选查找命令

    日志实时监控 tail f spring log 关键字实时监控 tail f spring log grep key 如果没有特殊字符 可以不用引号 如果关键字有引号使用单引号和双引号配合使用 输出匹配内容上下行 输出匹配行以及下面5行
  • python函数中文手册-Python参考手册(第4版)

    第一部分 Python语言 第1章 Python简介 2 1 1 运行Python 2 1 2 变量和算术表达式 3 1 3 条件语句 5 1 4 文件输入和输出 6 1 5 字符串 7 1 6 列表 8 1 7 元组 9 1 8 集合 1
  • 一文搞懂常见的git操作

    git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch a 查看所有的分支 git branch r 查看远程所有分支 git commit am nit 提交并且加注释
  • Vue中如何进行自定义动画与动画效果设计

    Vue中如何进行自定义动画与动画效果设计 在Vue中 动画效果是非常有用的 它可以使用户界面变得更加生动 有趣 从而提高用户体验 Vue提供了一套非常方便的动画系统 使得我们可以非常容易地实现动画效果 在本文中 我们将学习如何在Vue中进行
  • 【Qt教程】1.10 - Qt5模态与非模态对话框( QDialog)

    1 对话框简介 对话框简介 通常是一个顶层窗口 出现在程序最上层 用于实现短期任务或者简洁的用户交互 对话框分为模态对话框和非模态对话框 模态对话框 会阻塞同一应用程序中其他窗口的输入 非模态对话框 可以在显示的同时 也能对其他窗口进行操作
  • 下载csdn的文章

    下载csdn的文章 在文章界面点击开发者选项 到console界面 输入 function side remove comment title comment list comment bar comment form announce a
  • vue 角色权限控制页面,页面内的按钮。总结思路

    页面权限控制 动态路由 前端创建asyncRoutes 添加meta auth true auth 为false时不受权限控制 都会显示 后端返回有权限的menu tab button tab routes push resRoutes T
  • 复习之Linux系统中的用户管理

    1 用户及用户组的意义 在Linux中 用户 User 和用户组 Group 是管理系统权限和资源访问的重要概念 1 用户 用户是指系统中的一个身份标识 每个用户都有自己的用户名和密码 每个用户可以拥有自己的文件 进程和权限 通过用户名和密