【Linux】Linux文件权限的理解

news2025/3/12 17:11:13


💬推荐一款模拟面试、刷题神器 、从基础到大厂面试题:👉点击跳转刷题网站进行注册学习 


目录

一、Shell是什么?

1、Shell承担用户和内核间的翻译工作

2、拒绝用户非法请求,保护内核

3、派生子进程执行用户指令

二、用户切换与提权

1、普通用户与root用户的切换

2、普通用户指令短暂提权

三、文件权限的理解

1、文件权限=角色的权限+文件属性

2、Linux中的三种角色

2.1为什么会存在所属组(grouper)这种角色

3、drwxrwxr-x代表的意义

3.1第一位字母代表的意义

3.2后九位代表的意义

3.3文件权限的字符修改方法

3.4角色的更改

3.5文件权限的八进制修改方法

3.6目录的起始权限及权限掩码umask

4、目录的权限

四、粘滞位(公共目录使用)


一、Shell是什么?

Shell是操作系统外壳程序的统称,Windos中的图形化界面、Linux中的命令行外壳都是外壳程序。CentOS中的外壳程序被称为bash。

1、Shell承担用户和内核间的翻译工作

Shell是命令行解释器。

Linux严格意义上说的是一个操作系统,我们称之为"核心(Kernel)"。但是用户和内核沟通的学习成本很高,所以在内核外部有一层Shell外壳程序,将用户输入的指令翻译传递给内核,内核处理后,将结果返回给Shell,由Shell向用户传达指令的最终结果。

2、拒绝用户非法请求,保护内核

当用户输入非法指令时,shell不会再去询问内核结果,而是直接拒绝用户的非法请求。

3、派生子进程执行用户指令

因为Shell是用户和内核沟通的唯一桥梁,一般Shell不参与指令的执行,而是通过派生子进程的方式执行用户的指令。(子进程挂了,但Shell不会受到影响)

二、用户切换与提权

1、普通用户与root用户的切换

su//切换后路径不变
su -//切换后来到家目录

普通用户切换为root用户需要输入root密码,而root用户切换成普通用户无需 任何验证。

2、普通用户指令短暂提权

sudo whoami

当该用户被添加至etc/sudoers中,sudo为最近的一条指令提权至root,需要输入当前普通用户密码。

在一次密码认证过后,接下来的几分钟使用sudo提权操作,将无需再次输入密码。

为什么sudo提权需要输入当前用户的密码,而不是root密码呢?这样做是为某些被信任的用户,提供最少的执行障碍。而不是直接将root的密码交给员工。

三、文件权限的理解

1、文件权限=角色的权限+文件属性

对于Linux中的文件权限,有的角色对这个文件有可读、可写、可执行的权限,而有的角色却只有可读权限。这是人的权限。

对于文件的可读、可写、可执行的属性,如果一个文件不具备可读权限,那么角色在访问文件时,也是没有可读权限的。

2、Linux中的三种角色

Linux中有三种角色,分别是拥有者(owner)、所属组(grouper)、其他人(other),权限限制的不是用户,而是这个用户当前所处的角色

2.1为什么会存在所属组(grouper)这种角色

举个例子:现在公司有A、B、C等多个部门使用同一台Linux的云服务器,每个小组都有各自的小组成员,所以就有了所属组的概念。把不同的组员放到各自的所属组中,员工无权限访问他组文件,防止项目信息互相泄露。

3、drwxrwxr-x代表的意义

3.1第一位字母代表的意义

第一位字母代表的意义是文件的类型。

在windows中,区分文件类型是通过文件名后缀,而Linux中,文件的类型由第一位字母决定,与文件本身的后缀无关。(Linux中文件后缀作用是帮助用户快速区分这个文件的类型或者gcc等工具是需要关注后缀)

d:目录文件

-:普通文件(源代码、库文件、可执行程序、文档压缩包等)

c:字符设备文件(键盘、显示器等串口设备)

b:块设备(硬盘、光驱等)

l:软链接文件(类似于Windows中的快捷方式)

p:管道文件

s:socket套接口文件

3.2后九位代表的意义

后九位三三为一组,分别代表拥有者、所属组、其他用户的权限。其中r代表可读,w代表可写,x代表可执行。-代表不具备该权限。

3.3文件权限的字符修改方法

chmod u-r text.c//将text.c的拥有者减去可读权限
chmod g+x text.c//将text.c的所属组加上可执行权限
chmod o+rwx text.c//将text.c的其他用户减去读、写、可执行权限
chmod u+rx,g-w,o-rwx text.c//可以组合操作权限的增减
chmod a-rwx text.c//对所有角色减去读、写、可执行权限

只有文件的拥有者和root才能对文件角色的权限进行更改。

root不受角色权限的约束。

3.4角色的更改

sudu chown jly2 text.c//把text.c的拥有者改成jly2
sudo chgrp jly2 text.c//把text.c的所属组改成jly2
sudo chown jly2:jly2 text.c//把text.c的拥有者、所属组改成jly2

拥有者、所属组更改后,other也变了,所以other不用特意改。

3.5文件权限的八进制修改方法

三三为一组,非-位用二进制1填充,-位用0填充,得到角色权限的二进制,在将这些二进制转化为八进制,即可使用八进制来表达角色的权限。

chmod 000 text.c//用权限的八进制更改text.c的权限

3.6目录的起始权限及权限掩码umask

Linux规定,目录的起始权限从777开始,普通文件的起始权限从666开始。

[jly@VM-4-11-centos text]$ umask
0002//第一位不管,系统会默认配置好权限掩码为002,即000 000 010

凡是在umask中出现的权限,必须在起始权限中去掉,即最终权限=起始权限&(~umask)。

所以,我们创建出来的目录的权限是775(rwx rwx r-x),普通文件的权限是664(rw- rw- r--)。

umask 0444//更改umask的值,即100 100 100

修改后创建出来的目录权限变为333,普通文件权限变为222。

4、目录的权限

目录的r权限:能否查看目录中的文件。

目录的w权限:能否在目录中创建文件。

目录的x权限:能否进入、执行目录中的文件

所以,目录的起始权限从777开始,是因为所有角色都需要x权限进入目录。

四、粘滞位(公共目录使用)

Linux系统中有很多人,我们需要在一个公共的目录下,进行临时文件的操作(增删查改)。这个公共目录由root来创建。

在这个公共目录中,通过文件自身的权限来约束不同的角色,但是无法阻止其他用户私自删除这些文件。因为在目录中删除一个文件,与这个文件本身无关,与它所处的目录的写入权限有关。

这个公共目录的拥有者和所属组是root,粘滞位会限制other的权限。

chmod +t /mytmp   //在/目录下的mytmp目录中加上粘滞位
drwxrwxrwx
drwxrwxrwt

加上粘滞位后,该公共目录的other的x权限变为t,也就是该目录下other的可执行权限变为粘滞位,其他用户无权删除不属于他的文件。

五、权限总结

1、目录的可执行权限是表示你可否在目录下执行命令。

2、如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目录, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)

3、如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

 14天阅读挑战赛 

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

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

相关文章

SpringCloud

SpringCloud 三 本章知识点 3.1 项目架构演变 3.1.1 单体应用架构 部署到一个war里 部署到一个web容器里(如tomcat) 公用一个DB 优点: 容易测试 容易部署缺点: 开发效率低 代码维护难 部署不灵活(如构建时间特别长&#xff0…

人工智能轨道交通行业周刊-第19期(2022.10.17-10.23)

本期关键词:首都智慧地铁、AI四小龙、文本生成视频、低光照目标检测、天窗、电务人员 1 整理涉及公众号名单 1.1 行业类 RT轨道交通中关村轨道交通产业服务平台人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟V…

四非到保研厦大,我们还有多少路要走----技术人的保研之路

前言: “Hello,大家好我叫是Dream呀!”在1024程序员节到来之际,我想和大家一起分享一下技术人生的故事----我的学长2022年从四非保研至厦大的经验和经历,希望大家可以耐心看完,收获技术力量,更加…

Java面试题

1、JDK 、JRE和JVM 的区别? JDK,java development kit java开发工具包,为java程序提供开发和运行环境JRE, java runtime environment java运行环境,为java程序提供必须的运行环境JVM, java virtual mach…

RayVentory以改进IT的分析,RayVentory原始数据之间轻松切换

使用KeyCloak进行SSO(单点登录)-使用单点登录解决方案,并直接与KeyClok交互。 特定于公司的数据丰富—使用产品所有者、价格或许可证信息等信息轻松丰富您的数据,以获得所需数据的综合视图。 用于更深入数据管理的新连接器-添加了许多新连接器&#xff0…

Vue3中 响应式 API ( readonly、shallowReadonly、toRaw、markRaw ) 详解

传送门:Vue3中 响应式 API ( reactive、ref、toRef、toRefs ) 详解 传送门:Vue3中 响应式 API( shallowReactive、shallowRef、triggerRef 、customRef )详解 1. readonly 函数 接受一个对象 (不论是响应式还是普通的) 或是一个…

深度学习visio作图技巧

目录 1.不显示跨线 2.调节连接线拐弯 3.方框与连接线反应 4.设计一个卷积块/特征图 5.设计一个特征图方块 1.不显示跨线 不显示跨线:设计→连接线,取消显示 跨线的勾选 2.调节连接线拐弯 连接线拐弯:按住shift拖动线条即可控制连接线拐…

高数(下) 第十二章:无穷级数

文章目录Ch12. 无穷级数(一) 常数项级数正项级数交错级数任意项级数4个特殊的常数项级数收敛级数的性质(针对任意项级数)常数项级数的审敛法1.正项级数审敛法(判别法)(1)比较判别法(2)比较审敛法极限形式(3)比值法(4)根值法(5)收敛的充要条件(6)绝对收敛…

Spring Boot 篇四: Spring Data JPA使用SQL Server

本文目录SQL Server Express的安装或直接DockerSQL Server JDBC DriverTCP/IP 链接端口Integrated SecuritySSL总结本篇介绍篇一至篇三中用到的JPA链接SQL Server的具体情况以及实战过程中可能遇到的问题。 SQL Server Express的安装或直接Docker 具体的下载和安装教程&#…

sanic:通过dockerfile部署

简介:长期以来,环境一直是部署的难题。如果您的项目中有冲突的配置,您将不得不花费大量时间来解决它们。幸运的是,虚拟化为我们提供了一个很好的解决思路。Docker 就是其中之一。 历史攻略: sanic框架:简…

内网渗透体系学习1

工作组 工作组(Work Group)是计算机网络的一个概念,也是最常见和最普通的资源管理 模式,就是将不同的计算机按照功能或部门分别置于不同的组。通过创建不同的 工作组,不同的计算机可以按照功能或部门归属到不同的组内,整个组织的网…

XSCTF联合招新赛-热身赛(部分WP)

由于没有多少时间答题,抽空在划水的时候做了一两道题目.比赛已经结束了24小时了。特把写的WP分享一下,欢迎各位大佬进行指点。 文章目录warm_up头头是道B45364EZphpeasy_sqlbaigeiRSAimage1image2image3image42^11warm_up 只有虔诚的嘉心糖才能成功拿到flag 地址:4…

5G核心网技术基础自学系列 | 语音业务

书籍来源:《5G核心网 赋能数字化时代》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G核心网技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 3.9.1 5G语音概述 除了用于机器之…

libusb系列-003-Linux下libusb源码编译

libusb系列-003-Linux下libusb源码编译 文章目录libusb系列-003-Linux下libusb源码编译摘要源码下载及解压下载源码解压下载的源码压缩包打开终端准备编译环境安装make dh-autoreconf安装 libudev-dev编译错误的教程增加执行bootstrap.sh指令再编译make安装库确认下关键字&…

C语言中的文件操作那些事儿~~

是时候该学着操作文件了什么是文件文件种类文件名为什么要使用文件文件的打开和关闭文件的顺序读写fgetc/fputcfgets/gputsfscanf/fprintffread/fwrite文件的随机读写fseekftellrewind文件读取结束的判断文件缓冲区男人过了二十岁就要学着沉稳,遇到问题不要慌&#…

【Java】异常

看似不起波澜的日复一日 会突然在某一天让人看到坚持的意义 目录 1.认识异常 1.1 异常的概念 1.2 常见的异常 2.异常的体系结构 3.异常的分类 3.1 编译时异常 3.2 运行时异常 4.异常的处理 4.1 事前防御型 4.2 事后认错型 5.事后认错型处理 5.1 异常的抛出…

第22章 软件安装 RPM/ YUM

上章节是用源代码来编译完成; 发商编译好之后直接把可执行文件发布给用户来安装也是一种方法,类似于windows下的安装; 客户端取得这个文件后,只要通过特定的指令来安装, 那么该软件文件就会依照内部的脚本来检测相依的…

C++数据结构之堆栈

主要参考资料:01.堆栈基础知识 | 算法通关手册 (itcharge.cn)01.堆栈基础知识 | 算法通关手册 (itcharge.cn) 本文主要采用C实现,而参考资料主要采用python实现,可以相互结合食用。 基础知识 定义 堆栈(Stack):简称为…

MySQL数据库学习(4)

DQL分组查询 语法: SELECT 字段列表 FROM 表名[ WHERE条件 ] GROUP BY 分组字段名 [HAVING分组后过滤条件]; 我们发现分组查询中有两个条件,这两个条件的区别是什么呢?执行时机不同: where是分组之前进行过滤,不满足where条件&a…

基于SSM的疫情管控系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…