文件和目录的安全上下文

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件和目录的安全上下文相关的知识,希望对你有一定的参考价值。

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

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


目录和文件的权限详讲:

  一、目录的权限详讲:

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

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


              [redhat tmp]$ cd test

              [[email protected] test]$ mkdir test.read

              [[email protected] ~]$ chmod 400 /tmp/test/test.read/

              [[email protected] test]$ su - root

              [[email protected] ~]# cd /tmp/test/test.read/

              [[email protected] test.read]# touch a b c 

              [[email protected] 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

        [[email protected] test.read]# su - redhat

             [[email protected] ~]$ 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信息。

               

              [[email protected] test]$ ls -id test.read/

              33556153 test.read/


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


              [[email protected] test]$ chmod 500 /tmp/test/test.read/

              [[email protected] 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


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

 

              [[email protected] test]$ cd test.read/

              [[email protected] test.read]$ mkdir woaini

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

              [[email protected] test.read]$ rm -rf a

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

              [[email protected] test.read]$ mv a  A

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


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


                       [[email protected] test]$ chmod 500 /tmp/test/test.read/

  [[email protected] 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

  [[email protected] test]$ cd test.read/

     [[email protected] test.read]$ mkdir woaini

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

     [[email protected] test.read]$ rm -rf a

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

     [[email protected] test.read]$ mv a  A

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

     [[email protected] test.read]$ chmod 700 /tmp/test/test.read/ 

     [[email protected] test.read]$ rm a

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

     [[email protected] test.read]$ mkdir A

     [[email protected] test.read]$ mv b B

     [[email protected] 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” 博客,请务必保留此出处http://ridingonhorse.blog.51cto.com/11265295/1748656

以上是关于文件和目录的安全上下文的主要内容,如果未能解决你的问题,请参考以下文章

SELinux系列安全上下文的修改和设置(chcon和restorecon命令)

SELINUX+PASSWD实战

谢烟客---------Linux之文件安全上下文及特殊权限位

Linux之SElinux安全上下文件

Flink1.15源码解析--安全模块及安全上下文

Flink1.15源码解析--安全模块及安全上下文