linux文件的基本权限、默认权限、特殊权限总结

时间:2021-06-24 15:12:33

1、linux文件属性权限简介

         生活中很多时候,都是你拥有什么权限,就享受什么待遇。就像你充值会员,享受成长加速一样,我们系统中的文件也是针对不同对象,设定了相应的操作权限的。linux把访问对象定义为三类:owner、group、other。给予他们的权限也细分为三种:r、w、x(read、write、eXecute)。

     文件的权限位分为三段表示,每一段对应上述的一位对象, -rwx-rw-r--  第一个-代表文件的类型为普通文件,rwx表示文件所属者拥有该文件的所有权限,rw-表示文件所属组拥有对该文件读写的操作,r- -表示其他人(非主人,非组人),只拥有读的权限。这些权限对于目录文件和普通文件的意义是有差别的,这里主要体现在了x执行权限上。对目录来说x权限是基础权限,有了它可以进入目录下进一步操作,缺了它啥也干不了。

对于文件来说,文件拥有x权限是很危险的事情,一不小心就会酿成大错。所以目录的最大权限就是7即rwx,而文件的最大权限是6即rw-.这三种权限可以根据需要来灵活搭配,下面我们来具体介绍一下权限的作用:

(1)权限对普通文件的意义

         r:可读取文件的内容

         w:可以修改文件的内容

         x:可以执行该文件(主要体现在执行脚本,不能单独使用,执行过程是从第一行执行到最后一行,所以要有r权限)

(2)权限对目录文件的意义

         r - - :只能查看目录的文件列表,不能访问文件,也不能cd目录

    -w-:单独使用对目录没意义,必须配合x权限才能生效

    --x:可以cd,不能ls,可以访问目录中你所知道的文件,x是目录的基础权限

    r-x :可以进入目录,且可以长列出

    wx:能进入,能创建、删除,不能ls。用户能否删除文件与文件自身权限无关,与文件所在目录有关。

    rw-相当于只有r

         rwx 最高权限,支持对该文件所有操作

         --- 没有权限

 

看了这么多组合,是不是有点蒙圈?来喝一口益生菌消化一下吧!

  1)  门都进不去,更不要说看清和搬东西了。但是你可以从外面把房子给拆了,前提是小区门岗不管你(有文件所在目录的权限权限),

  2)  r仅仅是显示目录中的文件列表,有了x才能进入目录(如果只有一个x权限,哪怕你看不见吃的,只要你能摸到依然可以吃),有rx眼就能仔细看,有wx手就能修改破坏。

 

可能大家发现了,权限的表示方式有两种:一种是模式法、一种是数字法

  目录的最大权限用数字法表示 777 用模式法表示就是 rwxrwxrwx

  文件的最大权限用数字法表示 666 用模式法表示就是rw-rw-rw-

 

来放点干货

 

修改文件的属主和属组为指定用户、指定组

  chown [uname]:[gname] filename

  或chown [uname].[gname] filename

修改文件的属主为指定用户,属组为该用户的主要组

  chown [uname]: filename

只修改属主

  chown [uname] filename

只修改属组

  chown :[gname] filename

  chgrp [gname] filename

递归修改d1下的所有文件的所属人、所属组

   chown -R mage:bin d1

 

2、权限的修改

数字法修改权限:

  chmod 764 filename 修改文件权限为rwxrw-r- -

模式法修改权限:

  chmod [ugoa] [+-=] [rwx] filename

选项中:u代表所属人、g代表所属组、o代表其他人、a代表所有人

  eg:chmod u+x filename  为文件或目录的所属人加上执行权限

           chmod o= filename 为文件其他人的权限重新赋值,- - -表示什么权限都没有。使用这种方法会覆盖之前的权限

           chomd g-x filename 为文件所属组去除执行权限

           chmod a=rw filename 为文件ugo给予rw权限

           chmod a-x filename 为文件ugo去除执行权限

                            -R 递归修改权限

                            -X 仅为目录添加执行权限(这种方法就是为了避免递归修改x权限时普通文件也给加上执行权限)

          chmod –R a=rwX dir2 给dir2下的目录赋予执行权限,文件赋予rw权限

     chmod --reference a b    b参考a的权限

3、默认权限

创建文件时会发现,我们没有给文件赋权限,它也会有一些权限,即默认权限。默认权限怎么看呢?

创建文件和复制文件时默认权限是不同的,具体如下:

  (1)创建文件时:最大权限-umask=默认权限

  (2)复制文件时:复制前权限-umask=复制后的权限

 

 

:目录最大权限 777, 文件的最大权限666

  设umask为:002 ,默认权限 775 664

  默认文件是不可以有执行权限的,权限减到奇数就会加一(只针对文件的权限计算)

    eg:666-345=(3+1)2(1+1)=422=-r---w--w-

 

    umask 查看当前的uamsk值

    umask -p 打印当前umask值

 

4、特殊权限

linux文件系统上的特殊权限:SUID,SGID,Stick

  通常情况下,用户是不能直接访问文件的,需要通过系统提供的二进制程序,来对文件进行访问。我们都知道文件是有访问权限的,那么二进制程序有么?当然,它也是有权限的。

通过二进制程序访问文件的步骤如下:

  (1)   任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有权限

  (2)   启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组

  (3)   进程访问文件时的权限,取决于进程的发起者

 

  SUID和SGID这两种特殊权限相当于发起人在启用进程时,进程的所属临时调用了二进制程序的所属,而不是发起人的所属。这就像是身份的临时转换,本来我是路人,是不可以进房间的,但是我把它租下来了,房东给我了一把钥匙,我就能进入房间了。身份也由路人转为了租客,当租期满后(进程结束)又变为路人。

(1)SUIDSGID作用在二进制的可执行程序上时:

    SUID发起人调用二进制文件,身份临时转为程序的所属人

    chmod u+s filename

           -s

    SGID 发起人调用二进制文件,身份临时转为程序的所属组

       Chmod g+s filename

                  -s

 

(2)SGID作用在目录时

    功能:新建文件的所属组自动继承父目录的所属组

 

(3)sticky 粘滞位

    作用在目录上才有意义

    chmod o+t filename

                -t

功能:只有自己(文件所属人)才能删除自己的文件。覆盖范围仅是在增加了粘滞位的目录下的一级子目录,不会影响二级、三级..等目录。

 

 

5、例题

   (1)刘关张,未来创建的文件/目录,其他人没有任何权限,而彼此之间可以相互读写。(三人的主组不相同),且不能删除别人创建的文件。

   linux文件的基本权限、默认权限、特殊权限总结

     图1-1,创建三个用户,使他们共属于shuguo组(附属组),主组为各自的名称的组

        linux文件的基本权限、默认权限、特殊权限总结

                图1-2,注释见图

       linux文件的基本权限、默认权限、特殊权限总结

                图1-3,注释见图

       linux文件的基本权限、默认权限、特殊权限总结

                图1-4,注释见图

       linux文件的基本权限、默认权限、特殊权限总结

                图1-5,注释见图

       linux文件的基本权限、默认权限、特殊权限总结

                图1-6,注释见图

       linux文件的基本权限、默认权限、特殊权限总结

                图1-7,注释见图

       linux文件的基本权限、默认权限、特殊权限总结

                图1-8,注释见图