文件和目录的安全上下文(涉及一些文件系统)

当我们敲下命令发起一个进程去操作(读取,复制,修改,删除等)一个目录或文件时,进程会根据我们的身份(目录的属主,属组,其他),对照目录或文件的属主,属组和其他的权限去执行。只有我们拥有目录相应的权限,进程才能执行。进程在匹配时是有顺序的,当你是文件的属主,进程便不会去对照我们的属组身份。

目录和文件的权限详讲:

一、目录的权限详讲:

当执行者对目录有读权限时:

执行者可以读取到目录内都有哪些文件,可以看到目录内的目录或文件的名称,但是对于该目录下的文件或目录的属性信息能否看到,取决于执行者对该目录或文件的权限。

[redhat tmp]$ cd test

[redhat@localhost test]$ mkdir test.read

[redhat@localhost ~]$ chmod 400 /tmp/test/test.read/

[redhat@localhost test]$ su - root

[root@localhost ~]# cd /tmp/test/test.read/

[root@localhost test.read]# touch a b c

[root@localhost test.read]# ll

总用量 0

-rw-r--r--. 1 root root 0 3月   7 22:59 a

-rw-r--r--. 1 root root 0 3月   7 22:59 b

-rw-r--r--. 1 root root 0 3月   7 22:59 c

[root@localhost test.read]# su - redhat

[redhat@localhost ~]$ ll  /tmp/test/test.read/

ls: 无法访问/tmp/test/test.read/a: 权限不够

ls: 无法访问/tmp/test/test.read/b: 权限不够

ls: 无法访问/tmp/test/test.read/c: 权限不够

总用量 0

?????????? ? ? ? ?            ? a

?????????? ? ? ? ?            ? b

?????????? ? ? ? ?            ? c

仔细看上面不难发现当执行者对目录仅有读权限时,是没有办法看到目录内文件的属性的,即使你对文件有读的权限。

原因是当执行者对目录仅有都权限时,相当于执行者只有能向里看的权限,却没有办法进入。

具体原因是目录内的目录名和文件名保存在本目录的block中,(本目录的block保存的是本目录下的文件名和和文件名对应的inode号),至于目录内的文件和目录的属性则记录在该block所指的inode中。而我们仅有对该目录的读的权限,只能读到该目录的block,即该目录下的文件名和inode号,而又进入不了该目录,就无法站在该block上去看该block所指的inode信息。

[redhat@localhost test]$ ls -id test.read/

33556153 test.read/

当执行者对目录有操作的权限时,执行者就可以进入目录内的文件进行查看了。相当于执行者可以进到目录的门里面了,当然就可以随便看了。

[redhat@localhost test]$ chmod 500 /tmp/test/test.read/

[redhat@localhost test]$ ll /tmp/test/test.read/

总用量 0

-rw-r--r--. 1 root root 0 3月   7 22:59 a

-rw-r--r--. 1 root root 0 3月   7 22:59 b

-rw-r--r--. 1 root root 0 3月   7 22:59 c

但是当执行者没有写的权限时,执行者仅仅能进入目录,看看而已(就像我们去别人的家,进门了,看是可以,要想动动手,还是不可以的。)也就是此时执行者还不能在该目录下创建,删除,重命名文件。

[redhat@localhost test]$ cd test.read/

[redhat@localhost test.read]$ mkdir woaini

mkdir: 无法创建目录"woaini": 权限不够

[redhat@localhost test.read]$ rm -rf a

rm: 无法删除"a": 权限不够

[redhat@localhost test.read]$ mv a  A

mv: 无法将"a" 移动至"A": 权限不够

只有执行者有了写的权限时,才能够进行删除,创建,重命名该目录下的文件或目录。

[redhat@localhost test]$ chmod 500 /tmp/test/test.read/

[redhat@localhost test]$ ll /tmp/test/test.read/

总用量 0

-rw-r--r--. 1 root root 0 3月   7 22:59 a

-rw-r--r--. 1 root root 0 3月   7 22:59 b

-rw-r--r--. 1 root root 0 3月   7 22:59 c

[redhat@localhost test]$ cd test.read/

[redhat@localhost test.read]$ mkdir woaini

mkdir: 无法创建目录"woaini": 权限不够

[redhat@localhost test.read]$ rm -rf a

rm: 无法删除"a": 权限不够

[redhat@localhost test.read]$ mv a  A

mv: 无法将"a" 移动至"A": 权限不够

[redhat@localhost test.read]$ chmod 700 /tmp/test/test.read/

[redhat@localhost test.read]$ rm a

rm:是否删除有写保护的普通空文件 "a"?y

[redhat@localhost test.read]$ mkdir A

[redhat@localhost test.read]$ mv b B

[redhat@localhost test.read]$ ll

总用量 0

drwxrwxr-x. 2 redhat redhat 6 3月   7 23:36 A

-rw-r--r--. 1 root   root   0 3月   7 22:59 B

-rw-r--r--. 1 root   root   0 3月   7 22:59 c

二、文件的权限详解:

当你对文件的读,写,执行不理解的时候,说明你基本上应该放弃了,Linux的大门基本上就不向你开放了。

三、联系实际总结:

①删除一个目录内的文件,执行者首先要能够进入目录,再进入才能删除目录内的文件,所以需要具备wx权限。

创建一个文件的原理同删除。

②复制一个文件时,就是要读取一下该文件,所以有r权限就可以复制文件了。

linux 目录权限上下文,文件和目录的安全上下文相关推荐

  1. linux中权限对文件和目录的意义

    1.权限对文件的意义: 读:可查看文件的内容 写:可修改文件的内容(但不能删除文件) 执行:可执行文件 2.权限对目录的意义: 读:可以查看目录下的内容,即可以读取该目录下的结构列表 写:可修改目录下 ...

  2. linux查看和修改文件与目录的权限

    1.linux查看目录和文件权限 使用带"-l"选项的ls命令时,将以长格式显示文件或目录的详细信息,其中包括了该文件的权限和归属等参数.例如,执行如下操作列出当前目录下子目录和文 ...

  3. Linux中的默认权限与隐藏权限(文件、目录)

    一个文件(或目录)拥有若干个属性,包括(r/w/x)等基本属性,以及是否为目录(d)与文件(-)或连接文件(l)等属性.此外,Linux还可以设置其他系统安全属性,使用chattr来设置,以lsatt ...

  4. Linux常用命令之文件和目录处理命令

    目录 1.Linux命令的普遍语法格式 2.目录处理命令 一.显示目录文件命令:ls 二.创建目录命令:mkdir 三.切换目录命令:cd 四.shell内置命令和外部命令的区别 五.显示当前目录命令 ...

  5. linux以长格式显示当前目录的详细信息,Linux常用命令系列——文件和目录操作命令(ls)...

    文章目录: 1.语法 2.选项 3.参数 4.实例 4.1 显示当前目录下非隐藏文件与目录 4.2 显示当前目录下包括隐藏文件在内的所有文件列表 4.3 输出长格式列表 4.4 列出文件和文件夹的详细 ...

  6. Linux命令(20)linux服务器之间复制文件和目录

    linux的scp命令: scp就是secure copy的简写,用于在linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器.  有时我们需要获得远程服务器 ...

  7. linux文件操作和目录操作,Linux基础操作1——文件和目录

    Linux基础操作1--文件和目录 一.目录 1.mkdir dirname 建立子目录. 注意:用户不能在一个不存在的目录中建立子目录. 2.mkdir data 在当前目录下建立子目录data 3 ...

  8. linux判断目录是否存在命令,linux shell 中判断文件、目录是否存在的方法

    本文主要介绍了linux shell 中判断文件.目录是否存在的方法,分享给大家 -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为 ...

  9. linux函数怎么判断目录是否存在,linux C之判断文件或目录是否存在 access函数

    http://blog.sina.com.cn/s/blog_6a1837e90100uh5d.html access():判断是否具有存取文件的权限 相关函数    stat,open,chmod, ...

最新文章

  1. 需求文档可以不签字吗之二-理论推导
  2. Win10下如何更改默认浏览器
  3. 流行学习简单入门与理解
  4. 安卓activity生存周期的onCreate、onRestoreInstanceState、onRestart、onStart、onResume、onPause、onStop、onDestroy
  5. 彻底弄懂jsonp原理及实现方法
  6. Java复合函数循环_Java函数式编程(一)(示例代码)
  7. java spark命令行执行参数
  8. 2021-07-02 swift大礼包
  9. 一个合格的程序员应该读过哪些书
  10. 模拟CMOS集成电路设计 学习笔记(三)
  11. YDOOK: ANSYS Electronic Desktop Maxwell 19 教程1: 基本界面
  12. 【基于物理的渲染(PBR)白皮书】(三)迪士尼原则的BRDF与BSDF相关总结
  13. TBODY标签的作用介绍
  14. RobotStudio 示教器编程:MoveL指令
  15. 我是如何走进黑客世界的?
  16. python培训班-千锋教育Python培训-坚持高品质全程面授Python培训机构
  17. 伪装成抖音国际版Tiktok的短信蠕虫(病毒分析)
  18. 网安之php开发第十四天
  19. [Rust笔记]`Deref coercion`(自动解引用类型转换)精制总结
  20. 塔塔露也能看懂的服务器配置pytorch,TensorFlow教程

热门文章

  1. dubbo与zookeeper
  2. 视频码率[百科词条]
  3. Ubuntu 12.04下NFS安装配置
  4. winform窗体MaximizeBox
  5. 操作系统内存管理-原理
  6. Xcode 证书生成、设置、应用(转)
  7. Python笔记4 实例之批量修改文件名
  8. android camera2预览方向,Android camera2预览无法在横向模式下正常工作
  9. C语言之pthread_cond_wait()和pthread_cond_timedwait()区别(十五)
  10. java synchronized互斥锁使用