Linux文件系统inode、block解释权限(三)
利用文件系统的inode和block来分析文件(目录)的权限问题。
- 为什么读取一个文件还要看该文件路径所有目录的权限?
- 为什么目录的w权限具有删除文件的能力,而文件w权限不行。
inode:记录文件的属性,一个文件占用一个inode,同时记录了文件数据所在的block号码。Ext3文件系统inode大小为128B,Ext4文件系统inode大小为256B。
block:记录了文件的内容,若文件太大会占用多个bolck块。一般大小为1k、2k、4k。
inode和block在文件系统里,均用号码标示。
如下:
hang@hang:/home$ ll -i
总用量 20
#inode号 #文件大小,这里是一个4k的block块的大小
drwxr-xr-x root root 11月 : ./
drwxr-xr-x root root 11月 : ../
drwxr-xr-x hang hang 11月 : hang/
drwxr-xr-x zncu zncu 11月 : zncu/
drwxrws--- root znha 11月 : znha/
其他更多的文件系统相关不在介绍,总之inode记录了文件/目录的权限和block号码,block记录了文件的实际内容、目录下的文件名以及这些文件名的inode号。
例子:想要读取/etc/passwd,经过了哪些流程。
root@hang:/# ll -di / /etc /etc/passwd
drwxr-xr-x root root 11月 : //
drwxr-xr-x root root 11月 : /etc/
-rw-r--r-- root root 11月 : /etc/passwd
1./的inode: 通过挂载点信息,找到/目录的inode号(2),且该inode具有rwx权限,我们可以读取inode号(2)所记录的block块内容。
2./的block: 在/目录的block内容里找etc/目录的inode号(17301505)
3./etc的inode: /etc的inode(17301505)具有rwx权限,我们可以读取/etc的block块的具体内容。
4./etc的block: 在block块里找到passwd文件的inode(17304397)。
5.passwd的inode: 根据passwd文件的inode(17304397)得知具有读取权限。
6.passwd的block: 根据inode(173044397)所记录的block块读取passwd的具体内容。
可以看到,从根目录一步一步到passwd需要验证每一个目录的权限,如果其中一个目录不具有相应权限,那么这个操作就会失败,如果无法进入/etc目录,何谈读取passwd文件。
也可以得知为什么文件的删除等操作是被目录的w权限控制的,因为w权限可以具有修改block块的能力,目录的block记录了文件名和文件inode,删除文件就是block块存储的文件名和inode,而文件的block记录的是文件具体内容,所以w权限是对文件内容的修改,而不具备删除文件等权限。
http://www.cnblogs.com/yuhanghzsd/p/6109513.html
Linux文件系统inode、block解释权限(三)的更多相关文章
- # linux文件系统(inode block superblock)
先说一下格式化:每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区格式化,以成为操作系统能够利用的文件系统格式.linux的文件格式为Ext2/Ext3,现在好像 ...
- Linux 文件系统 -- inode 笔记
什么是 inode inode 的定义:Unix 文件系统中的一种数据结构,用来存储文件的元信息数据 文件在硬盘中的存储是以"块"(block)为单位的,常见的块大小是 4k ...
- linux文件系统的用户和权限管理
1. 为什么要有用户的概念? 多用户,多任务业务对系统资源的隔离产生需求 2. linux 用户的分类? 2.1. 管理员 拥有操作所有文件的权限 2.2. 普通用户 2.2.1. 普通登录用户 2. ...
- linux文件系统下的特殊权限
SUID, SGID, Sticky 1 权限 r, w, x user, group, other 2 安全上下文 前提:进程有属主和属组:文件有属主和属组: (1) 任何一个可执行程序文件能不能启 ...
- 八、linux文件系统上的特殊权限 SUID 、GUID、Sticky
安全上下文 前提:进程有属主和属组,文件有属主和属组 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限 启动为进程之后,其进程的属主为发起者:进程的属组为发起者所属的组 进 ...
- linux 文件系统(inode和block)
linux文件系统(inode block superblock) 先说一下格式化:每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区格式化,以成为操作系统能 ...
- 硬盘分区及Linux文件系统
1. 硬盘物理结构 硬盘物理上主要分为: 盘片 磁道 扇区 机械臂 磁头 主轴 磁道: 当硬盘盘片旋转时,磁头若固定在一个位置上,则磁头会在盘片表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道.以盘片中心 ...
- [apue] linux 文件系统那些事儿
前言 说到 linux 的文件系统,好多人第一印象是 ext2/ext3/ext4 等具体的文件系统,本文不涉及这些,因为研究具体的文件系统难免会陷入细节,甚至拉大段的源码做分析,反而不能从宏观的角度 ...
- Linux文件系统(inode、block……)
内容源于<鸟哥的Linux私房菜> 认识 EXT2 文件系统 文件系统的特殊观察与操作 文件系统 superblock,inode,block superblock,inode,block ...
随机推荐
- [luoguP2915] [USACO08NOV]奶牛混合起来Mixed Up Cows(DP)
传送门 f[i][S] 表示当前集合为 S,最后一个数为 i 的最优解 f[i][S] += f[j][S - i] (j, i ∈ S && j != i && ab ...
- noip模拟赛 序
[问题背景]zhx 给他的妹子们排序.[问题描述]zhx 有 N 个妹子, 他对第 i 个妹子的好感度为 ai,且所有 ai两两不相等. 现 在 N 个妹子随意站成一排, 他要将她们根据好感度从小到大 ...
- POJ 1328 Radar Installation 贪心算法
Description Assume the coasting is an infinite straight line. Land is in one side of coasting, sea i ...
- jconsole远程连接 jmx配置注意事项
由于在测试程序时需要收集程序运行时的内存,CPU等消耗情况.选择了jconsole这个jdk自带工具来观察.为了不影响程序运行状态,用远程连接的方式来具体观察. 首先,程序是放在ubutun系统服务器 ...
- Java发送带附件的QQ邮箱
由于腾讯公司给QQ邮箱增加了一个授权码的密码保护,导致之前网上很多代码都不能用,于是就自己敲了一份demo. 注意在密码那里可能需要授权码,具体设置:http://service.mail.qq.co ...
- 在docker上安装运行mysql实例
ps:实验环境是:CentOS Linux release 7.3 64位1.获取mysql镜像从docker hub的仓库中拉取mysql镜像docker pull mysql查看镜像docker ...
- MyBatis与Spring MVC结合时,使用DAO注入出现:Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
错误源自使用了这个例子:http://www.yihaomen.com/article/java/336.htm,如果运行时会出现如下错误: Invocation of init method fai ...
- ms sql server 系统表详细说明
sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库字符集与排序顺序 sysconfigures 主数据库 配置选项 syscurconfigs 主数据 ...
- 从头认识java-15.1 填充容器(1)-利用Collection构造器的方式
这一章节我们来介绍一下填充容器. 就像数组一样,Arrays.fill是填充方法,在容器里面也有. 1.Collections.nCopies 这种方法是生成某种类型多少个对象,然后我们能够把他放到容 ...
- SQL SERVER学习笔记:临时表与表变量
本文主要摘自徐海蔚的<Microsoft SQL SERVER企业级平台管理实践> 表变量可以作为存储过程的返回参数,而临时表不行.(存疑?表值参数只在SQL SERVER2008才开始支 ...