用户的权限管理:

普通权限:

特殊权限:

文件的特殊属性:

FACL:



普通权限:

  进程安全上下文:

  1、判断进程的所有者是否为想要的操作的文件的属主,如果是,就按照属猪的权限进行授权;如果不是,就转到第二条

  2、判断进程的所有者是否为想要的操作的文件的属组中的成员,如果是,就按照属组的权限进行授权;如果不是,就转到第三条

  3、权限的构成:

  MODE(permission):使用权

    r:readable

    w:writeable

    x:executable

    目录:

      r:可以使用ls命令获得其中所有的文件名的列表;ls -l命令来获得目录中文件的详细属性信息,也不能使用cd命令进入其中,也不能在路径中引用该目录

      w:可以修改此目录中的文件名或文件名列表,即:可以在目录中修改、创建或删除文件名

      x:可以使用ls -l命令来获取其中的文件的详细属性信息,也可以在路径中引用该目录,也可以使用cd命令进入其中,x权限是目录的基本权限,任何目录都必须对任何用户开放x权限,


    文件:

      r:可以查看或获取文件中存放的信息

      w:可以修改文件中存放的数据

      x:可以将此文件发起运行为进程

  ls -l====ll:三个权限位---属主、属组、其他用户

    只有某个文件的属主才能修改文件的使用权(root除外)

    修改文件的使用权限:

chmod:修改文件的权限位;

  mode:符号权限表示法

  u,g,o,a表示所有权限

  +,-,=表示授权方式 

  +:在原有的权限基础上添加权限

  -:在原有的权限基础上去除权限

  =:不考录原有权限,直接将权限设置为目标权限

  chmod u+w file

  chmod g+rw file

  chmod u+x,g-wx,o-x file

  chmod u=rw,g=r,o-r file

  chmod ug-x file

  chmod +x file  默认的为a添加执行权限

  chmod +w file  默认的只为属主添加写权限

  chmod --reference=/path/to/somefile des_file

  -R:--Recursive:将目标目录中的文件及子目录中的文件统一设置为指定的权限标识

注意:文件的执行权限:Linux的系统来说,非常重要的安全标识;一旦文件具备执行权限,意味着该文件可以被发起为执行进程,所以,默认情况下,文件都不具备执行权限


如果使用八进制数字标识法,则每次必细给足所有的权限位,

chown:可以修改文件的属主和属组

  chown OWNER FILE 只修改属主

  chown :group file 只修改属组

  chown owner:group file 将目标文件的属主改为owner,同时将属组修改为owner的基本组

  chown owner:group file 将目标文件的属主和主组修改为owner和group

修改ownership操作只有root能做


chgrp:只能修改文件的属组







install命令:安装:复制文件;为文件赋予属性(执行权限)

  单源复制:

  多源复制:

  创建目录:

常用选项:

  -m:--mode:指定目标文件的权限

  -o:--owner:设定目标文件的属主,仅root能用

  -g:--group:设定目标文件的属组,仅root能用

注意:install命令不能复制目录,及其源不能为目录;如果起源为目录,则install经历了会进入目录,依次复制其所有的非目录文件到目标位置


mkdemp命令:

  一般来讲,临时文件都会创建在/tmp或/var/

  tmp目录中:无需手动删除,系统会定期清除这两个目录中的内容

  例子:mktemp [-d] /path/to/tmp.xxxxxxxx



特殊权限:

  SUID:功能作用;用户发起执行一个过程时,该程序文件如果拥有SUID权限的话,那么该程序发起的进程其属主为该程序文件的属主,而不是其发起者

  SUID权限所在的位置:文件的属主权限中的执行权限位;如果属主本来就有执行权限,显示为s,否则显示为S

  管理文件的SUID权限:chmod u+|-s FILE...

 

  SGID:如果某个目录的对于对于一些用户有写权限时,则所有对此目录有写权限的用户在创建新的文件或目录后,新文件数组权限不再是创建用户的基本组,而是继承了该目录的属组

  SGID全线显示的位置:文件的属组权限中的执行权限位;如果数组本来就执行权限,显示为s,否则为S


  STYCKY:sticky(粘性的):粘滞位

  如果某个目录中,有超过一个用户有写权限,则多个用户都可以在该目录中随意创建、修改和删除文件名

  功能作用:如果为上述类似的目录设置了STICKY权限,则每个用户仍旧能够修改文件名,但每个用户只能删除那些属主自身的文件名

  STICKY权限的显示位置:在文件权限的其他用户的执行权限位;如果原来就有执行权限,则显示为t;否则,显示为T;

  管理文件的STICKY权限:chmod o+|-t FILE...

suid sgid sticky

--- 000 0

--t 001 1

-s- 010 2

-st 011 3

s-- 100 4

s-t 101 5

ss- 110 6

sst 111 7

  每个用户仍能创建和修改文件名,但每个用户只能删除那些属主为其自身的文件名


特殊权限的另一种修改方式:

  将特殊权限对应的八进制数字放置于普通权限八进制权限的前面即可

  例如:想要给某个用户加上粘滞位:chmod 1755 DIRECTORY...


umask:权限遮罩码:在创建文件或目录时默认的权限生成标准

root:0022

    不考虑特殊权限位

  对于新创建的文件或目录,不遮挡属主的任何权限;遮住了属组的写权限和其他用户的写权限

  mkdir test --> rwxr-xr-x

  touch test --> rw-r--r--    

  文件的默认权限是:666-umask

  目录的默认权限是:777-umask

理解遮罩码:将遮罩码的值变为二进制,凡是有1的位置,其权限在创建文件时,就不设置

  033   000011011  ---110100100   644   

                   ---111100100   744

默认情况下,文件的遮罩码已经有了一个0111,在此基础上再次应用umask来遮罩权限


文件的特殊属性:

  查看文件的特殊属性:lsattr:list file attributes on a Linux second extended file system

                      lsattr [ -RVadv ] [ files...  ]

  修改文件的特殊属性:

    chattr:chang file attributes on a linux file system

    chattr:[-rvf][-v version][mode]files...

      mode:会使用+-=的方式来设置

      整个chattr命令最关键的核心的设置就是[mode]部分

          [aAcCdDeijsStTu]都是所需要的属性

    +:在原有属性设定的基础上,添加新属性

    -:从原有属性设置中移除指定的属性

    =:不考虑原有的属性设置,直接将文件的属性更新为指定的属性内容

    a:append,设置这个属性的文件,其内容不能被更改和删除,只能以追加的方式向文件中写数据;多数的服务器日志类文件会设置为此属性

    A:atime,文件的访问时间戳;IO瓶颈;设置A属性,可以使得文件在被访问时不更改文件的访问时间戳,从而可以有效的防止IO瓶颈的发生

    c:设置文件是否自动压缩后再行存储

    C:设置文件是否开启"写时复制"属性

    d:设置文件在使用dump进行备份的时候,不会称为备份目标

    D:设置文件在文件系统中的异步写操作

    i:设置文件不能被删除、修改、设定链接关系

    s:设置文件的保密性删除,一旦设置s属性的文件被删除,其对应存储设备中的使用空间会被一并收回

    u:跟s属性相反,如果这样的文件被删除,则其存储于存储设备中的数据会被留存

    最常用的属性:i和a

    chattr +i FILE


常用选项:

  -R:递归的设置指定目录中的所有文件和子目录的属性

为文件赋予额外的权限机制:FACL:file access control list,文件访问控制列表

  文件的额外赋权机制:

  在原有的u,g,o权限位之外,让普通用户能够控制权限赋予另外的用户和组的一种赋权机制

  一般在centos或RHEL7版本以后的发行版中,才逐渐成熟

 与FACL有关的命令:

  getfacl:get file access control lists

    getfacl [-aceaEsRLPtpndvh] file...

      user:USERNAME:MODE

      group:GROUPNAME:MODE

      other::MODE

    setfacl:set file access control lists

      setfacl [{-m|-x} acl_spec] file ...


      acl_spec:acl_specification,指定的访问控制列表

      u:USERNAME:MODE

      g:GROUPNAME:MODE

        MODE:一般使用权限符号标识法

    为用户赋予额外权限:

       setfacl -m u:USERNAME:MODE FILE...

    为组赋予额外权限:

       setfacl -m g:GROUPNAME:MODE FILE...

    撤销为用户赋予的额外权限:

       setfacl -x u:USERNAME

    撤销为组赋予的额外权限:

       setfacl -x g:GROUPNAME

    注意:如果设置了FACL之后再修改目标文件的使用权限,那么FACL中设置的条目就可能收到影响而导致与要求不符;因此,如果真的需要设置FACL,就要在已经确定目标文件的使用权限以后再行设置;


  默认情况下,用户发起执行一个进程,该进程的属主是其发起者;也就是说,该进程是以其发起者的身份运行的 



  OWNERSHIP:所有权

    属主:资源掌控的某个特定用户owner(user)

    属组:资源掌控的某些特定用户group,g

    其他用户:other,o

    全部用户:all,a