【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 提取码:…

【独家揭秘】三星HBM3e内存通过英伟达认证?官方辟谣背后真相何在?

7月初,业界一则震撼消息传来,据韩媒Newdaily报道,三星电子第五代高速存储器HBM3e已成功获得GPU巨头英伟达的质量认证,预示着三星即将步入HBM大规模量产的新阶段。报道援引半导体行业内部消息,称三星近期收到来自英伟达…

Air系列4G模块AT版本如何使用HTTP

HTTP应用的基本流程如下: 1、激活PDP 2、初始化HTTP服务 3、设置HTTP会话参数 4、如果要支持SSL,配置SSL参数 5、如果使用POST命令,输入POST数据 6、发起HTTP请求 7、收到HTTP应答,读取应答数据 8、终止HTTP服务 注意:…

web学习笔记(七十六)

目录 1.wxss和css的区别 2.wxss通过less来编写代码 3.小程序实现下拉刷新的操作 4.定义变量的技巧 5.小程序实现触底加载的操作 1.wxss和css的区别 在wxss中为了做适配我们引入了一个新的计量单位rpx,和vue的适配差不多,将整个屏幕分为750份,1r…

Matplotlib 线条的属性

属性名 描述 agg_filter 一个过滤器函数,它接受一个 (m, n, 3) 浮点数组和一个 dpi 值,并返回一个 (m, n, 3) 数组和距图像左下角的两个偏移量 alpha 标量或无 animated 布尔 antialiased或aa 布尔 clip_box Bbox clip_on 布尔 clip_path …

【Python】数据分析与可视化——文本数据分析

文本数据分析是指对文本数据进行收集、清理、加工和分析的过程,旨在从大量的文本信息中抽取有用的信息和知识 1. 数据收集 使用如Python中的BeautifulSoup库进行网络爬虫,寻找并下载网页上的文本内容 2. 数据清洗 在收集到文本数据后,通常…

嵌入式linux sqlite3读写demo

以下是一个简单的C语言程序&#xff0c;使用SQLite数据库进行读写操作的示例。请确保您已经安装了SQLite3库。 #include <stdio.h> #include <stdlib.h> #include <sqlite3.h> static int callback(void *NotUsed, int argc, char **argv, char **azColNam…

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

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

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

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

(c++数组02) 双指针 滑动窗口

977、有序数组的平方 双指针思路&#xff1a;两个指针分别从数组两端开始遍历 class Solution { public:vector<int> sortedSquares(vector<int>& nums) {vector<int> answer(nums.size(), 0);int left 0;int right nums.size() - 1;int k nums.siz…

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

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

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

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

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

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

2.2.1 ROS2案例以及案例分析

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

在docker配置Nginx环境配置

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

Liunx网络配置

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

emacs 重新加载磁盘上的文件

------------------------------------------------------------ author: hjjdebug date: 2024年 07月 04日 星期四 14:05:25 CST descriptor: emacs 重新加载磁盘上的文件 ------------------------------------------------------------ 当我们修改了磁盘上文件&#xff0c;…

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

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

运维监控平台持续改进方案

一、方案目标 本方案旨在构建一个高效、全面的运维监控平台&#xff0c;通过持续改进和整合&#xff0c;确保数据中心机房内各类设备的稳定运行&#xff0c;提升运维效率&#xff0c;降低故障风险&#xff0c;并为企业提供优质的IT服务。 二、全面监控关键设备 为了实现全面监…

Java中的内存泄漏分析与排查技巧

Java中的内存泄漏分析与排查技巧 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 内存泄漏的定义与影响 在Java应用程序开发中&#xff0c;内存泄漏是指程序中…