Linux权限的讲解

目录

1、用户的分级

2、用户的身份

3、文件的权限属性

3.1 文件类型

4、chmod

4.1 用八进制形式更改权限 

5、chown与chgrp

6、umask 

结语


前言:

        在Linux下虽然一切都是文件,但是由于文件的权限不一样,导致访问或更改文件存在局限性,文件有三种权限:r w x,分别对应‘读’,写‘,’执行‘,他们各自的作用如下:

        1、r-读:对于普通文件来说,r表示可以浏览普通文件的内容,对目录来说,r表示可以浏览该目录下的所有信息。

        2、w-写:对于普通文件来说,w表示可以更改该普通文件的内容,对目录来说,w表示可以添加、删除、移动该目录下的任何文件。

        3、x-执行:对于普通文件来说,x表示可以执行该普通文件(通常只有可执行文件才会有x权限),对目录来说,x表示可以进入该目录,因此若一个目录没有x权限,纵使该目录有rw权限也无济于事,因为没有x权限意味无法cd该目录

1、用户的分级

        在Linux下有两种级别的用户:超级用户(root),普通用户。所有的权限规则仅限于普通用户,超级用户则不被这些权限所束缚,通过指令su [用户],可以切换不同的用户,具体操作如下:

        并且root可以随意切换全部的普通用户且无需密码,而普通用户切换至root需要root的密码。 

2、用户的身份

        上述所说root不受权限的约束,因此本文所有权限操作都是作用在普通用户之间。虽然普通用户都是普通用户,但是他们对于不同的文件拥有不同的身份,就好比a在b的家附近买了一个房子,那么a就是这个房子的主人身份,而b对于该房子是邻居身份。

        一个文件可以对应三种用户身份,分别是:拥有者、所属组、其他者(other),比如用户a创建了一个文件test,那么这个test的拥有者就是a,所属组也是a(表示该文件所在的组是a组),具体如下图:

         就上图而言,因为当前用户是zh,若把当前用户切换至另一个普通用户,则当前用户对于以上的文件来说就是其他者(other)。虽然Linux的文件属性没有other的选项,但是只要一个用户既不是文件的拥有者,又不在该文件的所属组内,则该用户就是该文件的其他者(other)

3、文件的权限属性

         上文提到文件的权限分为:r w x,并且一个文件有三种用户身份,每种身份都有属于该身份的可读、可写、可执行权限,在Linux下他们的表现形式是这样的:


        细节图如下(用test.c的权限属性来举例):

         test.c的权限属性表示该文件的拥有者可以对该文件进行读写操作,该文件所属组的成员也可对该文件进行读写操作,但是其他者只能读该文件的内容却不能写该文件,最后所有人都不可执行test.c文件。

3.1 文件类型

        上述文件的权限属性的左边一列表示该文件的类型,如下:

文件的类型有以下几种:

        1、d表示目录。

        2、-表示普通文件。

        3、b表示块设备文件,比如磁盘。

        4、p表示管道文件。

        5、l表示链接文件,比如快捷键(也有点像指针)。

4、chmod

        chmod是一个可以修改权限属性的指令,值得注意的是只有文件的拥有者才可以使用chmod对文件进行权限的更改(root除外),他的格式是:chmod 选项 期望的权限 对象文件。 使用chmod时,还需要记住一下几个标识符:

        u表示拥有者,g表示所属组,o表示其他者,a表示三者全部。

        +表示权限的添加,-表示权限的去除,=表示只保留该权限,其他的权限全部去除。

        具体示例如下:

         测试a和=:

4.1 用八进制形式更改权限 

        上述更改权限方式采用的是标识符形式,还有另一种更改权限的方式,即八进制形式更改权限,具体如下操作:

         比如我想让hello.c的拥有者和所属组权限是可读不可执行,其他者的权限是仅可读,那么用八进制形式的操作如下:

5、chown与chgrp

         chown可以更改文件的拥有者,chgrp可以更改文件的所属组,值得注意的是,这两个指令都只能在root用户下实现,具体操作如下:

6、umask 

        在Linux下,当我们创建了一个普通文件或者一个目录,他们的起始权限默认为666和777,但是当我们实践过后发现默认的权限不是666和777,具体如下图:

        发现是775和664,原因就是文件的起始权限并不代表文件的最终权限,而我们看到文件的是其最终权限,在这个过程中,文件的起始权限因为受到了umask(权限掩码)的影响,导致权限发生了变化,具体变化为:最终权限=起始权限&(~umask)。而umask的值是0002,第一位数表示该值为八进制,因此后面三位才是有效位。

        umask值在Linux下显示如下:


        所以可以解释为什么创建出来的普通文件和目录的权限是775和664了:

结语

        以上就是关于Linux下权限的讲解, Linux的权限分为可读可写可执行三种,而一个文件有三种对应的身份关系:拥有者、所属组、其他者,每个身份都有三种权限,因此一个文件总共有九个权限,可以在文件的权限属性中观察到。

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

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

相关文章

MySQL 常见和不常见的所有查询语句

介绍: MySQL 是一个功能强大的关系型数据库管理系统,支持丰富的查询语句,用于从数据库中检索、插入、更新和删除数据。本文将介绍 MySQL 中常见和不常见的所有查询语句,并为每个语句提供示例。 常见查询语句: 1.sel…

Web App 入门指南:构建预测模型 App 的利器(shiny)

Web App 入门指南:构建预测模型 App 的利器 简介 近年来,随着机器学习和人工智能技术的快速发展,预测模型在各行各业得到了广泛应用。为了方便地部署和使用预测模型,将模型构建成 Web App 是一种非常好的选择。Web App 无需下载…

【leetcode面试经典150题】29.三数之和(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

Bitmap OOM

老机器Bitmap预读仍然OOM&#xff0c;无奈增加一段&#xff0c;终于不崩溃了。 if (Build.VERSION.SDK_INT < 21)size 2; 完整代码&#xff1a; Bitmap bitmap; try {//Log.e(Thread.currentThread().getStackTrace()[2] "", surl);URL url new URL(surl);…

salesforce为不同的profile设置不同的域名,不同域名之间账号不互通

在Salesforce中&#xff0c;你可以通过设置不同的 My Domain 来实现不同的 profile 使用不同的域名&#xff0c;并确保这些域名之间的账号不互通。My Domain 是 Salesforce 提供的定制域名功能&#xff0c;允许你为 Salesforce 组织设置自定义的域名。 以下是一般的步骤&#…

nginx配置nacos返向代理

要配置Nginx作为反向代理服务器以便通过https访问Nacos集群&#xff0c;并且同时支持http到https的重定向&#xff0c;你需要编写一个Nginx配置文件。这个配置文件不仅需要处理SSL终端和重定向&#xff0c;还需要将流量代理到你的Nacos集群。 以下是一个基本的Nginx配置示例&a…

python|map

# 定义一个平方函数 def square(x): return x ** 2 # 创建一个数字列表 numbers [1, 2, 3, 4, 5] # 使用 map 函数将平方函数应用于列表中的每个元素 squares map(square, numbers) #将numbers绑定上一个函数 print(type(square)) print(square)# 将结果转换为列表…

【Hadoop】Hive导入导出数据指南

穿新衣吧 剪新发型呀 轻松一下Windows98 打扮漂亮 18岁是天堂 我们的生活甜得像糖 穿新衣吧 剪新发型呀 轻松一下Windows98 以后的路不再会有痛苦 我们的未来该有多酷 &#x1f3b5; 房东的猫《new boy》 Apache Hive 是一个基于Hadoop的数据仓库工具&…

【CSS】背景模糊,不模糊主体文字

问题 背景模糊&#xff0c;不模糊文本 效果图 t1 t2 t3 实现思路 自定义css变量存储图片地址&#xff0c;方便后期更改使用伪元素实现背景模糊达到不遮挡主体文本 transform: scale(1.5)吧图片放大1.5倍&#xff0c;避免设置背景模糊出现白边。 overflow: hidden 超出隐藏&…

上海人工智能实验室的书生·浦语大模型学习笔记(第二期第三课——下篇)

书生浦语是上海人工智能实验室和商汤科技联合研发的一款大模型&#xff0c;这次有机会参与试用&#xff0c;特记录每次学习情况。 一、基础作业 2、在 InternLM Studio 上部署茴香豆技术助手 本次选用 InternLM2-Chat-7B 作为本地基础模型&#xff0c;同时用智浦的GLM作为远…

论文分享 | FAST'23 阿里云提出的针对SMR优化的存储引擎SMRSTORE

今天分享的一篇最近阅读的论文是FAST23的SMRstore: A Storage Engine for Cloud Object Storage on HM-SMR Drives。 https://www.usenix.org/conference/fast23/presentation/zhou 这篇文章是由阿里巴巴公司完成的&#xff0c;在这篇文章中&#xff0c;团队针对SMR的特性提出了…

C++ AVL树底层实现原理

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;C知识分享⏪   &#x1f69a;代码仓库:C高阶&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C知识   &#x1f51d;&#x1f51d; 目录 前言 AVL 树 1.1 AVL树的概念 1.2 AVL树…

[大模型]Qwen1.5-7B-Chat FastApi 部署调用

Qwen1.5-7B-Chat FastApi 部署调用 环境准备 在 Autodl 平台中租赁一个 3090 等 24G 显存的显卡机器&#xff0c;如下图所示镜像选择 PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8&#xff08;11.3 版本以上的都可以&#xff09;。 接下来打开刚刚租用服务器的 Jupyt…

vivado 使用 ILA 默认仪表板

使用 ILA 默认仪表板 ILA 仪表板 &#xff08; 请参阅下图 &#xff09; 是给定 ILA 核相关的所有状态和控制信息的集中显示位置。刷新硬件器件并首次检测到 ILA 核时 &#xff0c; 将自动打开该核的默认 ILA 仪表板。如果需要手动打开或重新打开此仪表板 &#xff0c; 只…

java之编译型多态

在Java中方法重载就属于编译型多态&#xff0c;又称静态多态。 举个例子&#xff0c;动物园中饲养员需要知道每个动物应该吃什么饲料&#xff0c;例如熊猫吃竹子&#xff0c;狗吃骨头&#xff0c; 对于饲养员而言他只要对程序输入动物名&#xff0c;程序输出该动物吃什么即可…

性能优化 - 你知道CSS有哪些优化方案吗

难度级别:中高级及以上 提问概率:70% CSS是前端开发工作中必不可少的技能之一,同时也是网页开发中必不可少的重要元素之一。但很多人所开发的项目本身对性能要求并不高,再加上项目周期紧张,久而久之,也就容易养成不考虑细节的习惯,觉得C…

jquery 正则自整理

常用正则表达式大全&#xff01;&#xff08;例如&#xff1a;匹配中文、匹配html&#xff09; 匹配中文字符的正则表达式&#xff1a; [u4e00-u9fa5]   评注&#xff1a;匹配中文还真是个头疼的事&#xff0c;有了这个表达式就好办了   匹配双字节字符(包括汉字在内)&…

C++ 的内存安全与效率

在C编程中&#xff0c;内存安全和效率是两个至关重要的考虑因素。 内存安全涉及确保程序在分配和使用内存时不会发生错误&#xff0c;如内存泄漏、悬挂指针、越界访问、空指针解引用等&#xff1b; 效率则关注如何有效地使用内存资源&#xff0c;减少不必要的内存分配和释放操…

前端说你的API接口太慢了,可是真的有几千万条数据啊!怎么办?

当有千万条海量数据时,前端调取接口发现接口响应的太慢,前端这时让你优化一下接口,你说有几千万条数据,觉得自己尽力了,前端觉得你好菜,别急,读完这篇文章,让前端喊你一声:大佬,厉害!!! 常用的方法总结 通过合理的分页加载、索引优化、数据缓存、异步处理、压缩…

每日OJ题_01背包①_牛客DP41 【模板】01背包(滚动数组优化)

目录 牛客DP41 【模板】01背包 问题一解析 问题二解析 解析代码 滚动数组优化代码 牛客DP41 【模板】01背包 【模板】01背包_牛客题霸_牛客网 #include <iostream> using namespace std;int main() {int a, b;while (cin >> a >> b) { // 注意 while 处…