Linux 之五:权限管理(文件权限和用户管理)
1. 文件权限
在Linux系统中,文件权限是一个非常基础且重要的安全机制。它决定了用户和用户组对文件或目录的访问控制级别。
每个文件或目录都有一个包含9个字符的权限模式,这些字符分为三组,每组三个字符,分别对应文件所有者的权限、所属组的权限和其他用户的权限。
具体来说,这三个权限位组按顺序排列如下:
- 文件所有者(Owner)的权限
- 所属组(Group)的权限
- 其他用户(Others)的权限
每个权限位组内的三个字符代表读(r)、写(w)和执行(x)三种权限:
r
(Read):允许读取文件内容(对于目录,意味着可以列出其下的文件列表)w
(Write):允许修改或删除文件内容(对于目录,意味着可以在该目录下创建、移动或删除文件)x
(Execute):允许运行程序脚本或进入目录(对于目录,意味着可以通过cd命令进入该目录)
当某个权限不存在时,则用 -
来代替相应的字符。
此外,还有一种特殊的情况,如果一个文件设置了suid、sgid或者sticky bit,那么权限位上可能出现s
、S
、t
和T
等符号,它们分别表示:
s
或S
:设置了setuid/setgid位,表示执行该文件时将拥有文件所有者的权限(对于可执行文件)或临时加入到文件所在组(对于目录)。t
或T
:只针对目录,设置了粘滞位(sticky bit),表示即使非文件所有者或所在组成员也可以删除或修改自己的文件,但不能删除其他用户的文件。
例如,一个文件可能有如下的权限设置:
-rwxr-xr--
这表示:
- 文件所有者具有读(r)、写(w)和执行(x)权限。
- 所属组具有读(r)和执行(x)权限,但没有写(w)权限。
- 其他用户只有读(r)和执行(x)权限,同样没有写(w)权限。
使用 ls -l 或 ll 命令时:
[root@zhangpeng mydir]# ll
total 8
drwxr-xr-x. 3 zhang zhang 68 Aug 14 17:35 a
-rw-r--r--. 1 zhang zhang 93 Aug 16 10:00 Test1.java
-rw-r--r--. 1 zhang zhang 0 Aug 14 17:34 Test5.java
-rw-r--r--. 1 zhang zhang 106 Aug 16 09:48 Test.java
-rw-r--r--. 1 zhang zhang 0 Aug 14 17:34 Test.txt
从上面文件详细信息列表中,可以查出文件操作权限及所属用户、用户组、时间、大小等信息
drwxr-xr-x :
d :表示目录 (文件类型)
- 当为 d 则是目录
- 当为 - 则是文件;
- 若是 l 则表示为链接文档(link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
rwx: 表示可读可写可执行(文件所属用户)
r-x: 表示可读不可写可执行 (文件所属组)
r-x : 表示可读不可写可执行 (Other 其他用户)
数字模式:
rwx: 111 ---7
r-- : 100 ---4
r-x : 101 ----5
举例:
-rw-r--r--. 用数字表示是: 110 100 100 转为十进制 644 。
修改文件所属
chown - change file owner and group
[root@wang dir]# ll
total 16
drwxr-xr-x. 4 root root 29 Aug 24 03:17 dest
drwxr-xr-x. 2 root root 107 Aug 24 03:08 newdir
-rwxr--r-x. 1 root root 0 Aug 24 03:23 testfile.txt
-rw-r--r--. 1 root root 0 Aug 24 04:13 Test.java
-rw-r--r--. 1 root root 61 Aug 24 04:14 Test.xx
-rwxr-xr--. 1 root root 13 Aug 24 04:29 T.java
-rw-r--r--. 1 root root 8 Aug 24 03:06 TT.txt
-rw-r--r--. 1 root root 23 Aug 24 04:34 Word.java
drwxr-xr-x. 2 root root 74 Aug 24 03:17 xyz
[root@wang dir]# chown zhang newdir
[root@wang dir]# ll
total 16
drwxr-xr-x. 4 root root 29 Aug 24 03:17 dest
drwxr-xr-x. 2 zhang root 107 Aug 24 03:08 newdir
-rwxr--r-x. 1 root root 0 Aug 24 03:23 testfile.txt
-rw-r--r--. 1 root root 0 Aug 24 04:13 Test.java
-rw-r--r--. 1 root root 61 Aug 24 04:14 Test.xx
-rwxr-xr--. 1 root root 13 Aug 24 04:29 T.java
-rw-r--r--. 1 root root 8 Aug 24 03:06 TT.txt
-rw-r--r--. 1 root root 23 Aug 24 04:34 Word.java
drwxr-xr-x. 2 root root 74 Aug 24 03:17 xyz
[root@wang dir]#
2.用户管理
查看用户信息
1)su username 切换用户名 2)whoami 查看当前用户
[root@zhangpeng mydir]# whoami
root
3)id: 查看当前用户的编号,所属组号,所属组的信息
[root@zhangpeng mydir]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
4)id zhang: 查看zhang用户的编号,组号等信息
[wangwu@zhangpeng ~]$ id zhang
uid=1000(zhang) gid=1000(zhang) groups=1000(zhang)
5)groups: 查看当前用户所属组
[wangwu@zhangpeng ~]$ groups
wang
6)groups zhang: 查看用户zhang所在组
[wangwu@zhangpeng ~]$ groups zhang
zhang : zhang
7)用户信息文件: /etc/passwd 存储用户账号 /etc/group 存储组账号 /etc/shadow 存储用户账号的密码 /etc/gshadow 存储用户组账号的密码
添加用户
8)添加组
[root@wang ~]# groupadd zhou
[root@wang ~]# useradd zhouyu -g zhou
[root@wang ~]# id zhouyu
uid=1010(zhouyu) gid=1009(zhou) groups=1009(zhou)
9)添加用户
[root@zhangpeng wangwu]# useradd lisi -g li ## 添加用户时,指定所属组 -g
[root@zhangpeng wangwu]# useradd li -g li
[root@zhangpeng wangwu]# id li ## 查看指定用户所属组
uid=1006(li) gid=1004(li) groups=1004(li)
useradd zhang # 默认创建 zhang 用户,同时创建同名zhang的组。
[root@zhangpeng wangwu]# useradd zhao
[root@zhangpeng wangwu]# id zhao
uid=1007(zhao) gid=1007(zhao) groups=1007(zhao)
重置密码
passwd
[root@wang ~]# passwd caozhi
Changing password for user caozhi.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@wang ~]#
用户创建成功后,默认会在 /home 目录下自动创建以用户名为目录名的一个目录。目录直接所属新增的这个用户
[root@wang etc]# ls /home
caopi caozhi guan li lisi liu wang wangwu zhang zhangsi zhao
[root@wang etc]#
用户删除
userdel username : 注意 删除时,不能删除关联的 home 下的目录及其他附属信息
userdel -r username : 彻底删除,删除/home 目录及关联其他信息
注意:删除用户时,此用户是组中最后一个用户,会关联删除组
[root@wang home]# useradd huang
[root@wang home]# id huang
uid=1010(huang) gid=1010(huang) groups=1010(huang)
[root@wang home]# userdel -r huang
[root@wang home]#
用户组删除
[root@wang home]# useradd huang # 同时创建组
[root@wang home]# tail -3 /etc/group # 查看组
cao:x:1008:
zhou:x:1009:
huang:x:1010:
[root@wang home]# groupdel huang # 删除组 不能删除存在用户的组
groupdel: cannot remove the primary group of user 'huang'
[root@wang home]# [root@wang home]# groupadd zhang # 创建空组
[root@wang home]# groupdel huang # 可以直接删除成功
用户权限
[root@wang home]# ll
total 4
drwxr-xr--. 3 wangliu wang 132 Aug 24 09:47 wangliu # 其他用户只读
drwxr-x---. 3 wangwu wang 78 Aug 24 09:42 wangwu
drwxr-x---. 15 zhang zhang 4096 Aug 24 08:54 zhang
drwx------. 5 zhangsan zhang 107 Aug 24 09:47 zhangsan
[root@wang home]# su zhangsan
[zhangsan@wang home]$ cd wangliu # 当前zhangsan 不能进入到r-- 目录中,因为没有执行权限
bash: cd: wangliu: Permission denied
[zhangsan@wang home]$ ls wangliu # 可以查看文件下文件,可以使用 ls
ls: cannot access wangliu/Test2.java: Permission denied
ls: cannot access wangliu/Test3.java: Permission denied
ls: cannot access wangliu/Test4.java: Permission denied
Test2.java Test3.java Test4.java
相关文章:

Linux 之五:权限管理(文件权限和用户管理)
1. 文件权限 在Linux系统中,文件权限是一个非常基础且重要的安全机制。它决定了用户和用户组对文件或目录的访问控制级别。 每个文件或目录都有一个包含9个字符的权限模式,这些字符分为三组,每组三个字符,分别对应文件所有者的权限…...

基于YOLOv8深度学习的葡萄病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战
《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…...
MySQL 在聚合函数查询的结构中继续过滤
HAVING HAVING 关键字和 WHERE 关键字都可以用来过滤数据,且 HAVING 支持 WHERE 关键字中所有的操作符和语法,如果想要从 GROUP BY 分组中进行筛选的话,不是用 WHERE 而是使用 HAVING 来进行聚合函数的筛选。 语法 SELECT <列名1>, <列名2>,…...

UE4.27_ParticleSystem(没写完的材料)
UE4.27_ParticleSystem(没写完的材料) 参考实例: UE4[蓝图]下雪效果及雪的材质的实现...

腾讯云轻量服务器流量用完了怎么办?停机吗?
腾讯云轻量服务器流量用完了怎么办?超额流量另外支付流量费,流量价格为0.8元/GB,会自动扣你的腾讯云余额,如果你的腾讯云账号余额不足,那么你的轻量应用服务器会面临停机,停机后外网无法访问,继…...
块级作用域、变量提升
1.块级作用域 JS 中作用域有:全局作用域、函数作用域。没有块作用域的概念。ECMAScript 6(简称 ES6)中新增了块级作用域。块作用域由 { } 包括,if 语句和 for 语句里面的{ }也属于块作用域。 2.变量提升 如果变量声明在函数里面,则将变量声…...
c# 连接oracle 及对应获取数据集
1、数据库配置xml,首先连接成功后会自动创建xml并保存到对应xml,如下 static string ConnPath AppDomain.CurrentDomain.BaseDirectory "ConnOrcle.xml"; 声明xml名称,便于后续写入对应数据库参数 2、创建xml /// <summar…...

JS直接量及其相关对象
什么是直接量 直接量是指不需要创建对象就可以直接使用的变量。ES中的直接量主要有三种类型:表示字符串的string类型、表示数字的number类型和表示true/false的boolean类型。当我们直接将值赋给变量后,ES就会自动判断其类型,而且当参数发生变…...

一 windso10 笔记本刷linux cent os7.9系统
1:准备材料 16G以上U盘, 笔记本一台 镜像选了阿里云镜像:centos-7-isos-x86_64安装包下载_开源镜像站-阿里云 软件:链接:https://pan.baidu.com/s/13WDp2bBU1Pdx4gRDfmBetg 提取码:09s3 2:把镜像写入U盘,本人已经写入好了,选择镜像,点开始就是,确定等…...

118.龙芯2k1000-pmon(17)-制作ramdisk
目前手上这个设备装系统不容易,总是需要借助虚拟机才能实现。 对生产就不太那么友好,能否不用虚拟机就能装Linux系统呢? 主要是文件系统的问题需要解决,平时我们一般是用nfs挂载后,然后对硬盘格式化,之后…...

IP-guard邮件管控再升级,记录屏幕画面,智能阻断泄密邮件
邮件是工作沟通以及文件传输的重要工具,却也成为了信息泄露的常见渠道。员工通过邮件对外发送了什么内容,是否含有敏感信息都无从得知,机密通过邮件渠道外泄也难以制止。想要防止企业的重要信息通过邮件方式泄露,我们不仅需要通过技术措施对外发邮件的行为进行规范,也要对…...
#LLM入门|Prompt#2.10_评估、自动化测试效果(下)——当不存在一个简单的正确答案时 Evaluation Part2
上一章我们探索了如何评估 LLM 模型在 有明确正确答案 的情况下的性能,并且我们学会了编写一个函数来验证 LLM 是否正确地进行了分类列出产品。 在使用LLM生成文本的场景下,评估其回答准确率可以是一个挑战。由于LLM是基于大规模的训练数据进行训练的&am…...

round四舍五入在python2与python3版本间区别
round()方法返回数值的小数点四舍五入到n个数字。 语法 以下是round()方法的语法: round( x ,n) 参数 x --这是一个数值,表示需要格式化的数值 n --这也是一个数值,表示小数点后保留多少位 返回值 该方法返回 数值x 的小数点四舍五入到n个数字 …...
新概念英语第二册(73)
【New words and expressions】生词和短语(9) record-holder 纪录保持者 truant n. 逃学的孩子unimaginative adj. 缺乏想像力的shame n. 惭愧,羞耻 hitchhike v. 搭便车旅行 m…...

Vue项目实战-空间论坛(2)
项目实战 实现userlist页面 获取userlist列表,可使用ajax,axios 实现 这里采用ajax实现,需要添加Jquery依赖,然后在UserListView.vue中引入 在UserListView.vue组件的入口函数中定义users变量,并引入ref 使用ajax从云端动…...
小老虎吃汉堡,认识continue和break
continue;//结束本次循环,执行下面的循环 break; //结束本次及以后的循环,执行循环下面的代码1. /*小老虎在吃汉堡,但是第三个汉堡上被挤了芥末,不能吃,跳过去又吃第四、五个*/ for (int i1;i<5;i){if (i3){contin…...
docker搭建zero-ui
确保你已经安装了Docker和Docker Compose。如果没有,请参照官方文档安装:Docker 和 Docker Compose。 使用 Docker CLI 获取 Zero-UI 镜像: 首先,你需要从Docker Hub获取Zero-UI的Docker镜像。你可以使用 docker pull 命令来下载它。 docker…...

187基于matlab的弹道目标跟踪滤波方法
基于matlab的弹道目标跟踪滤波方法,扩展卡尔曼滤波(extended Kalman filter, EKF)、转换测量卡尔曼滤波(conversion measurement Kalman filter, CMKF)跟踪滤波,得到距离、方位角、俯仰角误差结果。程序已调…...
讲给自己听的的技术---WMS
标题一 点题 为什么我会说,这是说给自己听的了?做项目有三个月了,外加之前三个月的自学,自我感觉对WMS系统有了一点了解,今天三月九号晚上九点二十,就让我自己和自己说说吧。 标题二 WMS的职责是什么…...
在Java中,请详细讲解并发、多线程、异步的区别和联系
在Java中,请详细讲解并发、多线程、异步的区别和联系 并发、多线程、异步是Java编程中与并行处理相关的三个重要概念,它们之间既有区别也有联系。 并发(Concurrency): 并发是指在同一时间段内,多个任务或…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...