深入篇【Linux】学习必备:理解文件权限

news2024/11/28 14:36:31

深入篇【Linux】学习必备:理解文件权限

  • Ⅰ.Linux权限的概念
  • Ⅱ.Linux权限管理
    • ①.文件访问者的分类(访问者的身份)
    • ②.文件类型和访问权限(文件本身的事物属性)
          • 1.文件类型:
          • 2.基本权限:
    • ③.文件权限值的表示方法
          • 1.字符表示方法
          • 2.八进制数值表示法
    • ④.文件访问权限设置方法
          • 1.chmod
          • 2.chown
          • 3.chgrp
  • Ⅲ.Linux权限两大问题:
    • ①.起始权限问题
          • 1.umask
    • ②.目录权限问题
          • 1.粘滞位

Ⅰ.Linux权限的概念

Linux下有两种用户:超级用户(root),普通用户。
普通用户:在Linux下做有限的事情。
超级用户:在Linux下可以做任何事情,不受限制。
区别:超级用户的命令提示符是#,普通用户的命令提示符是$

那在Linux下如何进行用户的切换呢?
这时就需要命令su。

命令:su [用户名]
功能:切换用户。
例如:当root用户想切换到普通用户user时,输入命令su -user,即可从root用户切换到user用户,当普通用户user想切换回root用户时,只需输入su命令即可(root可以省略)。但要输入root用户的密码。

1.root身份下
su -用户名,直接切换成用户。
或者还有一种方法,exit/Ctrl D直接退回普通用户。
2.普通用户下
su -用户名,需要输入相关密码。

如果我们想短暂的对一条指令进行提权的话,可以用sudo command 指令。
但一开始我们用adduser新建的用户,并没有颁发执行sudo,系统是不信任你的,除非未来将普通用户,添加到系统的信任白名单中,提权才有效。

Ⅱ.Linux权限管理

什么是权限呢?
1.权限认证的是身份(权限是和‘人’有关)

2.权限也和事物的属性有关。如文件属性:可读/读写/可执行。

①.文件访问者的分类(访问者的身份)

在文件下,角色权限身份一共有三种:拥有者(uesr) ,所属组(group) ,其他人(other)。

文件和文件目录的所有者:u-User。
文件和文件目录的所有者所在组的用户:g-Group。
其他用户:o-Other。

在这里插入图片描述
而具体的用户有两种,root用户和普通用户,root用户和普通用户的身份都可以是这三种的其中一种。

②.文件类型和访问权限(文件本身的事物属性)

一个文件本身有什么属性呢?它又是如何表示出来的呢?
在这里插入图片描述

我们将所有文件信息展开,那上面的这些信息分别代表着什么意思呢?
在这里插入图片描述
在这里插入图片描述
注意:Linux下文件名后缀没有什么直接意义。

第一位表示的是文件类型,文件都有哪些类型呢?

1.文件类型:

d :表示文件夹,即目录文件。
-: 表示普通文件,如文本文件,可执行程序等。
1:表示软连接,类似于windows的快捷方式。
p:表示管道文件
c:字符设备文件
b:块设备文件(如硬盘,光驱)。
s: 套接口文件。

文件类型有了,那文件都有哪些权限呢?

2.基本权限:

a.读权限( r):read权限对于文件来说,具有读取文件内容的权限;对于目录来说,具有浏览该目录信息的权限。
b.写权限(w):write权限对于文件来说,具有修改文件内容的权限;对于目录来说,具有在该目录下创建和删除文件的权限。
c.执行权限(x):execute对于文件来说,具有执行文件的权限;对于目录来说,具有进入目录的权限。

③.文件权限值的表示方法

1.字符表示方法

在Linux下,r/-表示可读/不可读,w/-表示可写/不可写,x/-表示可执行/不可执行。
每个位置只有是或否,每个文件都具有三种基本权限,而不同的用户也就有不同的文件权限。
在这里插入图片描述

2.八进制数值表示法

而这种权限的表示方法还可以用八进制数值表示。
可读®权限代表数值是4.
可写(w)权限代表数值是2
可执行(x)权限代表数值是1.
在这里插入图片描述

④.文件访问权限设置方法

1.chmod

功能:设置文件访问权限
格式:chmod [用户表示符] 权限 文件名
常用选项:

  • -R递归修改目录文件的权限
    只有文件的拥有者或root权限可以修改文件的权限。

chmod修改文件各用户权限的方式:
①用户表示符:

u:拥有者
g:所属组
o:其他人

②±=权限字符

+:表示给权限范围增加权限
-:表示向权限范围取消权限
=:表示向权限范围赋予权限

比如:

1.chomd u+rwx test.c
表示给test.c这个文件的拥有者(u)增加可读可写可执行权限。
2.chomd g-rw  test.c
表示给test.c这个文件的所属组(g)取消可读可写权限。
3.chomd o+x
表示给test.c这个文件的其他人用户(o)增加可执行权限。

我们该可以用八进制位权限表示来修改文件的访问权限。

chomd 654 test.c
表示test.c这个文件的访问权限被设置成
u的权限是6即可读可写。
g的权限是可读可执行。
o的权限是只可读。
2.chown

功能:修改文件的所有者。
格式:chown [参数] 用户名 文件

比如:

1.chown user1 test.c
将test.c文件的拥有者改成user1.

2.chown -R user1 filetets
将fileetets目录下的所有文件的拥有者都改成user1.
3.chgrp

功能:修改文件的所属组。
格式:chgrp [参数] 用户名 文件
常用选项:

  • -R 递归修改文件或目录的所属组。

比如:

1.chgrp user2 test.c
将test.c文件的所属组改成user2
2.
chgrp -R user2 filetest
将filetest文件里的所有子文件的所属组都改成user2.

Ⅲ.Linux权限两大问题:

①.起始权限问题

1.为什么我们创建文件的默认权限是我们所看到的?
2.为什么普通文件的权限是664?
3.为什么目录文件的权限是775?

【预备知识】:

1.Linux下系统默认给普通文件的起始权限是666.
2.Linux下系统默认给普通文件的起始权限是777.

1.umask

umask称为权限掩码
功能:查看或修改文件掩码。
凡是在umask中出现的权限,不会在最终的文件权限中出现!
新建文件夹的默认权限是0666,新建目录默认权限是0777,但实际上你创建的文件和目录显示的权限并不是这样。原因正是因为创建文件或目录时,要受到权限掩码umask的影响。
超级用户下默认掩码是0022,普通用户下默认为0002.

那结合上面真实创建的文件和目录的起始权限分别是0664 和0775,与默认掩码0002直接存在着什么样的关系呢?
可能你会认为文件或目录最终的权限就是系统默认权限减去默认掩码即可。
但事实上并不是,文件/目录最终的权限的是这样算的:文件/目录起始权限&(~权限掩码)。
先让权限掩码按位取反,然后再和文件起始权限按位或。
在这里插入图片描述
在这里插入图片描述

所以最终权限不受单纯的起始权限-权限掩码,而是起始权限&(~umask)。

修改权限掩码实例:

umask 662
umask 774

我们回到一开始的问题上去,为什么普通文件权限是664呢?是因为权限掩码的存在,那为什么权限掩码要是002呢?
普通文件不需要x权限也可以执行。
而目录必须需要x权限,这样才可以进入目录中。

②.目录权限问题

目录文件中的读和写和可执行代表的意义:
1.读权限:是否允许我们查看指定目录下的文件内容。如果目录没有读权限,则无法用ls等命令查看目录中的文件内容。
2.写权限:是否允许我们在当前目录进行创建,更改,删除。如果我目录没有写权限,则无法在目录中创建文件,也无法在目录中删除文件。
3.可执行权限:是否允许用户进入对于的目录。如果用户没有可执行权限,则无法cd进入目录中。

1.粘滞位

首先我们先看一个问题:小陶想建立一个共享文件,但一不小心建立在了家目录下,但是一个好心人告诉他共享文件是不能建立在家目录下的!!!为什么共享文件无法建立在家目录下?即我们所建立的共享文件不能创建在任何一个家目录下。这是为什么呢?
1.这是因为家目录的权限是700,只有用户本身有权限,用户在家目录下创建的文件,别人都看不到,别说看了,别人连家门口都进不去,因为所属组和其他人都没有x权限,都无法进入用户的家目录下。

共享文件不要建立在家目录下,建立在根目录下就可以了。

然后小陶就将共享文件建立在了根目录下,然后过了几天,小陶发现他的共享文件竟然被人删除了!!!
小陶就很郁闷,他很纠结,他纠结什么呢?
因为只要其他用户有在该目录下有写权限,那么该目录下的文件就可以被他删除。那小陶如果想自己的共享文件不被删除,就得将其他用户的w权限取消,但这就违背了起初的意愿了,因为取消了别人的w权限,别人也无法在这个目录下创建文件了,那这还共享啥呢。所以小陶纠结呀。
但经过深入的学习后,小陶发现Linux中为了解决这个不科学的问题吗,引入了粘滞位。

chmod +t /test/  加上粘滞位
rm /test/abc.c  准备删除test目录下的abc.c文件
rm:是否删除有保护的普通文件? "/test/abc.c"?y
rm:无法删除"/test/abc.c":不允许的操作

当一个目录设置为粘滞位(chomd +t),则该目录下的文件只能
1.超级用户删除。
2.该目录的拥有者删除。
3.该文件的拥有者。

总结:
1.目录的可执行权限表示是否可以在目录下执行命令。

2.当目录没有可执行权限,则无法对目录执行任何命令,甚至cd进入目录都不可以。
就算有读权限也无法进入目录,读取目录里文件内容。

3.当目录中有执行权限,没有读权限,可以对目录执行命令,可以进入命目录里,但目录里的文件无法查看,因为没有读权限。

4.一个文件能不能被删除,不是取决于文件本身属性,而是取决于所处目录的权限。

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

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

相关文章

【活动回顾】Databend 数据库表达式框架设计与实现 @GOTC

5月28日,“全球开源技术峰会 GOTC 2023 ”圆满落幕。在本次会上,Databend 数据库的 优化器 研发工程师 骆迪安作为嘉宾中的一员,在 rust 专题专区分会场进行了一次主题为《 Rust 实现的先进 SQL Parser 与高效表达式执行框架 — Databend 数…

多语言跨境商城源码,出海跨境商城软件开发模式平台

一、多语言跨境商城模式 多商家模式:容纳不同的商家 多用户模式:用户之社区,用户交互,分享和推广 支持扩展:使用现代化的技术架构和设计,包括支持并发访问、分布式数据存储等功能。 采用常用技术&#x…

合工大Java大作业1:货物进销管理系统

问题描述 编写一个Inventory.java完成以下功能(没有学过Java文件处理之前,各位同学可以使用硬编码将数据放进两个Vector变量里。等学过Java文件处理之后,再补充数据文件读取部分): 1.程序首先打开并读取In…

SpringMVC源码分析:SpringMVC九大组件分析(三)

一、概述 SpringMVC九大组件如下图,我将一个个进行介绍。各个组件使用的入口DispatcherServlet.doDispatch是各个组件使用的入口,我们大部分代码都是从这里开始进入的。 二、MultipartResolver 下面是MultipartResolver组件具体的使用流程,…

【UE打包apk过程遇到的报错】

教程遇到的问题UE5 打包android提示 sdk未设置解决方案 UE5打包apk 报错 ERROR: cmd.exe failed with args :app:assembleDebug解决方案 我在打包的时候,日志中的报错信息如下(每个人的报错信息可能不一样,根据报错日志找对应的解决方案&…

扼流圈天线是如何解决RTK的误差源

扼流圈天线是一种用于GPS定位的天线,它将电流流过一圈线圈来产生电磁场,这个电磁场可以用来接收卫星信号。扼流圈天线的优势在于它可以有效地减少多径干扰和多路传播所造成的误差,从而提高定位精度。 对于RTK定位来说,扼流圈天线可…

__LINE__打印出来的值与source insight不一致

一个project里面有几百个文件,有些,__LINE__ 和pc上看到的值总是不一致 在这个函数前重新定义一下line

h5调用微信支付报错,商家存在未配置的参数,请联系商家解决

报错: 商家存在未配置的参数,请联系商家解决 原因: 发起微信支付的域名和项目域名不一致 确认原因: 发起微信支付的域名是需要在微信支付平台(微信商户)进行h5域名的添加配置 项目的域名是 发送请求的…

VS code使用及插件(python、vue)

VS code使用及插件(python、vue) 说明一、下载及安装二、vs code 常规设置三、 pyhton插件四、 vue相关插件 说明 本教程主要内宅vs code使用及vue、python插件vs code 常规设置pyhton插件vue相关插件 一、下载及安装 二、vs code 常规设置 注&#…

vscode配置nodejs

文章目录 前言Nodejs在vscode中的配置1、扩展插件Code RunnerJavaScript(ES6) code snippetLive Server 2、创建配置文件3、调整配置文件内容 前言 npm ERR! enoent This is related to npm not being able to find a file. ‘vue-cli-service’ 不是内部或外部命令&#xff…

内网安全:域内信息收集

目录 环境搭建 域基础知识 工作组和域 现实背景 常规信息收集 方式一:操作系统命令执行 常用总结 方式二:使用CS插件 关键信息收集 密码抓取测试 自动化信息收集工具 ADFind BloodHound域分析使用(渗透流程信息) 从今天开始,将…

第七章 文件和数据格式化

文章目录 第七章 文件和数据格式化7.1 文件的使用7.1.1 文件的类型7.1.2 文件的打开和关闭7.1.3 文件的读写 7.2 数据组织的维度7.2.1 一维数据7.2.2 二维数据7.2.3 高维数据 7.3 一维数据的处理7.3.1 一维数据的表示7.3.2 一维数据的存储7.3.3 一维数据的处理 7.4 二维数据的处…

VS2019 WPF制作OTA上位机(四)串口收发数据

首先说一下,这个上位机是模拟服务器对嵌入式设备发起通信进行OTA升级。如下图所示 上位机发送过程:服务器将数据发送到云端,云端是通信模块的,比如移动/电信的云平台,云端将数据传给通信模块,比如NB模块&a…

【PCIE701】基于PCIE总线架构的高性能数据预处理平台

板卡概述 PCIE701是北京青翼科技的一款基于PCI Express总线架构的高性能数据预处理FMC载板,板卡具有1个FMC(HPC)接口,1个X8 PCIe主机接口,板卡采用Xilinx的高性能Kintex-7系列FPGA作为实时处理器,实现…

知识付费小程序搭建 为有价值的知识买单

以前我们学习写作遇到难题的时候,总喜欢上网搜一下参考资料,但是不知具体从何时起,很多平台内容查看都要钱了。这说明知识付费已经深入到我们的生活中了。再加上疫情爆发这几年,很多教育培训机构都抓住风口,开发了线上…

知乎运营分析平台 — 舰桥平台如何通过 Apache Doris 实现查询速度 10+ 倍提升?

导读:知乎为实现精细化运营,提高运营效率,依赖 Apache Doris 构建了内部统一的运营分析平台——舰桥平台,主要应用于事实接入层、事实建模层和事实运算层等架构核心层的建设,并持续对导入、查询等方面进行性能调优&…

5. 缓存

5. 缓存 5.1.缓存-缓存介绍 MyBatis官方文档 MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。缓存可以极大的提升查询效率。 MyBatis系统中默认定义了两级缓存,一级缓存和二级缓存。 默认情况下,只有一级缓存&…

FSV40罗德与施瓦茨频谱分析仪

R&S FSV40 是一款多功能信号和频谱分析仪,适用于从事射频系统开发、生产、安装和服务工作的用户。 R&S FSV40 是适用于所有通用测量任务的理想仪器——在工作台上、在生产中和在现场。它为最新的蜂窝和无线标准提供数字调制分析,分析带宽高达 16…

科技驱动进化:群硕为企业定制“数字人”,追赶元宇宙时代步伐

你还记得这张图吗? 千万年前,一颗巨型陨石降落地球,爬行动物的黄金时代结束,哺乳动物加速进化,智人成为几十亿人类共同的祖先。 千万年后的今天,在掌握了数字技术以后,人类创造出了一种世界上…

Python学习39:维吉尼亚密码——加密

描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ 凯撒密码的加密强度是很低的&…