Linux文件系统每个文件分为inode和block,inode中包含一些基本信息(文件名,类型,长度,修改时间,权限等待),并且指向包含文件真实内容的block,而目录是文件的一种,其block的内容就是该目录下的文件列表,也就是一列文件名,并附有指向该文件inode的指针。

  inode中有权限信息,rwx分别为可读可写可执行,;每个目录相当于一个黑墙围成的房间,但正面有一扇玻璃门(类似橱窗),r代表房间中的灯(是否打开),而x权限代表进入房间的玻璃门(是否打开),w容易理解是房间中的东西的位置能否修改。有r则即使未开门也能看见里面有什么东西,但只能远观(只能显示名字和类别),而有x无r则可以进门但里面一片漆黑不知道有些什么,此时黑墙上若有其它门也可以摸着进入下一个房间。

  更新:

  文件组织的权限都在内核中,每种权限都对应一些内核函数调用。对于文件来说rwx就是block的权限,其中x对应exec,rw对应open|read/write,而对于目录来说,block分两类,文件名和inode,r是block内文件名的读取权限,x是block中的inode读取权限,w是block的修改权限,包括名字和inode,所以目录的rwx就是目录的一套i/o系统调用,opendir等等。这意味着目录有x可以下级索引,r仅仅是查看下级的名称,w可以组织下级。

  由于文件系统的inode,block模式,目录只对下一级负责。一个小例子,由于执行程序用到“./xxx”,或者/xx/xx/xx,都会转化为绝对路径,所以对目录的操作都是从根开始扫描的原子操作,没有中间指针,文件系统就是一种数据库。

  除了owner-group-others的rwx,还有三组别的权限,实际用户/组ID,有效用户/组,设置用户/组ID,这三组都是指程序运行时的用户名和组。按顺序来,实际用户/组ID说的是用户账户,在登录时用配置初始化,切换用户时可以改变。有效用户/组ID是指程序,每当运行一个新程序时,新程序也需要有用户名/组来获取对应的权限,所以用户执行了一个程序,程序 就有了当前用户的权限(成了一个活人)。但是如果想让该程序去读取一些当前用户不能读的文件,怎么办呢?

  这就是设置用户/组ID的意义,如果一个程序有了设置用户/组ID,那么执行时,权限为设置用户/组ID的权限,这样,如果想要读只有该用户能读的文件时,让该用户把设置用户/组ID设置为该用户,就可以了。另一种说法,如果想要让别人读一个你的文件,但又不想给多余的权限时,可以定制一个读取程序,然后设置设置用户/组ID,给他人使用。

  说到这,Linux系统最高权限就是内核本身,其次是root,然后是用户以及分配的各种权限。所谓权限,就是调用时的检查,而调用的提供者是内核。内核制定了一系列的规则逻辑,形成秩序。

关于Linux 文件权限的思考的更多相关文章

  1. 修改linux文件权限

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  2. Linux:文件权限

    Linux:文件权限 1.文件权限 ☆文件所有者 ☆用户组 ☆其他人 ☆ROOT 说明: Linux系统中默认所有系统上的账号与一般身份用户,还有那个root的相关信息记录在/etc/passwd文件 ...

  3. Linux 文件权限总结

    在 Linux 中最基本的任务之一就是设置文件权限.理解它们是如何实现的是你进入 Linux 世界的第一步.如您所料,这一基本操作在类 UNIX 操作系统中大同小异.实际上,Linux 文件权限系统就 ...

  4. Linux&shell 之Linux文件权限

    写在前面:案例.常用.归类.解释说明.(By Jim) Linux文件权限用户useradd test (添加用户test)userdel test (删除用户test)passwd test(修改用 ...

  5. linux文件权限整理

    网上对linux文件权限的已经很多,不过还是要自己整理一下,不然每次都要查资料. linux下所有东西都是文件,包括设备,所以这里的文件也包括文件夹. 先是查看文件权限:ls -lh xzc@xzc- ...

  6. 修改linux文件权限命令:chmod 【转载】

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. chmod  命令可以改变所有子目录的权限,下面有2种方法 改变一个文件的权限: chmod ...

  7. linux文件权限总结(创建root不可以删除文件、只可追加的日志文件等)

    文件类型 对于文件和目录的访问权力是根据读访问,写访问,和执行访问来定义的. 我们来看一下 ls 命令的输出结果 [root@iZ28dr6w0qvZ test]# ls -l 总用量 72 -rw- ...

  8. Linux 文件权限于目录配置

    用户与用户组 我們以王三毛為例,王三毛這個『檔案』的擁有者為王三毛,他屬於王大毛這個群組, 而張小豬相對於王三毛,則只是一個『其他人(others)』而已. 不過,這裡有個特殊的人物要來介紹的,那就是 ...

  9. Linux文件权限与属性详解 之 SUID、SGID & SBIT

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

随机推荐

  1. 前端-JavaScript2-5——JavaScript之运算符进阶

    运算符(Operators,也翻译为操作符),是发起运算的最简单形式. 运算符的分类见仁见智,我们的课程对运算符进行如下分类: 数学运算符(Arithmetic operators) 比较运算符(Co ...

  2. UC登录功能:商户需要创建的表

    1:类似PHP的hash_hmac DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `uc_session_hmacsha1`( `_secretkey ...

  3. C&C++类型定义typedef

    1.声明 1.1结构声明: struct { int n; double x,y; }; 1.2带结构标志的声明 struct point{ double x,y; }; 1.3定义结构类型 1.3. ...

  4. 乘法DAC一点知识

    在应用电路中发现乘法DAC,以前没有用过所谓的乘法DAC.查过资料发现,其实所有的DAC都可以看作是个“乘法器”-------将输入数字量与基准电压相乘. 一般DAC的输出是VOUT=VREF*D/M ...

  5. 部署GlusterFS及Heketi

    一.前言及环境 在实践kubernetes的StateFulSet及各种需要持久存储的组件和功能时,通常会用到pv的动态供给,这就需要用到支持此类功能的存储系统了.在各类支持pv动态供给的存储系统中, ...

  6. python-web自动化-键盘操作

    selenium提供了较为完整的键盘操作引入 from selenium.webdriver.common.keys import Keys使用键盘操作时,需要借助send_keys()来模拟操作.K ...

  7. 强大的oracle分析函数

    转载:https://www.cnblogs.com/benio/archive/2011/06/01/2066106.html 学习步骤:1. 拥有Oracle EBS demo 环境 或者 PRO ...

  8. 容器(docker)内运行Nginx

    容器内运行nginx其实很简单,但是一开始还是浪费了我很多时间.这里写下来给大家省点时间. 1.创建nginx文件夹,放置各种配置及日志等. mkdir /docker/nginx docker 文件 ...

  9. python3 摘抄

    https://www.python.org/downloads/release/python-370/ python3.7.0 win10环境,选:Windows x86-64可执行安装程序. ht ...

  10. MYSQL临时表使用方法

    当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后在这些表运行查询. ...