Linux基础篇(五)文件权限

news2024/11/27 10:29:23

目录

一、文件权限的概念

二、Linux命令`ll`的结果解析

三、Linux修改权限的两种方法

四、更改文件的拥有者和所属组

五、身份的判定

六、系统掩码

七、删除文件需要的权限

八、粘滞位


一、文件权限的概念

1.是什么?

简单地说就是什么身份的用户能对文件做什么事。

文件权限的核心 = 用户(用户的身份)+ 事务属性(能做的事)
(这样就能表示一个用户能对该文件做什么事)

2. Linux中的权限管理分为三个不同的类别(用户的身份):文件拥有者、同组用户 以及 其他用户 。

3. 常见的权限(能做的事):r:读权限(read);w:写权限(write);x:执行(execute)。


二、Linux命令`ll`的结果解析

1. 文件类型

 


ll指令显示的每列的第一个字符,表明该文件的文件类型。

        eg . 使用ll命令查看文件类型

        


拓:Linux和Windows不同,Linux不以文件后缀来区分文件类型
        (Linux系统不看文件后缀,但可以给自己看,用来区分文件)

        

2.拥有者和所属组和其他用户

        ll指令显示的每列的第12~14个字符是文件的拥有者的用户名,第15~17个字符是文件的所属组的用户名。


拥有者 和 所属组 是用户的一个身份,标签。

3.拥有者,所属组,other 的权限。

ll指令显示的每列的第2~10个字符表示文件的拥有者,所属组,other 的权限。

第2~4个字符表示 拥有者 是否有 读、写、执行 权限。
第5~7个字符表示 所属组 是否有 读、写、执行 权限。
第8~10个字符表示 other 是否有 读、写、执行 权限。

r  :读权限(read)、w :写权限(write)、x :执行(execute)。

有该权限会显示字母,没有该权限就是 - 。

rwx的位置已经固定了,如:有读权限,第一个位置就是r,否则就是 - 。不可能出现 wrx 和 xwr 等情况。

4.ll指令显示的每列的第4个字符串表示文件占用空间大小,单位是字节。

5.ll指令显示的每列的第5个字符串表示文件的最近修改时间。

6.ll指令显示的每列的第6个字符串表示文件名。

总结:

拓1:权限的具体体现

拓2:没有相应的权限:Permission denied

eg. 没有执行权限:


三、Linux修改权限的两种方法

两种方法都要使用chmod指令。(chmod 指令:修改权限。)

1.方法一:

chmod   u/g/o  +/-   r/w/x  文件名

(+加上权限, -删除权限 )

a.修改拥有者(u)的权限:

        chmod  u  +/-   r/w/x  文件名

eg. 删除test.txt文件拥有者的读权限,给拥有者加上执行权限:

(要修改多个权限时 用 ,隔开)

b.修改所属组(g)的权限:

        chmod  g  +/-  r/w/x  文件名

eg.删除所属组的写权限,给拥有者加上执行权限:

c.修改other(o)的权限:

        chmod  o  +/-  r/w/x  文件名

eg.删除所属组的读权限,给拥有者加上写权限:

d.修改所有身份(a)的权限:

        chmod  a  +/-  r/w/x  文件名

eg.删除所有身份的执行权限,给给所有身份加上读权限:

 eg.删除拥有者的读写权限,给所属组加上写权限,删除other的写权限:

(要修改多个权限时 用 ,隔开。)

拓1:权限的具体体现

        cat 就是在读一个文件,需要读权限。

        > 输出重定向 就是在 写一个文件,需要写权限。

        输入文件路径回车 就是执行文件,需要执行权限。

拓2:Permission denied(权限被拒绝)

当没有执行相应操作的权限,会打印该提示。

2.八进制修改法

chmod  XXX  文件名

可以使用chmod 和一个三位的八进制数来修改权限。

eg. chmod 777 test.txt

修改权限,让file.tx文件的所有身份都有读,写,执行的权限:

eg. chmod 664

将文件修改为:拥有者可读可写,所属组可读可写,other只读:

原理:

        因为有和没有恰好是两种状态,可以用0,1二进制表示,一个身份有三个需要判断的权限可以使用一个三位的二进制数来表示该身份有哪些权限,而三位的二进制数又可以转化为一位八进制数,有三个身份(拥有者,所属组,other)的权限要表示,所以我们可以使用一个三位八进制数来表示所有身份的权限。

如:

111表示所有身份都只有执行的权限。

777表示所有身份都只有读,写,执行的权限。

000表示所有身份都没有任何权限。


四、更改文件的拥有者和所属组

方法一:在root用户下强制更改
(在普通用户下无法强制更改)

1.chown  用户名  路径/文件名 : 更改文件的拥有者 为指定用户。

修改目录的拥有者时可以加上选项 -R : 递归处理,将指定目录下的所有文件及子目录一并处理。

2.chgrp  用户名  路径/文件名 :更改文件的所属组为指定用户。

3.chown  用户名:用户名  路径/文件名 : 修改文件的拥有者和所属组为指定用户。
(chown 后面跟两个用户(中间用 : 隔开)即可同时修改文件的拥有者和所属组为指定用户。)

方法二:在命令前加上sudo,以root的权限级别来执行该命令

要使用sudo要先把当前用户加入到信任列表中。添加信任列表需要在root身份下执行。
将用户添加到信任列表不是本章重点,不在这展开讲,想要了解的小伙伴请看:

执行该命令还要输入当前执行该命令的用户的密码。不是你要修改的文件拥有者的用户的密码。

这样可以不切换到root用户直接修改文件的拥有者和所属组。

拓:为什么没有命令可以将用户身份直接修改为other?
因为other不确定。


五、身份的判定

当一个用户对文件进行操作时要先判定改用户对于文件的身份:

看当前用户的用户名来确定身份,是文件的拥有者 或 所属组 或是 other

只判定一次,优先判定拥有者,一旦判定为拥有者哪怕是所属组也不再判定。

(用户可以即是拥有者也是所属组)


六、系统掩码

1. Linux默认:

一个目录被创建,起始权限是从777开始;

一个普通文件被创建,起始权限从 666 开始。


2. 但为什么我们创建出来就不是这个样子?

eg.观察刚创建的文件的权限

因为Linux会通过系统掩码进行一些计算,得到一个新的权限,成为创建出的目录和文件的权限。所以我们创建出来的文件/目录的权限不是666/777。


3. Linux系统默认的系统掩码为0002 。(计算时只取后3位)

eg. 使用umask查看系统掩码:


4. 计算最终权限

        计算过程:最终权限  =  起始权限  & (~系统掩码)

        把权限和系统掩码的3位八进制数 转化为 9位的二进制数(系统掩码的八进制数有4位,但计算时只取后3位),然后把系统掩码的9位二进制数按位取反,两串二进制数再进行按位与,得到最终权限。

eg. 创建目录/普通文件后的权限的计算过程:

所以系统掩码的作用就是系统用来修改刚创建的文件/目录的起始权限,生成最终权限。


5.  使用umask修改系统掩码:

eg. umask 0777:修改系统掩码为 0777:

修改后系统掩码后,计算最终权限时使用修改后的系统掩码。

eg.修改系统掩码为0777后创建文件:


七、删除文件需要的权限

对于本用户不能读和写和执行的文件,我们可以直接使用rm将其删除。这是否意味着删除一个文件不需要什么权限?

出现什么的情况是因为:删除一个文件或目录不是该文件的拥有者和所属组说了算,而是文件的所处的目录说了算,删除目录中的文件/目录需要对该目录具有写权限。

总结:所以能不能删除一个文件/目录,要看该用户有没有 该文件/目录的上级目录 的写权限。

所以一个用户可以在公开的目录下删除另一个用户的文件。(设置公开目录:将目录的other的权限为rwx)

eg. 一个用户在公开的目录下删除另一个用户的文件:


八、粘滞位

0.问题导入

当所有用户共享一个目录,且对该目录具有读写执行权限,能不能做到:

        a.多个用户共享一个目录,能在该目录下,进行读写、创建、执行文件。
        b.但是自己只能删除自己的文件,而不能删除别的用户的文件。

可以通过删除写权限(w)达到目的吗?

        不能,因为删除了目录的写权限,虽然无法删除目录下的文件了,但同时我们也无法在该目录下创建文件。

这个时候我们要用到一个新的权限:粘滞位。

拓:创建公共目录

        公共目录要在根目录(/)下创建,且创建出目录的other的权限改为rwx,才算完成了公共目录的创建。

1.粘滞位的概念

        粘滞位和 r/w/x(读/写/执行) 一样也是一种权限,是系统权限的一个旗标,用符号t表示。

        给目录的other 设置 t(粘滞位)可以做到当多个用户在同一目录下工作时,能读写,创建,删除自己的文件,但不能删除别的用户的文件。

2.设置粘滞位:chmod  +t  mytemp

eg. 给公共目录设置粘滞位权限:

eg. 粘滞位的使用: 

注:

        t是权限x的特殊情况,表示能访问但不能删除。

        t只能给目录设置,且设置设置时不需要指定用户,默认给other。

        粘滞位一般是谁设置,谁才能取消(root)。

        粘滞位,适用于多个用户在同一个目录下工作的情况。

        不用担心别的用户能删除自己目录下的文件,因为一个用户对其他用户的家目录没有任何权限,无法进行任何操作。


拓、常见权限问题

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

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

相关文章

如何在CSS中水平居中一个元素?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用 margin: 0 auto⭐ 使用 Flexbox 布局⭐ 使用绝对定位和负边距⭐ 使用表格布局⭐ 使用网格布局⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅…

【密码学】密码棒密码

密码棒密码 大约在公元前700年,古希腊军队使用一种叫做scytale的圆木棍来进行保密通信。其使用方法是这样的:把长带子状羊皮纸缠绕在圆木棍上,然后在上面写字;解下羊皮纸后,上面只有杂乱无章的字符,只有再次以同样的方式缠绕到同样粗细的棍子上,才能看出所写的内容。快速且不容…

STM32定时器TIM控制

一、CubeMX的设置 1、新建工程,进行基本配置 2、配置定时器TIM2 1)定时器计算公式:(以下两条公式相同) Tout ((ARR1) * PSC1)) / Tclk TimeOut ((Prescaler 1) * (Period 1)) / TimeClockFren Tout TimeOut&…

选读SQL经典实例笔记23_读后总结与感想兼导读

1. 基本信息 SQL经典实例 SQL Cookbook [美]安东尼莫利纳罗(Anthony Molinaro) / 人民邮电出版社 / 2018-07 / 其他 人民邮电出版社,2018年7月出版第1版,2021年12月出版第2版 1.1. 读薄率 1版书籍总字数827千字,笔记总字数30…

sharedPreferences的使用之按钮状态切换的保存

什么是sharedPreferences?有什么用 SharedPreference是Android开发中一个轻量级的数据存储的方式,除了它还有SQLite数据库。它可以将数据以键值对的形式存放到文件中,在需要的时候再取出来使用。相比于去操作数据库,对于一些简单…

缓存穿透,击穿,雪崩之间的区别与联系

1、缓存数据基本流程 通常来说,我们是从数据库将数据查询出来之后,如果数据不为空,则将数据存储在缓存中,下次查询时就直接从缓存查询了,只有查询不到才会从数据库查询。 2、缓存穿透 核心在穿透两个字,穿透了,就说明在查询数据时没有遇到阻碍,直接就查询到了数据库。…

Spring-Cloud-Loadblancer详细分析_2

LoadBalancerClients 终于分析到了此注解的作用,它是实现不同服务之间的配置隔离的关键 Configuration(proxyBeanMethods false) Retention(RetentionPolicy.RUNTIME) Target({ ElementType.TYPE }) Documented Import(LoadBalancerClientConfigurationRegistrar…

记录--浏览器渲染15M文本导致崩溃怎么办

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 最近,我刚刚完成了一个阅读器的txt文件阅读功能,但在处理大文件时,遇到了文本内容过多导致浏览器崩溃的问题。 一般情况下,没有任何样式渲染时不会出现什…

《全生命周期眼健康管理》助力健康科学用眼

8月8日下午,烟台正大光明眼科医院眼健康管理中心张提主任受邀来到烟台市残疾人事务综合服务中心,为残联康复训练教师及相关工作人员进行了《全生命周期眼健康管理》讲座。 烟台正大光明眼科医院眼健康管理中心张提主任 “全生命周期眼健康”这一理念其宗…

u盘为什么提示格式化?u盘提示格式化怎么办

U盘是一种便携式存储设备,在使用U盘的过程中,有时候会出现提示需要格式化的情况。这种情况通常会让人担心自己重要的数据是否会丢失。那么,U盘为什么提示格式化?U盘提示格式化怎么办?在本文中,我们将探讨U盘…

80. 删除有序数组中的重复项 II

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 解题思路:因为数组有序,相等的元素一定相邻,所以可以使用一个变量num统计相等元素的个数,如果当前元素和前一个元素相等&#xff0c…

【雕爷学编程】Arduino动手做(09)---火焰传感器模块3

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…

【java面试题】不定义新变量的情况下交换两个Integer变量

题目: 不定义新变量的情况下交换两个Integer变量,完善swap()方法: public class Main {public static void main(String[] args) {Integer a 10;Integer b 20;swap(a, b);System.out.printf("a is %d,b is %d&q…

TansUNet代码理解

首先通过论文中所给的图片了解网络的整体架构: vit_seg_modeling部分 模块引入和定义相关量: # codingutf-8 # __future__ 在老版本的Python代码中兼顾新特性的一种方法 from __future__ import absolute_import from __future__ import division fr…

制造业为什么要建设数字化供应链

数字化让越来越多的人走向了线上的世界,让那些拥有线上产品或提供线上服务的企业提供了更多流量。 但与此同时,传统制造业遭受了沉重的打击,考虑到防疫要求,很多工厂长期处于人手不足的状态,生产制造效率大幅降低&…

激活函数总结(六):ReLU系列激活函数补充(RReLU、CELU、ReLU6)

激活函数总结(六):ReLU系列激活函数补充 1 引言2 激活函数2.1 RReLU激活函数2.2 CELU激活函数2.3 ReLU6 激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Swish、ELU、SEL…

用python写一个简单的贪吃蛇游戏

入门教程、案例源码、学习资料、读者群 请访问: python666.cn 大家好,欢迎来到 Crossin的编程教室 ! 不知道有多少同学跟我一样,最初接触编程的动机就是为了自己做个游戏玩? Python 虽然并不是一个“为游戏而生”的语言…

给QT添加图片

给QT添加图片 第一步: 添加图片资源文件。

基于深度学习的3D城市模型增强【Mask R-CNN】

在这篇文章中,我们描述了一个为阿姆斯特丹 3D 城市模型自动添加门窗的系统(可以在这里访问)。 计算机视觉用于从城市全景图像中提取有关门窗位置的信息。 由于这种类型的街道级图像广泛可用,因此该方法可用于较大的地理区域。 推荐…

LinearAlgebraMIT_9_LinearIndependence/SpanningASpace/Basis/Dimension

这节课我们主要学习一下(Linear Independence)线性无关,(spanning a space)生成空间,(basis)基和(dimension)维度。同时我们要注意这四个很重要的基本概念的描述对象,我们会说向量组线性无关,由一个向量组生成的空间,子…