【Linux】利用linux文件系统权限控制文件访问

1、文件详细信息:

          

    ①说明:(第一行)

        第一段:共十一个字符。第一个字符为文件类型,紧接着的9个字符三个为一组代表不同类的人对文件的权限,最后一个“.”表示ACL访问控制列表(更改了访问控制列表“.”会变成“+”)

        第二段:硬链接次数

        第三段:所属者

        第四段:所属组

        第五段:文件大小

        第六段:文件最后一次修改时间

        第七段:文件名

    ②权限:

           所属者的权限:u(user)

           所属组的权限:g(group)

           其他人的权限:o(other)

           所有人:a(all)

      ③读、写、执行:

           读:r--4

           写:w--2

           执行:x--1

      ④二进制表示权限:

二进制

十进制

权限

  000

 

0  

 

---

 

  001

1  

--x

 

  010

 

2  

 

-w-

 

   011

 

3

 

-wx

 

   100

 

4  

 

r--

 

   101

 

5  

 

r-x

 

   110

 

6  

 

rw-

 

   111

 

7

rwx

 

                             例:rwxr-xr-x:755

 

 

 2、修改文件的属主和属组

       ①只改所属者:chown 所属者  文件名

       ②改所属主和所属组:

                chown 属主:属组 文件名

                chown 属主.属组 文件名

      ③修改所属者以及所属组变为以前面所属者用户为基本组: Chown 所属主.    文件名

      ④只改所属组:

                 chown    : 所属组 文件名

                 chgrp 属组 文件名

 

       

       

     

说明:用户user1所属者 所属组现在为一个数字,是因为之前用户在,后来被删除留存了文件,依旧以之前用户的uid为所属者和组,若添加一个新用户制定uid为60000则,现在文件所属者和所属组为新添加的用户名。

 

3、修改权限:

      ①符号法:chmod u/g/o/a =/+/-   r/w/x 文件名

         (1)如:给mima文件所有人(所属者、所属组、其他人)加上w权限。

             

             

          (2)如:给mima文件的权限为rw-r-----

             

       ②数字法:chmod 777 文件名

             (77表示:rwxrwxrwx)

        如:给mima文件所有人(所属者、所属组、其他人)的权限都为改为rwx。

           

           

          

 

 4、一般权限:

      ①对于普通文件(一般有执行或可以编辑文件权限时都要给加上可读权限)

        (1)r----可读取此文件的实际内容(cat查看文件);

        (2)w---可编辑该文件的内容(vim,echo),但并不具备删除该文件本身的权限(删除文件由文件的上层目录控制,跟文件本身的权限无关。)

        (3)x--- 该文件具有可以被系统执行的权限,chmod

       vim file

      #!/bin/bash

      echo 'Hello Word!'

   ./file

 

    例1:/home/ceshi/file文件以root用户为所属者和所属组,且root组内不包括11111用户。且file文件对其他人权限只有可写权限。问11111用户可以修改文件内容吗?

         (1)查看root组成员确认无11111用户

           

         (2)查看/home/ceshi/file文件权限

          

         (3)切换至11111用户

          

        (4)11111用户查看文件内容被拒

          

        (5)11111用户可编辑文件内容

           

         (6)root用户查看文件内容确认已被修改

           

         说明:11111用户不在root组内,对文件/home/ceshi/file 文件来说为其他人(11111用户),文件file对其他人的权限为可写但没有可读权限,虽然查看不了文件内容但是可以修改文件内容。

 

      例2:/home/ceshi/file文件以root用户为所属者和所属组,且root组内不包括11111用户。/home/ceshi/目录文件对其他人的权限为读、写和执行,/home/ceshi/file文件对其他人没有任何权限。问用11111用户测试时,想修改file文件内容可以修改成功吗?

        (1)查看/home/ceshi/目录文件权限

            

        (2)查看/home/ceshi/file文件权限

            

        (3)切换至11111用户去编辑/home/ceshi/11111文件内容

            

         (4)root用户查看/home/ceshi/file文件内容,已被修改。

            

        (5)/home/ceshi/file文件的所属者变为11111用户,且以11111用户作为其基础组。

            

         说明:/home/ceshi/目录文件对其他人权限为可读写可执行,意味着可以删除目录下的文件,既然可以删除文件,表示强制修改文件内容也是允许的,所以无论/home/ceshi/file文件对其他人(11111用户)是否有写的权限,其他人都可以修改/home/ceshi/file文件内容,且/home/ceshi/file以修改文件内容的那个其他人(11111用户)为所属者并以其为基础组。

 

       ②对于目录文件(一般给权限时rwx/rx/---)

        (1)r---具有读目录结构列表的权限,可以查询该目录下的文件名数据(ls将该目录的内容列表显示出来)

(2)w---空

(3)x---用户能否进入该目录(cd),chmod

 (同时有w和x权限才可以创建、删除文件和目录)

  

       例:/home/ceshi/file文件以root用户为所属者和所属组,且root组内不包括11111用户。/home/ceshi/目录对其他人的权限为只读,当11111用户查看/home/ceshi/目录下的文件时,可以查看目录下文件详细属性吗?可以在目录下创建文件吗?可以切换到目录下吗?

          (1)查看/home/ceshi/目录权限

               

           (2)切换至11111用户

               

           (3)ls查看/home/ceshi

                

          (4)ll查看/home/ceshi

                

         (5)尝试切换到/home/ceshi/

               

         (6)尝试在目录下创建文件

               

         (7)给/home/ceshi/目录文件对于其他人添加x可执行权限

               

               

          (8)此时11111用户可以cd到/home/ceshi目录

               

          (9)也可详细查看目录下文件的属性

               

          (10)给/home/ceshi/目录文件对其他人加上w权限

              

           (11)在/home/ceshi/目录下创建redhat文件

              

           (12)查看创建的文件,已成功。

              

           说明:11111用户ls查看目录下的文件虽然被拒绝但是还是可以看到有哪些文件,ll查看目录下文件的详细属性却不能查看。也不能切换到目录下,以及在目录下创建文件。若想可以切换到目录下并且查看目录下详细属性必须给/home/ceshi/目录对于其他人添加x可执行权限。若其他用户想在/home/ceshi目录创建文件,必须对其他人有w和x权限。

 

5、特殊权限:

         ①suidu+s,让进程的所属者不再属于它的发起者,而是属于程序文件本身所属者。(suid只对二进制文件有效;调用者对该文件有执行权;在执行过程中,调用者会暂时获得该文件的所有者权限;该权限只在程序执行的过程中有效)

          (1)查找passwd的程序文件位置:which passwd

                         chmod u+s /usr/bin/passwd

         (2)查看进程信息:ps -ef

         (3)若所属者权限中有S则本来无x权限,若为s则原来有x权限。

       如:想对普通用户11111修改密码,执行passwd命令,passwd的可执行文件/usr/bin/passwd所属者为root用户,且该文件对root用户的权限为wsr,虽然是11111用户执行passwd文件并且去寻找了该命令可执行文件,但该可执行文件中对root用户有特殊权限s,即可生成修改密码进程的时候,可执行文件的发起者由普通用户11111变成该文件的所属者也就是root用户,则最终去修改密码文件/etc/shadow的也是root用户。因为本身只有root用户可修改密码文件信息,所以普通用户想修改密码就会修改成功。

         ②sgid:g+s,对于普通文件,以组的权限执行,修改/usr/bin/touch的g+s,touch文件后文件所属组为root(作用于普通文件时,和suid类似);对于目录文件,目录的属组是谁,在目录下创建的文件的属组是目录的属组。

        ③sticky:o+t,不能够删除其他用户在同目录里创建的文件,可删除自己创建的文件 

     (1)创建目录/test

     (2)添加三个用户

     (3)让每一个用户在目录里面写文件

     (4)用户3删除1和2用户的文件

     (5)目录 o+t

     (6)重复3、4步操作,验证是否能够删除其他用户在同目录里创建的文件

 

        测试:/test/下有四个文件来自不同的三个用户。

          (1)查看/test/下的文件,所属者为不同用户,且都不在一个组里。

          

          (2)查看/test/目录的权限。1111和wukong用户对于该目录来说为其他人,是有可读写执行权限。所以有删除目录下文件的权限。

          

         (3)但给其他人加上t权限后,目录的文件就不能随意被其他人删除。所有文件只能由文件的所属者删除。(但是对root没有限制,可以随意删除)

         

         

         

 

6、ACL(Access Control List,访问控制列表)可以对某个文件设置该文件具体的某些用户的权限,意思就是通过ACL可以对一个文件权限做扩展,可以不同的用户对某个文件有不同的权限。

       ①获取文件的访问控制信息:getfacl 文件名

       ②setfacl 设置文件的acl

       ③修改文件的acl:

        (1)针对用户做文件权限扩展:setfacl -m u:用户名:权限 文件名/目录名

        (2)针对组做文件权限扩展:setfacl -m g:组名:权限 文件名

        (3)清空所有的文件权限扩展:setfacl -b  文件名

        (4)清空一个人的文件权限扩展:setfacl -x  g/u:组名/用户名  文件名

 

7、权限掩码:控制创建文件的权限

      umask的值有四位,分别代表:Gid/uid,属主权限,属组权限,其他用户权限。一般用后三位。当第一位为2和4权限就叫强制位,1的权限就是冒险位,2代表GID,4代表的是uid。

      ①文件的权限属性:

        (1)普通文件的权限属性:666(固定)

        (2)目录文件的权限属性:777(固定)

      ②文件的权限属性 = umask后三位 + 所对应文件权限

      ③查看权限掩码:umask   

      ④修改权限掩码:umask  权限掩码值(一般取后三位,如:022)

 如:umask值为022,普通文件属性为666,(666-022=644),该file文件权限用二进制表示为644,符号表示为rw- r-- r--。

 

如:umask值为022,目录文件属性为777,(777-022=755),该wukong1目录文件权限二进制表示为755,符号表示rwx r-x r-x。

     注意:修改umask值为033,普通文件权限属性 -  umask值 = 文件权限,则为666-033=633,若按数字法算则文件权限应该为rw- r-x r-x,但是却为rw- r-- r--,数字表示为644呢?

   此时用符号法来算更清楚,应该用(rw- rw- rw-)-(--- -wx -wx)= (rw- r-- r--)

   若之后遇到用数法算出文件权限为奇数时应该注意此问题。

       

       


版权声明:本文为trichloromethane原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。