Linux的账号及权限管理
一.管理用户账号
1.1 用户账户的分类
1.1.1 用户账号的分类
- 超级用户:(拥有至高无上的权利) root用户是Linux操作系统中默认的超级用户账号,对本主机拥有最高的权限,系统中超级用户是唯一的。
- 普通用户: (权限受到限制的用户)由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限。
- 程序用户: (不是给人使用的,是给程序使用的 不允许登录)在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等。
1.1.2 用户标识号 UID
超级用户root用户账号的UID固定值0
程序用户账号的UID默认为Centos 6: 1~499,Centos7: 1~ 999
普通用户的UID默认为Centos 6: 500以上 ,Centos7: 1000~ 60000
1.1.3 用户账号文件
作用:保存用户名称、宿主目录、登录Sell等基本信息,每一行对应一个用户的帐号记录
/etc/passwd 存放用户信息

/etc/shadow 存放密码以及用户密码信息

1.2 用户账号管理
1.2.1 添加用户账号——useradd
添加新用户,并对新用户进行一些个性化设置
格式: useradd 【选项】 用户名
| 选项 | 说明 |
| -u | 指定uid |
| -M | 不生成家目录 |
| -s | 指定shell类型 |
| -e | 指定用户的失效时间 |
| -d | 指定用户的家目录位置(与-M一起使用,不生效) |
| -g | 指定基本组 |
| -G | 指定附加组 |
| -r | 创建程序用户 id<1000 |
| -c | 写备注信息 |
| -p | 密码加密 |
| -o | 生成相同的UID |









小题目:
随机生成一个密码
tr -d 删除去除
tr -c 用字符串中字符集的补集替换此字符集,要求字符集为ASCII

[[:alnum:]] [a-zA-Z0-9] 数字和字母
head -c 12 取字符12位
1.2.2 用户账号的初始化配置
新建用户账号时,从 /etc/skel 目录中复制而来

主要的用户初始配置文件:
~/.bash_profile 这个文件是为系统全局变量配置文件,可以通过重启系统或者执行source /etc/profile 命令使profile文件被读取
~/.bashrc 这个文件实际上是/etc/profile的子目录,存放的是一些应用程序所需的启动脚本
~/.bash_logout 每一个允许bash shell 的用户都会执行此文件,可通过执行bash命令打开一个新的bash shell时,使bashrc文件被读取
1.2.3 设置/更改用户的口令——passwd
格式:passwd 【选项】 用户名
| 选项 | 说明 |
| -l | 锁定用户 (不能登录) |
| -u | 解锁用户 |
| -S | 查看用户的状态 |
| -d | 清空密码 不需要密码直接登录 |
修改密码




免交互修改密码

设置用户密码直接使用passwd设置,需要一个一个进行设置,可以调用管道符号,给用户设置密码,进行批量设置密码,使用 --stdin选项。 --stdin 代表标准输入
1.2.4 修改用户账号属性——usermod
对已有用户的属性进行修改
格式: usermod 【选项】 用户名
| 选项 | 说明 |
| -l | 更改用户账号的登录名称 |
| -L | 锁定用户账户 |
| -u | 修改用户的UID 号 |
| -U | 解锁用户账户 |
| -d | 修改用户的家目录位置 |
| -e | 修改用户的账户失效时间,可使用YYYY-MM-DD的日期格式 |
| -g | 修改用户的基本组名 |
| -G | 修改用户的附加组名 |
| -s | 指定用户的登录shell |
-l 修改用户名
usermod -l 新名 原名

1.2.5 删除用户账号——userdel
格式: userdel [-r] 用户名
使用userdel时,加上-r选项,表示删除用户的家目录。
如果不加 -r ,删除之后再创建用户时会报错
二.管理组账号
2.1 组账号概述
2.1.1 组账号的分类
基本组(私有组): 基本组账号只有一个,一般为创建用户时指定的组。在/etc/passwd文件中第4段记录的即为该用户的基本组GID号。
附加组(公共组): 用户除了基本组以外,额外添加指定的组。
2.1.2 组标识号 GID
root用户账号的GID固定值0
程序用户账号的GID默认为Centos 6: 1~499,Centos 7: 1~ 999
普通用户的GID默认为Centos 6: 500以上,Centos7: 1000~ 60000
2.1.3 组账号文件
文件位置:
/etc/group:保存组账号基本信息
/etc/gshadow:保存组账号的密码信息
2.2 组账号管理
2.2.1 添加组账号——groupadd
格式: groupadd 【-g GID】组账号名
不加 -g 的话,会默认创建组id号
2.2.2 添加、设置、删除组成员——gpasswd
格式: gpasswd 【选项】 组账号名
| 选项 | 说明 |
| -a | 向组内添加一个用户 |
| -d | 从组内删除一个用户成员 |
| -M | 定义组成员列表,以逗号分隔 |



2.2.3 删除组账号——groupdel
格式: groupdel 组账号名
2.3 查询账号信息
2.3.1 查询用户账号所属组——groups
格式:groups [用户名]
2.3.2 查询用户账号身份标识——id
格式:id [用户名]

2.3.3 查询用户账号的登录属性——finger
格式:finger [命令]


2.3.4 查询当前主机的用户登录情况——w命令、who命令、user命令



三.文件/目录的权限和归属
在Linux文件系统的安全模型中,为系统中的文件赋予了两个属性:访问权限和文件所有者,简称“权限”和“归属”。其中访问权限包括读取、写入、可执行三种基本类型,归属包括属主(拥有该文件的用于账号)、属组(拥有该文件的组账号)。Linux系统根据文件和目录的访问权限、归属来对用户访问数据的过程进行控制。
3.1 查看文件/目录的权限和归属

第1个字符:表示该文件的类型,可以是d(目录文件)、b(块设备)、c(字符设备)、“-”(普通文件)、l(软链接)、s(套接字)、p(管道符)
第2~4个字符:表示该文件的属主用户(User)对该文件的访问权限;
第5~7个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限;
第8~10个字符:表示其他任何用户(Other)对该文件的访问权限;
第11个字符:这里的“ . ” 与SELinux有关
访问权限:
读取 r : 允许查看文件内容、显示目录列表
写入 w : 允许修改文件内容、允许在目录中新建、移动、删除文件或子目录
可执行 x : 允许运行程序、切换目录
特殊的一个的tmp(临时文件)文件 t
归属(所有权):
属主: 拥有该文件或目录的用户账号
属组: 拥有该文件或目录的组账号
3.2 设置文件/目录的权限和归属
3.2.1 设置文件/目录权限——chmod

| u | 属主 |
| g | 属组 |
| o | 其他人 |
| a | 所有人(上面三个) |
| + | 在原有的基础上加上权限 |
| - | 在原有的基础上减去权限 |
| = | 赋于 原有的权限不看,就是等于后面的权限 |




3.2.2 设置文件/目录归属——chown

属主改变:

属组改变:
属主 属组都改

小问题:
执行cp /etc/issue /data/dir/ 所需要的最小权限
cp x
/etc/ x
issue r
/data/ x
/dir/ wx
3.3 权限掩码——umask
umask作用:
控制新建的文件或目录的权限(创建文件的话,执行权限不会受影响)
默认权限去除umask的权限为新建的文件或目录的权限
umask查看: umask
新建目录的默认权限:777
新建文件的默认权限:666
root的umask默认时 022
非特权用户umask默认是 002
实例:
默认的 减去022


用户文件创建掩码 123

意会即可 言传太难
3.4 特殊权限
suid
当设置在可执行文件上时,允许以文件所有者的身份(setuid)或文件所属组的身份(setgid)运行该文件。

此处s表示当使用这个命令程序时,把当前用户当成文件的所属主

Sticky位



其它用户虽然有权限,但是无法删除

小问题:
/tmp
t 权限中多了一个t 是什么意思?
除了文件所有者 超级管理员 其他人不可以删除文件
只能对文件夹有用
3.5 ACL 访问控制列表
实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m, --modify-acl 更改文件的访问控制列表
-M, --modify-file=file 从文件读取访问控制列表条目更改
-x, --remove=acl 根据文件中访问控制列表移除条目
-X, --remove-file=file 从文件读取访问控制列表条目并删除
-b, --remove-all 删除所有扩展访问控制列表条目
-k, --remove-default 移除默认访问控制列表
--set=acl 设定替换当前的文件访问控制列表
--set-file=file 从文件中读取访问控制列表条目设定
--mask 重新计算有效权限掩码
-n, --no-mask 不重新计算有效权限掩码
-d, --default 应用到默认访问控制列表的操作
-R, --recursive 递归操作子目录
-L, --logical 依照系统逻辑,跟随符号链接
-P, --physical 依照自然逻辑,不跟随符号链接
--restore=file 恢复访问控制列表,和“getfacl -R”作用相反
--test 测试模式,并不真正修改访问控制列表属性
-v, --version 显示版本并退出
-h, --help 显示本帮助信息
相关文章:
Linux的账号及权限管理
一.管理用户账号 1.1 用户账户的分类 1.1.1 用户账号的分类 超级用户:(拥有至高无上的权利) root用户是Linux操作系统中默认的超级用户账号,对本主机拥有最高的权限,系统中超级用户是唯一的。普通用户: …...
Flink 状态管理与容错机制(CheckPoint SavePoint)的关系
一、什么是状态 无状态计算的例子: 例如一个加法算子,第一次输入235那么以后我多次数据23的时候得到的结果都是5。得出的结论就是,相同的输入都会得到相同的结果,与次数无关。 有状态计算的例子: 访问量的统计&#x…...
CSS中更加高级的布局手段——定位之绝对定位
定位: - 定位指的就是将指定的元素摆放到页面的任意位置,通过定位可以任意的摆放元素 - 通过position属性来设置元素的定位 -可选值: static: [sttik] 默认值,元素没有开启定位 relative: [relətiv] 开启元素…...
SQL server 数据库练习题及答案(练习3)
一、编程题 公司部门表 department 字段名称 数据类型 约束等 字段描述 id int 主键,自增 部门ID name varchar(32) 非空,唯一 部门名称 description varchar(1024) …...
太绝了!这个食堂服务,戳中了打工人的心巴!
在当今数字化时代,科技的迅猛发展已经渗透到我们生活的方方面面,其中餐饮行业也不例外。食堂作为人们日常生活中不可或缺的一部分,其管理和运营也需要紧跟科技潮流。 智慧收银系统的引入,旨在提高食堂的效率、准确性和服务水平&am…...
围栏中心点
后端返回的数据格式是 [{height: 0,lat: 30.864277169098443,lng:114.35252972024682}{height: 1,lat: 30.864277169098443,lng:114.35252972024682}.........]我们要转换成 33.00494857612568,112.53886564762979;33.00307854503083,112.53728973842954;33.00170296814311,11…...
【go-zero】simple-admin框架 整合ent mysql批量插入 | ent批量插入mysql
一、完整流程 我们需要通过goctls快速生成一个RPC项目 【go-zero】simple-admin 开篇:进击 go-zero 二开框架 simple-admin 加速 go-zero 开发 之 rpc项目快速创建(更新中~) https://ctraplatform.blog.csdn.net/article/details/130087729 1、RPC项目 1.1、.proto synta…...
漏洞复现-泛微OA xmlrpcServlet接口任意文件读取漏洞(附漏洞检测脚本)
免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…...
Flink CDC 1.0至3.0回忆录
Flink CDC 1.0至3.0回忆录 一、引言二、CDC概述三、Flink CDC 1.0:扬帆起航3.1 架构设计3.2 版本痛点 四、Flink CDC 2.0:成长突破4.1 DBlog 无锁算法4.2 FLIP-27 架构实现4.3 整体流程 五、Flink CDC 3.0:应运而生六、Flink CDC 的影响和价值…...
c语言例题7
以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请填空。 #define N 3 #define M 4 void LineMax(int x[N][M]) { int i,j,p; for(i0; i<N;i) { p0; for(j1; j<M;j) …...
【Linux驱动】最基本的驱动框架 | LED驱动
🐱作者:一只大喵咪1201 🐱专栏:《Linux驱动》 🔥格言:你只管努力,剩下的交给时间! 目录 🏀最基本的驱动框架⚽驱动程序框架⚽编程 🏀LED驱动⚽配置GPIO⚽编程…...
前端---表单提交
1. 表单属性设置 <form>标签 表示表单标签,定义整体的表单区域 action属性 设置表单数据提交地址method属性 设置表单提交的方式,一般有“GET”方式和“POST”方式, 不区分大小写 2. 表单元素属性设置 name属性 设置表单元素的名称,…...
[C#]Parallel使用
一、 Parallel的使用 1、Parallel.Invoke2、Parallel.For3、Parallel.Foreach二、 Parallel中途退出循环和异常处理 1、当我们使用到Parallel,必然是处理一些比较耗时的操作,当然也很耗CPU和内存,如果我们中途向停止,怎么办呢&…...
docker container 指定gpu设备
1, 在yaml中 Turn on GPU access with Docker Compose | Docker Docs Example of a Compose file for running a service with access to 1 GPU device: services:test:image: nvidia/cuda:12.3.1-base-ubuntu20.04command: nvidia-smideploy:resources:reserva…...
时间Date
你有没有思考过时间问题: 前端为什么可以直接看见时间格式的数据 后端怎么接受的数据,怎么处理的 一般来说:前端传输来数据都是时间格式的字符串,那么后端需要能够解析时间格式的字符串,归功于JSONFormat ,可以解析…...
前端---css 选择器
1. css 选择器的定义 css 选择器是用来选择标签的,选出来以后给标签加样式。 2. css 选择器的种类 标签选择器类选择器层级选择器(后代选择器)id选择器组选择器伪类选择器 3. 标签选择器 根据标签来选择标签,以标签开头,此种选择器影响范…...
【MybatisPlus快速入门】(2)SpringBoot整合MybatisPlus 之 标准数据层开发 代码示例
目录 1 标准CRUD使用2 新增3 删除4 修改5 根据ID查询6 查询所有7 MyBatis-Plus CRUD总结 之前我们已学习MyBatisPlus在代码示例与MyBatisPlus的简介,在这一节中我们重点学习的是数据层标准的CRUD(增删改查)的实现与分页功能。代码比较多,我们一个个来学习…...
如何将自建的ElasticSearch注册成一个服务
ES 服务管理 注册ES服务 创建一个 Elasticsearch 服务配置文件。 sudo vim /etc/systemd/system/elasticsearch.service 将以下内容复制到 elasticsearch.service 文件中: [Unit] Descriptionelasticsearch Afternetwork.target[Service] Typeforking Useresa…...
360勒索病毒:了解最新变种.360,以及如何保护您的数据
导言: 随着科技的飞速发展,网络安全威胁也在不断演变,.360 勒索病毒成为近期备受关注的一种恶意软件。本文91数据恢复将介绍如何恢复被.360 勒索病毒加密的数据文件,并提供一些建议,帮助你预防这种威胁。 如果您在面对…...
vue使用ElementUI搭建精美页面入门
ElementUI简直是css学得不好的同学的福音 ElementUI官网: Element - The worlds most popular Vue UI framework 安装 在vue文件下,用这个命令去安装Element UI。 npm i element-ui -S step1\先切换到vue的目录下去,注意这里面的WARN不是…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
