Linux——管理本地用户和组(详细介绍了Linux中用户和组的概念及用法)
目录
一、用户和组概念
(一)、用户的概念
(二)、组的概念
补充组
主要组
二、获取超级用户访问权限
(一)、su 命令和su -命令
( 二)、sudo命令
三、管理本地用户账户
(一)创建用户
(二)修改用户
(三)删除用户
(四)设置用户密码
四、管理本地组账户
(一)创建组
(二)修改组
(三)删除组
(四)更改组成员
(五)临时更改主要组
一、用户和组概念
(一)、用户的概念
用户主要分为超级用户(root),系统用户和普通用户
- 超级用户账户负责管理系统,超级用户的名称为root,其账户的UID为0,超级用户具有完全的系统访问权限
- 系统用户账户提供支持服务进程使用,这些进程通常不需要以超级用户身份运行。系统会为它们分配非特权账户,确保其文件和其他资源不受彼此以及以上系统上普通用户的影响。用户无法使用系统用户账户以交互方式登录。
- 普通用户对系统具有有限的访问权限。
使用id命令可以显示有关当前已登录用户的信息
[kiosk@foundation0 ~]$ id
uid=1000(kiosk) gid=1000(kiosk) groups=1000(kiosk),982(libvirt) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
查看其它用户的信息,将用户名作为参数传递给id命令即可
eg:
使用ls -l 命令查看文件的所有者,ls -ld命令查看目录的所有者,而不是目录的内容

上图中,第一列表示第一个字母表示类型,-表示普通文件,d表示目录,l表示软链接(也称符号链接),第二列表示硬链接数目,第三列显示用户名
使用ps命令可查看进程信息。默认仅显示当前shell中的进程。
- -a选项可查看与某一终端相关联的所有进程
- -u选项可查看与进程相关联的用户

在pa -au输出中,第一列显示用户名,第二列显示进程id。
在默认情况下,系统使用/etc/passwd文件存储有关本地用户的信息,/etc/passwd文件的每一行都包含了每个用户的信息

如上显示了/etc/passwd文件中的最后三行用户信息,代码块的每一部分用:分隔。
示例: usr01:x:1000:1000:User One:/home/user01:/bin/bash
代码块解释:
- user01:此用户的用户名
- x:用户密码(用户密码存储在这里,x为一个占位符)
- 1000:此用户账户的uid编号
- 1000:此用户账号的主要组的GID编号
- User One:用户描述或者真是姓名
- /home/user01:用户的主目录,以及登录shell启动时的工作目录
- /bin/bash:用户的默认shell程序(一些账户,例如系统账户使用/sbin/nologin shell来禁止使用该账户进行交互式登录)
(二)、组的概念
补充组
组通俗理解就是一群用户的集合。组可向其中的所有用户授予文件访问权限,组内的用户享有该组的所有权限,这种通俗意义上的组称为组员用户的补充组,补充组一般允许存在多个成员。
与用户一样,组也具有组名以便于识别。在内部,系统通过分配唯一标识符(组ID或GID)来区分不同的组。
默认情况下,系统使用/etc/group存储有关本地组的信息

如上图/etc/group文件中展示了最后三行的内容,代码块分为四部分,以:分隔
示例:group01:x:10000:user01,user02,user03
- group01:此组的名称
- x:组密码字段,x为一个标识符
- 10000:此组的GID编号
- user01,user02,user03:属于此组的成员列表
主要组
每个用户有且只有一个主要组,这个组按照GID列在/etc/passwd文件中,主要组拥有用户创建的文件。
在创建普通用户时,会创建一个与用户同名的组,作为该用户的主要组。
二、获取超级用户访问权限
大多数操作系统具有一个超级用户,该用户拥有系统的全部权限,在linux中,该用户为root 用户。但因为root用户的权限过大,很容易将系统置于危险之中,因此系统管理员一般以普通用户的身份登录,仅在必要时候获取root 用户权限进行操作
(一)、su 命令和su -命令
su命令可以使当前用户切换到另一个用户账号,但需要提供要切换的用户账号的密码。(以root用户切换时不需要密码)
su命令与su -命令不同的是su -命令可以切换到shell登录环境。
当su 或su -后面不加用户名时,一般默认为切换到root 用户

( 二)、sudo命令
一般情况下,系统管理员为了安全原因会为root用户配置为没有有效的密码。因此不能使用su或者su -命令获取root用户的权限,此时,可以使用sudo命令
与su 和su -不同的是,sudo命令要求用户使用自己的密码进行身份验证(避免root用户密码的泄露)而不需要要切换用户账户的密码
sudo+命令+选项+参数=使用root用户身份执行该命令 : sudo -i 为切换到root账户的命令
同时,sudo命令的另一个优点是默认将所有执行的命令记录到/var/log/secure中
/etc/sudoers文件 是sudo命令的主要配置文件。可以使用visudo命令进行编辑。
以下图片是使用su -命令进入root用户进行的操作(刚开始学习,刚才尝试使用sudo -i 命令显示kiosk用户不被允许使用该操作,因此使用su -命令演示),查看/etc/sudoers文件中设置可以使用sudo命令切换到root账户的组和用户


- %符号表示其后面的 wheel为一个组
- ALL=(ALL)指具有此文件的任何主机上(第一个ALL),wheel组中的任何用户(第二个ALL)都可以在系统上运行命令
- 最后一个ALL指所有的命令
/etc/sudoers文件中含有/etc/sudoers.d目录中的所有文件,因此可以通过创建文件放在/etc/sudoers.d目录下来为用户或者组添加sudo访问权限
三、管理本地用户账户
(一)创建用户
useradd username命令用于创建一个名为username用户的账号,系统创建用户的同时也设置了用户的主目录和账户信息,同时也为用户创建了一个私有组(当用户创建文件时,文件必须有所属用户和所属组,系统会将用户的私有组作为创建文件的所属组),但此时用户未设置密码,只有设置密码后用户才可以登录其账号。
(二)修改用户
usermod --help可以展示usermod命令的选项

以下是一些比较重要常用的选项解释:
- -a:与-G选项一起使用时意为将组添加到当前用户的组成员当中去,与替换当前用户补充组意思不同
- -c:将COMMENT文本添加到注释字段
- -d:为用户账户指定一个主目录
- -g:为用户账户指定主要组
- -G:为用户账户指定不充足的逗号2分隔列表
- -L:锁定账户
- -m:将用户的主目录移到新的位置(必须与-d选项搭配使用)
- -S:为用户指定特定的登录shell
- -U:解锁用户账户
(三)删除用户
userdel username命令意为从/etc/passwd文件中删除用户账号,但用户的主目录仍在,userdel -r username命令可以在删除用户账户的同时删除用户的主目录
(四)设置用户密码
passwd username可以为用户设置初始密码或者更改密码
四、管理本地组账户
(一)创建组
groupadd命令用于创建组,不带任何选项时,系统将从/etc/login.defs文件中GID_MIN和GID_MAX变量中指定一个可用的GID,所指定的GID将大于当前所有组的GID,即使有较小的GID可以选择

groupadd命令 -g选项指定选择GID

(二)修改组
groupmod命令可以修改组的属性
groupmod 命令 -n选项可以更改组的名称

上图将group01组的名称修改为group1
groupmod命令 -g 选项可以更改组队的GID

上图将group1组的GID从1008 改为了1010
(三)删除组
groupdel命令用于删除组
上图将group1组从/etc/group文件中删除
(四)更改组成员
usermod 命令-g选项用于更改用户的主要组

上图将用户user01 的主要组从user01改为了group01
使用usermod -aG命令将用户添加到某一补充组

上图将user01用户添加到group02补充组中
(五)临时更改主要组
在shell 对话中,newgrp 命令临时切换主要组,一次只能有一个组时主要组,当重新登录时,主要组将恢复默认值

上图中,将user01用户的主要组从group01临时更改为group02
相关文章:
Linux——管理本地用户和组(详细介绍了Linux中用户和组的概念及用法)
目录 一、用户和组概念 (一)、用户的概念 (二)、组的概念 补充组 主要组 二、获取超级用户访问权限 (一)、su 命令和su -命令 ( 二)、sudo命令 三、管理本地用户账户 &…...
Flink-StarRocks详解:第三部分StarRocks分区分桶(第53天)
文章目录 前言2.3 数据分布2.3.1 数据分布概览2.3.1.1 常见的数据分布方式2.3.1.2 StarRocks的数据分布方式2.3.1.3 分区2.3.1.4 分桶 2.3.2 创建分区2.3.2.1 表达式分区2.3.2.1.1 时间函数表达式分区(自v3.1)2.3.2.1.2 列表达式分区(自v3.1&…...
8G内存的Mac够用吗 ?苹果电脑内存满了怎么清理?可以有效地管理和优化你的Mac电脑内存,确保设备运行流畅
嘿,朋友们,让咱们聊聊怎么让我们的Mac小伙伴时刻保持巅峰状态吧!想象一下,每一次点击、每一次滑动,都如同初见时那般丝滑顺畅,是不是超级心动?为了这份持久的畅快体验,我强烈推荐大家…...
【LabVIEW学习篇 - 10】:属性、调用节点
文章目录 属性节点调用节点使用方法一使用方法二案例 练习 属性节点 LabVIEW中的对象(包括控件、VI、应用程序等)都有自己的属性和方法。属性就是对象与生俱来的一些特性,可以理解成它是静态的,如控件的背景颜色,坐标…...
如何在数据埋点中发现和修复数据上报逻辑错误
如何发现和处理数据埋点中的逻辑错误 在大数据分析中,数据埋点是至关重要的一环。然而,当我们遇到数据上报逻辑错误时,该如何应对呢?本文将为你揭示解决这一棘手问题的有效方法。 目录 如何发现和处理数据埋点中的逻辑错误什么是数据上报逻辑错误?如何发现数据上报逻辑错误…...
程序员面试“八股文”:助力成长还是应试枷锁?
程序员面试“八股文”:助力成长还是应试枷锁? 引言 在当今快速迭代的IT行业中,程序员面试作为选拔人才的关键环节,其内容与形式一直备受关注。其中,“八股文”式面试题,作为一类标准化、模式化的问题集合…...
强化学习-alphazero 算法理论
一、算法简介 简单地说,AlphazeroMCTS SL(策略网络价值网络) Selfplay resnet。 其中MCTS指的是蒙特卡洛树搜索,主要用于记录所有访问过的棋盘状态的各种属性,包括该状态访问次数,对该状平均评价分数等。 SL指监督学习算法&…...
使用 Rough.js 创建动态水平条形图
本文由ScriptEcho平台提供技术支持 项目地址:传送门 使用 Rough.js 创建动态可视化网络图 应用场景 Rough.js 是一个 JavaScript 库,它允许开发人员使用毛边风格创建可视化效果。该库适用于各种应用程序,例如: 数据可视化地图…...
Python教程(十):面向对象编程(OOP)
目录 专栏列表前言一、面向对象编程概述1.1 类和对象1.2 继承1.3 多态1.4 封装 二、Python 中的类和对象2.1 定义类2.2 __init__ 函数解释2.3 创建对象 三、继承3.1 基本继承3.2 创建子类对象 四、多态五、封装六. 访问限制七、综合实例结语 专栏列表 Python教程(一…...
CTFHUB-文件上传-文件头检查
开启题目 1.php内容: <?php eval($_POST[cmd]);?> 截屏截一个很小很小的图片,保存为 png 格式,把 1.png 和 1.php 放在同一文件夹,在此目录打开 cmd, 使用以下命令把 1.png 和 1.php 合成为图片马 copy 1.pn…...
c语言数组与指针,字符串与指针,指向函数的指针,malloca动态内存分配
数组与指针 数组: - 数组是一种数据结构,可以存储固定大小的一组相同类型的元素。在内存中,数组的元素是连续存储的。 指针: - 指针是一个变量,用于存储内存地址。指针本身占用内存,用来指向某个数据的地址。 数组与指针的关系…...
代码随想录算法训练营day30 | 452. 用最少数量的箭引爆气球 、435. 无重叠区间、763.划分字母区间
碎碎念:加油 参考:代码随想录 452. 用最少数量的箭引爆气球 题目链接 452. 用最少数量的箭引爆气球 思想 局部最优: 让重叠的气球尽量在一起,用一支弓箭射。 全局最优: 用最少数量的箭引爆气球。 首先对气球进行排…...
如何手动修复DLL丢失?2种手动修复dll文件方法
DLL(动态链接库)文件是Windows操作系统中非常重要的组成部分,它们包含了程序运行所需的代码和数据。然而,由于各种原因,如系统更新、软件卸载不当或病毒感染,DLL文件有时会丢失或损坏,导致程序无…...
Node.js(2)——压缩前端html
需求:把回车符(\r)和换行符(\n)去掉后,写入到新的html文件中 步骤: 读取源html文件内容正则替换字符串写入到新的html文件中 示例: 获取html文件中的内容并检查(同时…...
堆的实现-向上调整算法-向下调整算法-堆排序-TopK问题 C语言
堆的实现与堆排序及TopK问题的C语言代码 下面是详细的堆实现,包括向上调整、向下调整算法,以及堆排序和解决TopK问题的完整C语言示例代码。 1. 堆的实现 首先,定义堆的数据结构: #include <stdio.h> #include <stdli…...
【C++BFS】1466. 重新规划路线
本文涉及知识点 CBFS算法 LeetCode1466. 重新规划路线 n 座城市,从 0 到 n-1 编号,其间共有 n-1 条路线。因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。去年,交通运输部…...
服务器并发模型
服务器: 单循环服务器:服务器在同一时刻只能响应一个客户端的请求 并发服务器模型:服务器在同一时刻可以响应多个客户端的请求 UDP:无连接 TCP:有连接 1.多进程 资源空间消耗大 效率低 2.多线程 相…...
Chapter 23 数据可视化——地图
欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能! 文章目录 前言一、基础绘图二、视觉映射三、案例分析 前言 随着地理信息系统(GIS)技术的迅猛发展和大数据时代的到来,数据可视化已经成为分析和理…...
Linux笔记 --- 组合数据类型
结构体 简单的定义结构体的方法 struct student {char name;int age;float score; };//使用student模板创建两个结构体变量 struct student Jack,Rose; 结构体中可以存放除了函数以外的任何数据类型的数据,在创建结构体时student被称为结构体模板名称,…...
DaoCloud-Dockfile文件NGINX文件
Dockfile文件 安装依赖,打包,配置NGINX代理,最后把打完的包复制到服务器相应的文件夹下,构建镜像成功。 # syntax docker/dockerfile:experimental FROM xx.xx.xx.xx/public/node:16.14.2 as builder# LABEL maintainer"e…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

