5.2.3目录与文件之权限意义

news/2024/11/23 5:31:06/

现在我们知道了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 这两个权限。


http://www.ppmy.cn/news/551930.html

相关文章

C语言倒计时器

今天用这几天所学知识自己编写一个简易计时器&#xff08;因为过于简单&#xff0c;所以不过多解释&#xff09; #include<stdio.h> #include<Windows.h>//编写一个倒计时器void main() {system("title 倒计时器");//设置标题system("mode con col…

51单片机实现倒计时,按键控制倒计时

基于AT89C52的答辩倒计时。四个按键分别控制倒计时开始&#xff0c;暂停&#xff0c;时间加和减。剩下30S时蜂鸣器响&#xff0c;倒计时结束蜂鸣器响。 #include <REGX52.H>unsigned char min1; unsigned char sec00; sbit KEY1P3^1; sbit KEY2P3^0; sbit KEY3P3^2; sbit…

单片机课设-60秒倒计时器

proteus单片机实现60秒倒计时器 项目要实现的60s秒表倒计时器&#xff0c;用 AT89C51单片机的定时 / 计数器 T0 产生一秒的定时时间&#xff0c;实现 59 到 0秒的循环显示的功能。具体要求&#xff1a; 1&#xff09;按下启动按键后&#xff0c;倒计时器开始工作&#xff0c;从…

基于51单片机的倒计时系统

具体实现功能 系统由STC89C52单片机按键电路复位电路晶振电路LCD1602显示模块构成。 具体功能&#xff1a; &#xff08;1&#xff09;六位LED显示&#xff0c;从59分59秒99开始倒计时&#xff1b; &#xff08;2&#xff09;倒计时精度为0.01秒&#xff0c;能正确地进行倒…

51单片机应用篇-- --倒计时数字钟,矩阵按键可调

开篇先说一句废话 本旺名字叫萨摩耶&#xff0c;&#xff0c;Please 叫我旺财&#xff0c;&#xff0c;&#xff0c;哈哈&#xff0c;招财进宝嘛&#xff01; 项目要求 这篇也和之前那篇文章单片机应用篇-- --数码管60秒计时&#xff0c;独立按键可调 差不多&#xff0c;而且…

8051单片机(STC89C52)倒计时器

#include <STC89C5xRC.H>void delay()//用定时器0实现10ms精准定时 {TMOD 0x01;TH0 0xd8;TL0 0xf0;//65536 - 10000 55536TF0 0;//置溢出标志位为0TR0 1;//开启定时器0while(TF0 0);TR0 0;//暂停定时器0 }void disp_digit(int d) {unsigned char code DIG_CODE[1…

STC8H8K系列汇编和C51实战——秒倒计时器(汇编版)

秒倒计时器&#xff08;汇编版&#xff09; 一、题目二、代码总结系列文章——STC8H8K系列汇编51实战 一、题目 在实验箱上利用单片机定时器/计数器&#xff08;工作于中断方式&#xff09;设计一个秒倒计时器&#xff0c;用数码管显示秒数&#xff0c;从100 倒计时至0 s 后从…

51单片机通过计时器实现倒计时

51单片机通过计时器实现倒计时 文章目录 51单片机通过计时器实现倒计时实验环境仿真图代码实现成果图 实验环境 软件: Keil5Proteus7 元件: AT89C51 * 1&#xff0c;7SEG-MPX2-CA * 1 仿真图 代码实现 //名称: 定时器实现数码管倒计时 #include <reg51.h> #define uint …