5.2.3目录与文件之权限意义

简介: 5.2.3目录与文件之权限意义

现在我们知道了Linux系统内文件的三种身份(拥有者、群组与其他人),知道每种身份都有三种权限(rwx), 已知道能够使用chown, chgrp, chmod去修改这些权限与属性,当然,利用ls -l去观察文件也没问题。 前两小节也谈到了这些文件权限对于数据安全的重要性。那么,这些文件权限对于一般文件与目录文件有何不同呢?


权限对文件的重要性


文件是实际含有数据的地方,包括一般文本文件、数据库内容档、二进制可可执行文件(binary program)等等。 因此,权限对于文件来说,他的意义是这样的:


r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;


w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);


x (eXecute):该文件具有可以被系统执行的权限。


在Windows下面一个文件是否具有执行能力是由“扩展名”来判断的,例如:.exe,.bat,.com等,但是在Linux下面,我们的文件是否能被执行,则是借由是否具有“x"这个权限来决定,跟文件名没有绝对关系。


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


权限对目录的重要性


文件是存放实际数据的所在,目录主要的内容在记录文件名单中,文件名与目录有强烈的关连,所以针对目录时,那个r,w,x对目录是什么意义呢?


r (read contents in directory):


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


w (modify contents of directory):


表示你具有异动该目录结构清单的权限,也就是下面这些权限:


创建新的文件与目录;


删除已经存在的文件与目录(不论该文件的权限为何!)


将已存在的文件或目录进行更名;


搬移该目录内的文件、目录位置。 总之,目录的w权限就与该目录下面的文件名异动有关


x (access directory):


目录不可以被执行,目录的x代表的是使用者能否进入该目录成为工作目录的用途。工作目录就是目前所在的目录。举例说,当登录Linux时,所在的主文件夹就是当下的工作目录。而变更目录的指令是“cd"(change directory)。

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


例题:有个目录的权限如下所示:

系统有个帐号名称为vbird,这个帐号并没有支持root群组,请问vbird对这个目录有何权限?是否可切换到此目录中?答:vbird对此目录仅具有r的权限,因此vbird可以查询此目录下的文件名列表。因为vbird不具有x的权限,亦即 vbird并不能切换到此目录内。


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


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


例题:假设有个帐号名称为dmtsai,他的主文件夹在/home/dmtsai/,dmtsai对此目录具有[rwx]的权限。 若在此目录下有个名为the_root.data的文件,该文件的权限如下:

请问dmtsai对此文件的权限为何?可否删除此文件?答:如上所示,由于dmtsai对此文件来说是“others”的身份,因此这个文件他无法读、无法编辑也无法执行, 也就是说,他无法变动这个文件的内容就是了。


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

要读一个文件时,你得要具有“这个文件所在目录的 x 权限”才行!所以,通常要开放的目录, 至少会具备 rx 这两个权限。


相关文章
|
存储 缓存 算法
iOS 常见触发离屏渲染场景及优化方案总结
iOS 常见触发离屏渲染场景及优化方案总结
1191 0
iOS 常见触发离屏渲染场景及优化方案总结
|
12月前
|
XML 负载均衡 监控
分布式-dubbo-简易版的RPC框架
分布式-dubbo-简易版的RPC框架
|
11月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于BP神经网络的苦瓜生长含水量预测模型matlab仿真
本项目展示了基于BP神经网络的苦瓜生长含水量预测模型,通过温度(T)、风速(v)、模型厚度(h)等输入特征,预测苦瓜的含水量。采用Matlab2022a开发,核心代码附带中文注释及操作视频。模型利用BP神经网络的非线性映射能力,对试验数据进行训练,实现对未知样本含水量变化规律的预测,为干燥过程的理论研究提供支持。
|
小程序
无影云电脑产品使用之有购买订单,但是账号下查不到云电脑
本文汇总了无影云电脑使用中的常见问题及解决方法,包括购买后找不到云电脑、镜像选择更改、电竞模式切换及Steam游戏启动等问题。提供了详细步骤与官方链接,帮助用户快速解决问题,提升使用体验。更多详细解答请点击原文链接查阅。
|
安全 定位技术 数据安全/隐私保护
FileZilla软件的下载、服务器站点配置与数据传输方法
FileZilla软件的下载、服务器站点配置与数据传输方法
399 1
|
JavaScript 前端开发 关系型数据库
Vue 开源项目:一款实用的个人音乐流媒体服务器,轻松打造属于自己的音乐天堂!!!
Vue 开源项目:一款实用的个人音乐流媒体服务器,轻松打造属于自己的音乐天堂!!!
|
SQL 关系型数据库 MySQL
mysql从库SHOW SLAVE STATUS字段详解
mysql从库SHOW SLAVE STATUS字段详解
615 0
|
开发工具 数据安全/隐私保护 git
解决方案:Github Support for password authentication was removed on August 13, 2021.
解决方案:Github Support for password authentication was removed on August 13, 2021.
1009 1
解决方案:Github Support for password authentication was removed on August 13, 2021.
|
Java 关系型数据库 MySQL
保姆级教程——将springboot项目部署到阿里云服务器包含环境配置(小白包会)
本文档详细介绍了将SpringBoot项目部署到阿里云服务器的步骤。首先,通过Xshell连接服务器,使用公网IP地址。接着,下载JDK的Linux版本,使用XFTP上传并解压,配置环境变量。然后,安装MySQL 5.7,包括下载YUM源、安装、启动服务以及修改root密码和开启远程访问。最后,将SpringBoot项目打包成jar,上传至服务器,使用`java -jar`命令运行,通过`nohup`确保服务持续运行。配置安全组以允许远程访问。
2496 0
|
Prometheus 监控 Cloud Native
Linux|centos7 Prometheus的自动服务发现 一(文件发现机制)
Linux|centos7 Prometheus的自动服务发现 一(文件发现机制)
205 0