权限管理

一、权限:

                权限的限制是用于限制其他用户对某文件的操作。


第一类:修改属主属组

              chown(主要用于更改属主,但也可以更改属组) 

              chgrp(主要用户更改属组)

 


第二类:修改UGO或者特别权限

              chmod (修改UGO权限以及特殊权限)

              umask(修改掩码在创建文件之前,修改,)

              setfacl(修改ACL列表)

              chattr(修改隐藏权限)

 


  单单只看属组和属主是谁或者UGO是没有任何意义的,要把属主和属组和UGO权限一起看才有意义。

 


第一类:修改属主属组



         1、chown (可以改变属主,属组,属主和属组一起)

              如果只改变属主:


             基本语法:chown 属主名 文件名


                   示例:
                       把file1的属主改成Mike

                             chown mike file1


                      把file2的属组改成Mike组

                            chown .mike file (.也可以换成:)

                     把file3的属组和属主都改成Mike

                           chown mike.mike
 


       2、chgrp (修改属组的操作)
               

               基本语法:chgrp 属组名 文件名

              重要选项: -R 递归修改目录的属组操作

                示例:要改变mylinux下所有文件的属组变成nick

                    [root@Nick tmp]# chgrp nick mylinux/

                    drwxr-xr-x. 3 root nick 18 10月 21 15:24 mylinux

                       发现外层的确奏效了

                   [root@Nick tmp]# ll mylinux
                    总用量 0
                    drwxr-xr-x. 2 root root 6 10月 21 15:24 mine

                   里面的文件并没有改变,这时我们就要想起来chgrp -R选项,不能一个个改

                   [root@Nick tmp]# chgrp -R nick mylinux/

                  最后查看,都的确好了

                   [root@Nick tmp]# ll mylinux
                   总用量 0
                   drwxr-xr-x. 2 root nick 6 10月 21 15:24 mine

  
         

 

3、chmod (修改属主属组其他用户对文件的权限)

   基本语法:chmod 权限限定 文件

   实例化就成为

    chmod 755 file1 (直接写值方法)
    chmod o+x file1 (添加[一般|特殊]权限方法)
    chmod a=rw flie1 (赋值方法)
    三类操作

  

    举例:

第一类 chmod 755 file1 (直接写值方法):

        

        

第二类 chmod o+x file1 (添加[一般|特殊]权限方法):

       


 

第三类 chmod a=rw flie1 (赋值方法)

     

并不是全部人有全部权限,就可以为所欲为。
      举例:

       虽然全部人权限都是777 但是并不能删除重要的目录

 


 

总结:
           权限位,可以用两种方法来表示:
              1、字母 rwx(读写执行)
              2、数字 421

     linux里面一切皆文件,不管是目录或者是文件。只是显示的方式不一样。
     不管是对于目录还是文件而言,一切的文件都是一样的。

     文件存储的是我们可以直接看得见的东西(直观,可以vi看得见),而目录是存储的是目录里面的信息,文件名字,数目(抽象的,不能vi看得见)。


     比如说一个文件有执行操作与一个目录有执行操作。

     文件的执行操作体现于可以运行,目录的执行操作体现于可以进入到目录底下(仅次于可以进入,其他什么都看不见,ls操作都不够权限)。
      可以抽象理解为把这个进程加载到内存里,在内存里运行了,仅仅是运行了。
     举个例子:执行qq,但我们并不知道qq里面写的是什么,我们也不能改变写的内容。(正常情况下)
     执行权限在脚本,服务那一块很重要;(脚本需要有执行权限才可以运行,服务需要控制某些用户的权限)
  

    再比如说,一个文件有写操作与一个目录有写操作
    在文件中是体现为写入删除并可以保存一些文字 并且最终改变了文件的大小,这些文字最终表现为二进制操作对文件执行了。
    在目录中是体现为可以新建文件或者删除文件。这些操作最终也是转化成二进制操作对目录文件执行了。
   

    最后说,一个文件有读操作和一个目录有读操作
    读就只能把文件内容,从二进制存储转化为文字出来供用户查看。对于目录的话,就是把目录文件的信息和文件类似,转化成目录信息供用户进行查看(ls)
    我想说明的是,文件的权限,不管是目录还是文件,在linux都可以统一理解他的权限的意思。而不用分开记忆理解。
 


 

4、umask(修改文件掩码在创建文件之前,会改变文件的初始权限)

      首先使用查看现在的mask是多少

       

     

创建一个目录查看权限

       

现在默认创建的目录的权限是775

            775的由来是777-002

 

再看看文件默认的权限

        

现在默认创建的文件的权限是644

           664的由来是666-002

 

5、setfacl(修改ACL列表)

        ACL相当于是给某个用户对某个文件或目录赋予特权.

        setfacl命令可以用来细分linux下的文件权限。
        chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限。
        换句话说,setfacl可以更精确的控制权限的分配。
        比如:让某一个用户对某一个文件具有某种权限。

基本语法: setfacl -m u:username:rwx(权限)  file(文件)      //针对用户

                   setfacl -m g:Groupname:rwx(权限)  file (文件)

                  setfacl -b file              //清除facl

                  setfacl -x u:username file

                  setfacl -x g:username file

 

例子:

         查看facl列表:

              

     修改后查看:

           

          

        虽然说可以看见他以及变色(可执行文件的颜色),而且多了+这个符号。

       但是在nick用户还是不可以运行的。而在Mike用户下就可以运行

Nick用户下:

          

Mike用户下:

         

清除一下facl列表:

             

清除之后就成原来默认的一样了;

         对组做facl权限列表操作,并查看:

              

在nick用户:

         

在Mike用户

 

      

删除mike组的facl权限:(使用-x选项)

          

删除mike 用户的facl权限:

          

 

6、SUID、SGID、BIT

当s这个标志出现在文件所有者的x权限上时,此时就被称为Set UID(SUID)。

例如执行ls -l /bin/su可以看到


执行ls -l /usr/bin/passwd 可以看到

在文件所有者的x权限上都出现了s权限,那么这个特殊权限的特殊性的作用是什么呢?

 个人总结:

       1、SUID权限仅对二进制程序有效。
       2、执行者对于该程序需要具有x的可执行权限。
       3、执行者将具有该程序拥有者的权限。

  

      SUID的关键作用体现在第3句,SUID的目的就是:让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源。

例如:
1、大家都知道su这个命令,无论任何人,执行了它都将具有root权限,因为他的拥有者是root,而且这个权限仅在执行的su命令中有效,从上面的截图可以看到,不管是文件拥有者,文件拥有者所属组,还是其他人,都是具有x权限的,所以都可以执行该程序,执行之后就将具有该程序拥有者的权限,即root的权限,这也就是su命令能够切换用户权限的实现原理。

2、系统中的用户密码是保存在/etc/shadow中的,而这个文件的权限是


关键是要把密码写入到/etc/shadow中。我们知道,除了root用户能修改密码外,用户自己同样也能修改密码,为什么没有写入权限,还能修改密码,就是因为这个SUID功能。从截图2可以看到,passwd的文件拥有者,文件拥有者所属组,还是其他人,都是具有x权限的,所以都可以执行passwd,当执行了之后获得root的权限也就能进行密码的修改。

注:这个SUID只能运行在二进制的程序上(系统中的一些命令),不能用在脚本上,同样也不能放到目录上,放上也是无效的。

Sticky Bit

这个就是针对others来设置的了,和上面两个一样,只是功能不同而已。
SBIT(Sticky Bit)目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。
最具有代表的就是/tmp目录,任何人都可以在/tmp内增加、修改文件(因为权限全是rwx),但仅有该文件/目录建立者与 root能够删除自己的目录或文件。

注:SBIT对文件不起作用。

  SUID/SGID/SBIT权限设置
和rwx权限一样,s、t也有两种设置方法:
1、文字法 :SUID: u+s ,SGID: g+s,SBIT: o+t
2、数字法:将原来的三位数扩展为四位数即可,SUID为4,SGID为2,SBIT为1,把它们放在权限数字的最开头。例如设置SUID,可以写成4777,设置SGID可以写成,2777
 

权限的排序:

         

         

        

       

                     

用mike用户打开

      

   

总结:

     虽然面板显示的权限是666,但是facl的权限限制了Mike的权限是4,又u+s

       facl>特别权限>普通权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值