Linux权限

Linux权限管理

基本权限 ugo

基本权限9个字节组成,分成三段
rw-r--r--
基本权限对于root无效的 x

  1. 对于文件来说,用户分为三类
    u --user 文件的拥有者
    g --group 文件的所属组
    o --other 其他人
    a --all 所有

  2. 权限的分类

    r --read 读权限
    w --write 写权限
    x --execute 执行权限

    -无权限

    • 文件:

      r 读 查看文件的内容

      w 写 编辑文件的内容

      x 执行 执行文件

    • 目录:

      r 读 查看目录的内容

      w 写 修改目录的内容

      x 进入目录

  3. chmod 修改或设置文件的权限

    -R 递归修改

    • 数字权限

      权限对应的数字
      r      4
      w      2
      x      1
      -      0
      # chmod  664  文件名
      
    • 字母表示:u g o a

      • 等值权限 =

        # chmod  o=r  passwd
        
      • 增值权限 +

        # chmod o+w pass
        
      • 取消权限

        # chmod o-w  pass
        # chmod u-x,g+w,o+r pass
        
        # ls -l /priv/passwd 
        -rw-r--r-- 1 root root 2625 3月  20 11:45 /priv/passwd
        -:文件类型 普通文件
        rw-r--r--:文件的权限
        1:链接数  
        root:文件的所有者,即属主
        root:文件的所属组,即属组
        2625:文件的大小,单位是Byte 字节
        3月  20 11:45:文件的最后修改时间
        /priv/passwd:文件名
        

修改文件的属主属组

chown ---change owner 修改文件的所有者和所属组的命令

  • 修改文件的所有者和所属组

    # chown u1 passwd   //只修改文件的所有者
    # ll
    -rw-r--r-- 1 u1 root 2625 3月  20 15:21 passwd
    # chown :u2 passwd  //只修改文件的所属组
    # ll
    -rw-r--r-- 1 u1 u2 2625 3月  20 15:21 passwd
    # chown u2.u1 passwd  //同时修改文件的所有者和所属组
    # ll
    -rw-r--r-- 1 u2 u1 2625 3月  20 15:21 passwd
    
  • 修改目录的所有者和所属组 同修改文件的所有者和所属组一样

    注意:修改目录的所有者和所属组(只会修改目录本身,对它里面的文件或目录无影响)

    # chown -R .jim /a  
    -R 递归修改目录的所有者和所属组,会同时作用于目录里面的所有文件及目录
    

高级权限(acl umask suid sgid sticky attr)

umask

  • umask:决定一个用户创建文件和目录的默认权限
    root
    创建目录的默认权限 755
    创建文件的默认权限 644
    普通
    创建目录的默认权限 775
    创建文件的默认权限 664
    目录的最大权限777
    文件的最大权限666
    用户创建文件的默认权限=文件的最大权限-umask
    用户创建目录的默认权限=目录的最大权限-uamsk

    777 rwxrwxrwx      666  rw-rw-rw-
    031  ----wx--x     031  ----wx--x
    ----------------------------     ---------------------------------
    746   rwxr--rw-    646  rw-r--rw- 
    
  • 查看用户umask

    # umask
    [jim@server tmp]$ umask
    0002
    root@server tmp]# umask 
    0022
    
  • 修改用户的umask 只对当前终端生效

    # umask 031
    # umask 
    0031
    

特殊权限

特殊权限实现的原理
当做某些特殊操作时,能够临时获得最高权限,当操作完成,权限被收回。

  • suid ----对二进制可执行命令设置,当用户该执行命令时,会临时获得这个命令的所有者的权限

    • 添加权限:

      # chmod u+s  二进制可执行命令       0755
      # chmod 4755  二进制可执行命令        
      
    • 取消权限:

      # chmod u-s  二进制可执行命令
      

      设置该权限后,u的x位-->s

      # ls -l /usr/bin/passwd
      rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd
      
  • sgid ----对二进制可执行命令设置,当用户该执行命令时,会临时获得这个命令的所属组的权限
    ---- 对目录设置,那么所有用户在该目录下创建文件和目录的所属组会继承该目录的所属组

    • 添加权限:

      # chmod g+s  目录       
      # chmod 2777  二进制可执行命令
      
    • 取消权限:

      # chmod g-s  目录 
      

      设置该权限后,g的x位-->s

      # ls -ld /tmp/test
      drwxrwsrwx 2 root jim 6 3月  21 10:05 test
      
  • sticky ----粘贴位 一般作用于所有人都有全部权限的目录上,用来限制用户只能删除自己的文件,不能够删除其他用户的文件(root用户除外)

    • 添加权限:

      # chmod o+t  目录       
      # chmod 1777  二进制可执行命令    
      
    • 取消权限:

      # chmod o-t  目录 
      

      设置该权限后,o的x位-->t

      # ls -ld /tmp/test
      drwxrwxrwt 2 root jim 6 3月  21 10:05 test
      

ACL

ACL (Access Control List) 访问控制列表,在ugo的权限中,两个用户对于文件来说,都是other,但是想要不同对待,ACL主要是针对单一用户、单一文件或目录对rwx权限进行细分,可以针对用户、群组还有umask进行设置
setfacl 设置文件的访问控制列表
getfacl 查看文件的访问控制列表

  • 为用户添加访问控制

    setfacl -m u:用户名:权限 file ...

    # cp /etc/pass  /tmp
        例:u1用户对文件能读写,u2用户对文件只读,jim用户对文件没有任何权限
    # cd /tmp
    # setfacl -m u:u1:rw pass 
    # ls -l  pass      //设置acl权限后,使用ls -l查看文件,权限部分会有一个+符号
    -rw-rw-r--+ 1 root root 2558 3月  21 11:06 pass
    # getfacl pass
    # file: pass
    # owner: root
    # group: root
    user::rw-
    user:u1:rw-
    group::r--
    mask::rw-
    other::r--
    # setfacl -m u:jim:- pass
    # getfacl pass
      # file: pass
      # owner: root
      # group: root
      user::rw-
      user:jim:---
      user:u1:rw-
      group::r--
      mask::rw-
      other::r--
    
  • 移除单个用户的访问控制列表

    例:移除jim的acl

    # setfacl -x u:jim pass
    # getfacl pass
      # file: pass
      # owner: root
      # group: root
      user::rw-
      user:u1:rw-
      group::r--
      mask::rw-
      other::r--
    
  • 移除全部用户的访问控制列表

    # setfacl -m u:u3:rw pass
    # getfacl pass
      # file: pass
      # owner: root
      # group: root
      user::rw-
      user:u3:rw-
      user:u1:rw-
      group::r--
      mask::rw-
      other::r--
      
    # setfacl -b pass
    # getfacl pass
      # file: pass
      # owner: root
      # group: root
      user::rw-
      group::r--
      other::r--
    
  • 为用户组设置访问控制列表

    setfacl -m g:组名:权限 file ...

    例:it1组成员对文件有读写权限,it2组对文件没有任何权限

    # setfacl -m g:it1:rw pass
    # setfacl -m g:it2:- pass
    
  • 设置默认权限

    对目录设置默认ACL,在目录内创建的文件会继承目录的ACL权限

    setfacl -m d:u:用户名:权限 dirname ...
    setfacl -d -m u:用户名:权限 dirname ...
    setfacl -m d:g:组名:权限 dirname ...

    用户真实的权限是所设置的权限与掩码相与的结果

隐藏权限

有些文件只想让用户向里面追加内容,不希望修改原内容,或者有些文件不希望任何人修改(包括root用户)
lsattr :查看
chattr :修改

#man chattr
a: append only (a) 只追加    可以查看内容追加内容其他操作都不可以做
i:immutable(i)   免疫的,不能修改  除了查看内容其他操作都不可以做
#chattr +a pass
#rm -rf pass
rm: 无法删除"pass": 不允许的操作
#echo "123456789" >> pass     //只能使用输出重定向的方式追加
#chattr +i passwd 
#echo "123456789" >> passwd
bash: passwd: 权限不够
#rm -rf passwd
rm: 无法删除"passwd": 不允许的操作
posted @ 2020-12-15 19:57  name_default  阅读(50)  评论(0)    收藏  举报