【Linux】目录和文件的权限意义

        现在我们知道了Linux系统内文件的三种身份(拥有者、用户组与其他人),知道每种身份都有三种权限(rwx),也知道能够使用chown、chgrp、chmod修改这些权限与属性,当然,利用IS-l去查看文件也没问题。

        前面也谈到了这些文件权限对于数据安全的重要性。那么,这些文件权限对于一般文件与目录文件有何不同呢?有大大的不同。

1.权限对文件的重要性

文件是实际含有数据的地方,包括一般文本文件、数据库文件、二进制可执行文件(binary
program)等。

因此,权限对于文件来说,它的意义是这样的:

  • r(read):可读取此文件的实际内容,如读取文本文件的文字内容等;
  • w(write):可以编辑、新增或是修改该文件的内容(但不含删除该文件);
  • ×(execute):该文件具有可以被系统执行的权限。

那个可读(r)代表读取文件内容是还好了解,那么可执行(x)?

        这里你就必须要小心。因为在Windows下面一个文件是否具有执行的能力是借由扩展名来判断的,例如:exe、.bat、.com等,但是在Linux下面,我们的文件是否能被执行,则是借由是否具有【x】这个权限来决定,跟文件名是没有绝对的关系的。

        至于最后一个w这个权限?当你对一个文件具有w权限时,你可以具有写入、编辑、新增、修改文件内容的权限,但并不具备有删除该文件本身的权限。对于文件的rwx来说,主要都是针对文件的内容而言,与文件名的存在与否没有关系,因为文件记录的是实际的数据嘛。

2.权限对目录的重要性

        文件是存放实际数据的所在,那么目录主要是存储什么?

        目录主要的内容在记录文件名列表,文件名与目录有强烈的关联。所以如果是针对目录时,那个r、w、x对目录是什么意义呢?

  • r( read contents in directory)

表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据,所以你就可以利用Is这个命令将该目录的内容列表显示出来。

  • w( modify contents of directory )

这个可写入的权限对目录来说,是很了不起的,因为它表示你具有改动该目录结构列表的权限,也就是下面这些权限:

  • 建立新的文件与目录;
  • 删除已经存在的文件与目录(不论该文件的权限是什么);
  • 将已存在的文件或目录进行更名;
  • 移动该目录内的文件、目录位置;

总之,目录的w权限就与该目录下面的文件名的变动有关。

  •  x( access directory)

咦,目录的执行权限有啥用途?目录只是记录文件名而已,总不能拿来执行吧?

        没错,目录不可以被执行,目录的x代表的是用户能否进入该目录成为工作目录的用途,所谓的工作目录(work directory)就是你目前所在的目录。

        举例来说,当你登录Linux时,你所在的家目录就是你当前的工作目录,而变换目录的命令是【cd】( change directory )。

上面的东西这么说,太枯燥了,有没有清晰一点的说明?好,让我们来思考一下人类社会使用的
东西好了。

现在假设文件是一堆文件盒,所以你可能可以在上面写/改一些数据,而目录是一堆抽屉。因此你可以将文件盒分类放置到不同的抽屉里面,因此抽屉最大的目的是拿出/放入文件盒。现在让我们汇整一下内容:

组件内容替代对象rwx
文件详细数据data文件夹读到文件内容修改文件内容执行文件内容
目录文件名可分类抽屉读到文件名修改文件名进入该目录的权限(key)

根据上述的分析,你可以看到,对一般文件来说,rwx主要是针对文件的内容来设计权限,对录来说,rwx则是针对目录内的文件名列表来设计权限。

其中最有趣的大概就属目录的x权限了,文件名怎么执行?

没道理嘛。其实这个x权限设计,就相当于该目录——也就是该抽屉的“钥匙”,没有钥匙你怎么能够打开抽屉?对吧!

3.举例说明

大致的目录权限概念是这样,下面我们来看几个范例,让你了解一下啥是目录的权限。
有个目录的权限如下所示:

drwxr--r-- 3 root root 4096 Jun 25 08:35 .ssh

        系统有个账号名称为vbird,这个账号并没有支持root用户组,请问vbird对这个目录有何权限?是否可切换到此目录中?

        答:vbird在这里属于其他人,对此目录仅具有r的权限,因此vbird可以查询此目录下的文件名列表,因为vbird不具有x的权限,亦即vbird没有这个抽屉的钥匙,因此vbird并不能切换到此目录内——即不能打开。(相当重要的概念)

        上面这个例题中因为vbird具有r的权限,因为是r乍看之下好像就具有可以进入此目录的权限其实那是错的。能不能进入某一个目录,只与该目录的x权限有关。此外,工作目录对于命令的执行是非常重要的,如果你在某目录下不具有x的权限,那么你就无法切换到该目录下,也就无法执行该目录下的任何命令,即使你具有该目录的r或w的权限。

        很多朋友在搭建网站的时候都会卡在一些权限的设置上,它们开放目录数据给因特网的任何人来浏览,却只开放r的权限,如上面的范例所示那样,那样的结果就是导致网站服务器软件无法到该目录下读取文件(最多只能看到文件名),最终用户总是无法正确地查看到文件的内容(显示权限不足)。

        要注意:要开放目录给任何人浏览时,应该至少也要给予r及×的权限,但w权限不可随便给,为什么w不能随便给,我们来看下一个例子。

        假设有个账号名称为dmtsai,它的家目录在/home/dmtsai/,dmtsai对此目录具有[rwx]的权限。若在此目录下有个名为the_root.data的文件,该文件的权限如下:

-rwx------ 1 root root 4365 Sep 19 23:20 the_root.data

请问dmtsai对此文件的权限是什么?可否删除此文件?

       答:如上所示,由于dmtsai 对此文件来说是others的身份,因此这个文件它无法读、无法编辑也无法执行,也就是说,它无法变动这个文件的内容。

        但是由于这个文件在它的家目录下,它在此目录下具有rwx的完整权限,因此对于the_root.data这个文件名来说,它是能够删除的。结论就是,dmtsai 这个用户能够删除the_root.data这个文件。

上述的例子解释是这样的,

        假设有个莫名其妙的人,拿着一个完全密封的文件盒放到你的办公室抽屉中,因为完全密封你也打不开、看不到这个文件盒的内部数据(对文件来说,你没有权限)。

        但是因为这个文件盒是放在你的抽屉中,你当然可以在这个抽屉中拿出/放入任何数据(对目录来说,你具有所有权限)。

        所以,情况就是:你打开抽屉、拿出这个没办法看到的文件盒、将它丢到走廊上的垃圾桶,搞定了(顺利删除)。

        还是看不太懂?没关系,我们下面就来设计一个练习,让你实际玩玩看,应该就能够比较明白了。不过,由于很多命令我们还没有教,所以下面的命令有的先了解即可,详细的命令用法我们会在后面继续介绍。

  • 先用root的身份建立所需要的文件与目录环境

我们用root的身份在所有人都可以工作的/tmp目录中建立一个名为testing的目录,该目录的权限为744且目录拥有者为root。另外,在testing目录下在建立一个空文件,文件名亦为testing。

仔细看一下,目录的权限是744,且所属用户组与使用者均是 root。

那么在这样的情況下面,一般身份使用者对这个目录/文件的权限是什么?

  • 一般用户的读写权限是什么?观察中

在上面的例子中,虽然目录是744的权限设置,一般用户应该能有r的权限,但这样的权限用户能做啥事?

由于我的系统中含有一个名为bcq_113的账户,请再开另外一个终端,使用bcq_113登录来操作下面的任务。


虽然有告知权限不足,但因为具有r的权限可以查询文件名,由于权限不足(没有x),所以会有一堆问号。

因为不具有x,所以当然没有进入的权限,有没有联想到前面的权限说明?

  • 如果该目录属于用户本身,会有什么状况?

        上面的练习我们知道了只有,确实可以让用户读取目录的文件名列表,不过详细的信息却还是读不到,同时也不能将该目录变成工作目录(用cd进入该目录之意)

        那如果我们让该目录变成用户的,那么用户在这个目录下面是否能够删除文件?下面的练习做做看:

1.先用root的身份来搞定/tmp/testing的属性、权限设置

2.再用dmtsai的账号来处理一下/tmp/testing/testing这个文件看看。



竟然可以删除,这样理解了吗?

        通过上面这个简单的步骤,你就可以清楚地知道,x在目录当中是与能否进入该目录有关,至于那个w则具有相当重要的权限,因为它可以让用户删除、更新、新建文件或目录,是个很重要的参数,这样可以理解了吗?

3.1.用户操作功能与权限

刚刚讲这样如果你还是搞不懂,没关系,我们来处理个特殊的案例。假设两个文件名,分别是下
面这样:

  • /dir1/file1
  • /dir2

假设你现在在系统使用bcq_113这个账号,那么这个账号针对/dir1、/dir1/file1、/dir2这三个文件名来说,分别需要哪些最小的权限才能完成各项任务?我汇整如下,如果你看得懂,恭喜你,如果你看不懂,没关系,未来再来继续学。

操作/dir1/dir1/file/dir2重点
读取file1内容xr-要能够进入/dir1才能读到里面的文件数据
修改file1内容xrw-要进入/dir1且修改file才行
执行file1内容xrx-能够进入/dir1且 file1能运行才行
删除file1文件wx--能够进入/dir1且具有目录修改的权限即可
将file1复制到/dir2xrwx要能读file1且能修改/dir2内的数据

你可能会问,上面的表格当中,很多时候/dir1都不必有r,为啥?

        我们知道/dir1是个目录,也是个抽屉。那个抽屉的r代表“这个抽屉里面有灯光”,所以你能看到的抽屉内的所有文件盒名称(非内容)。

但你已经知道里面的文件盒放在那个地方,那有没有灯光有区别?你还是可以摸黑拿到该文件盒的,对吧!因此,上面很多操作中,你只要具有x即可,r是非必备的,只是没r的话,使用[tab]时,它就无法自动帮你补齐文件名了,这样理解了吗?

看了上面这个表格,你应该会觉得很可怕。因为要读一个文件时,你得要具有这个文件所在目录的x权限才行。所以,通常要开放的目录,至少会具备rx这两个权限,现在你知道为啥了吧!

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

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

相关文章

wordpress企业网站模板免费下载

大气上档次的wordpress企业模板,可以直接免费下载,连注册都不需要,网盘就可以直接下载,是不是嘎嘎给力呢 演示 https://www.jianzhanpress.com/?p5857 下载 链接: https://pan.baidu.com/s/1et7uMYd6--NJEWx-srMG1Q 提取码:…

ActiveAnno3D采用主动学习实现领域自适应,实现大规模数据集的快速标注(代码开源)

Abstract 大规模数据集的策划仍然成本高昂且需要大量时间和资源。数据通常需要手动标注,创建高质量数据集的挑战依然存在。在这项工作中,我们使用主动学习填补了多模态3D目标检测研究的空白。我们提出了ActiveAnno3D,这是一种主动学习框架&a…

前端引用vue/element/echarts资源等引用方法Blob下载HTML

前端引用下载vue/element/echarts资源等引用方法 功能需求 需求是在HTML页面中集成Vue.js、Element Plus(Element UI的Vue 3版本)、ECharts等前端资源,使用Blob下载HTML。 解决方案概述 直接访问线上CDN地址:简单直接&#xff0c…

【踩坑】修复报错Cannot find DGL libdgl_sparse_pytorch_2.2.0.so

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 错误复现 原因分析 解决方法 错误复现 import dgldataset dgl.data.CoraGraphDataset() graph dataset[0] graph.adjacency_matrix() 原因分…

centos通过官网下载安装最新版mysql方案

官网下载步骤: 点击DOCUMENTATION mysql的yum仓库Using the MySQL Yum Repository 向下翻,查看安装命令 点击下载mysql安装包 下载对应的版本 不注册,直接下载社区版 下载好的安装包 安装步骤: 把rpm包导入到服务器…

ConsiStory:无需训练的一致性文本到图像生成技术

随着大规模文本到图像(T2I)扩散模型的发展,用户可以更自由地通过文本指导图像生成过程。然而,要在不同的提示中保持同一主题的视觉一致性仍然是一个挑战。现有的方法通常需要对模型进行微调或预训练,以教授新词汇来描述…

2.2.1 ROS2案例以及案例分析

1.案例需求 需求1:编写话题通信实现,发布方以某个频率发布一段文本,订阅方订阅消息,并输出在终端。 需求2:编写话题通信实现,发布方以某个频率发布自定义接口消息,订阅方订阅消息,并…

在docker配置Nginx环境配置

应用于商业模式集中,对于各种API的调用,对于我们想要的功能进行暴露,对于不用的进行拦截进行鉴权。用于后面的付费 开发环境 正式上线模式 一、常用命令 停止:docker stop Nginx重启:docker restart Nginx删除服务&a…

Liunx网络配置

文章目录 一、查看网络配置永久修改网卡临时修改网卡 二、查看主机名称 hostname三、查看路由表条目 route四、查看网络连接情况netstat五、获取socket统计信息ss六、查看当前系统中打开的文件和进程的工具lsof七、测试网络连通性ping八、跟踪数据包 traceroute九、域名解析 ns…

【vmbox centos7 网络配置】【centos7 glances 安装】【centos7 安装MySQL5.7】

文章目录 vmbox centos7 网络配置centos7 修改镜像地址centos7 安装 glancesCentOS 7 上安装 MySQL 5.7 并进行基本的安全配置使用 firewalld 开放 3306 端口 可以远程连接mysql vmbox centos7 网络配置 目前 能组建集群 虚拟机网络互通,虚拟机能访问外网 创建一个…

FlinkCDC-3.1.1 DataStream Source

问题&#xff1a; Caused by: java.lang.ClassNotFoundException: org.apache.flink.table.catalog.ObjectPath 解决&#xff1a; 在poml文件中&#xff0c;导入的flink-table依赖把“ <scope>”去掉 <properties><maven.compiler.source>8</maven.compi…

链串算法库构建

学习贺利坚老师链串算法库 数据结构之自建算法库——链串_串数据结构-CSDN博客 本人详细解析博客 串的链式存储及其基本操作实现_串链式存储的操作-CSDN博客 版本更新日志 V1.0 : 结合顺序串操作, 使用链串进行优化, 此次链串, 空间将不受限制, 只写了最基本的操作, 相当于 单链…

地级市空气质量指数AQI、环境污染PM2.5、SO2

2015-2021年地级市月度空气质量数据&#xff08;AQI、SO2、NO2、PM2.5、PM10、O3、CO&#xff09; 目录 探究环境污染对经济增长的影响 一、引言 二、数据来源与描述性统计 三、实证模型 &#xff08;一&#xff09;模型设定 &#xff08;二&#xff09;变量说明 四、程…

经典递归分析

在前面一篇中, 已经看过许多直观的递归的例子, 在这篇里, 将分析两个经典的递归问题, 阶乘与菲波那契数列数列, 在此过程中, 还将对比递归与循环(迭代)间的异同, 探讨递归与内存中的栈的关系, 以及递归的效率等问题. 如无特别说明, 示例使用的是 Java, IDE 则为 Eclipse. 阶乘(…

介绍一些好玩且实用的开源的AI工具

介绍一些好玩且实用的开源的AI工具 随着人工智能技术的迅猛发展&#xff0c;开源社区涌现出了许多关于AI的项目&#xff0c;这些项目不仅展示了技术的创新力&#xff0c;也为开发者提供了丰富的工具和资源。本文将介绍几个既有趣又实用的开源人工智能工具&#xff0c;它们不仅…

【电路笔记】-B类放大器

B类放大器 文章目录 B类放大器1、概述2、B类放大器介绍3、推挽式配置4、限制交叉失真5、B类放大器效率6、总结1、概述 我们在之前的文章中已经知道,A 类放大器的特点是导通角为 360,理论最大效率为 50%。 在本文中,我们将详细介绍另一类放大器,称为B类放大器,它是为解决A…

GD32单片机使用TIMER进行外部计数

网上关于使用GD32单片机的ETI引脚作为计数器输入引脚的资料少之又少&#xff0c;此文希望有需要的朋友避免弯路。 我们把ETI引脚作为方波输入引脚&#xff0c;其中ETR输入引脚为PA0。通过查资料得知&#xff1a; 因此将先将引脚进行映射&#xff0c;代码如下&#xff1a; voi…

Linux_进程池

目录 1、进程池基本逻辑 2、实现进程池框架 3、文件描述符的继承 4、分配任务给进程池 5、让进程池执行任务 6、回收子进程 7、进程池总结 结语 前言&#xff1a; 在Linux下&#xff0c;进程池表示把多个子进程用数据结构的方式进行统一管理&#xff0c;在任何时候…

18. JAVA 多线程锁介绍

1. 前言 本节内容主要是对 Java 多线程锁进行介绍&#xff0c;是对锁的一个全方位的概述&#xff0c;为我们对后续深入学习不同的锁的使用方法奠定一个良好的基础。本节内容的知识点如下&#xff1a; 乐观锁与悲观锁的概念&#xff0c;以及两种锁之间的区别&#xff0c;这是并…

【unity实战】使用unity的新输入系统InputSystem+有限状态机设计一个玩家状态机控制——实现玩家的待机 移动 闪避 连击 受击 死亡状态切换

最终效果 文章目录 最终效果前言人物素材新输入系统InputSystem的配置动画配置代码文件路径状态机脚本创建玩家不同的状态脚本玩家控制源码完结 前言 前面我们已经写过了使用有限状态机制作一个敌人AI&#xff1a;【unity实战】在Unity中使用有限状态机制作一个敌人AI 那么玩…