• Linux-文件和目录权限


    权限的作用

    权限对于普通文件和目录文件的作用是不一样的。
    在这里插入图片描述

    普通文本文件的权限作用

    drwxr-xr-x
    
    第二个字母开始是文件的权限表示
    
    9列权限,
       前三列表示文件的"拥有者"对该文件具有的权限,
       中三列表示文件的"所属组"对该文件具有的权限,
       后三列表示文件的"其他人"对该文件具有的权限。其他人的意思就是既不是拥有者,也不是所属组,就是其他人。
       对于一个文件来说,它的权限列表示它对世界上的这三种人具备的权限,
       这三种人就分别是owner(拥有者),group(所属组),others(其他人),
       任何一个文件的权限列所表达的意思都是这样的。
    
    权限列常见的内容有4个,分别是r,w,x,-。总共9列,分割成3个3列。
    分别表示对三类人的权限。
    这3个3列的第一列要么是r,要么是-,如果是r,则表示该类人对该文件具有读(read)权限。
             第二列要么是w,要么是-,如果是w,则表示该类人对该文件具有写(write)权限。
             第三列要么是x,要么是-,如果是x,就表示该类人对该文件有执行execute(x)权限
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    一般来说(并不强行规定),owner的权限>group的权限>others的权限,注意一点,文件的owner不一定属于该文件的所属组。

    文件权限3步:
    ①找到权限9列,将其3等分。
    ②确定拥有人权限的三列,所属组权限的三列,其他人权限的三列
    ③确定每一类人的权限,有r就是有读权限,有w就是有写权限,有x就是有执行权限

    -rw-rw-r--. 1 kiosk kiosk 992 Nov 10 2018 DHCP-ranges.txt-foundation0
    ①rw-    rw-    r--
    ②owner  group  others
    ③读写    读写   读
    拥有人有读写权限,所属组由读写权限,其它人有读权限。
    
    对于普通文件来说,r,w,x权限表达的意义是什么呢?
    如果一个普通文件有r权限,就表示该文件的内容可以被查看到。
    如果一个普通文件有w权限,就表示该文件的内容可以被修改(加内容,删内容,修改内容)
    如果一个普通文件有x权限,就表示该文件可以当做脚本一样执行。
    权限对应的可操作性内容就是上面描述的。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    目录文件权限功能作用

    对于目录文件来说,rwx权限表达的意义是什么呢?
      如果一个目录文件有r权限,就表示该目录下的文件可以被查看属性(查看文件属性的命令ls)
      如果一个目录文件有r权限,能否查看这个目录下的普通文件的内容(不一定)
      
      一个普通文件能否查看它的内容和它所在的目录没有任何关系,而是和它自己是否具备r权限有关系。
      
      如果一个目录文件有w权限,就表示可以在该目录下创建或删除或修改文件属性
      如果一个目录文件有w权限,是否能修改这个目录下的普通文件的内容?(不一定)
      
      一个普通文件能否修改它的内容和它自己是否具备w权限有关系,而和它是否在具备w权限的目录没有任何关系。
      
      如果一个目录文件有x权限,就表示可以进入该目录,如果一个目录连x权限都没有,这个目录是无法进入的。
      一个目录没有x权限,能不能在该目录下创建删除文件,或者我查看文件属性?(可以)
      
    如果一个目录没有执行权限,那么即使有r权限或者w权限,也表示该目录是一个问题目录
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    对于目录来说只有3类权限有意义。
    ---表示目录没有任何权限
    r-x表示目录有读权限
    rwx表示目录有写权限
    
    庚彦祖举网吧的例子(这是一些畸形目录权限的例子)
    一个目录如果有-wx权限。
      这个目录有写和进入的权限,但是没有查看的权限,意味着你看不见你写的内容。
      网吧你可以进去,可以玩,但是要把你眼睛蒙上。
      
    一个目录如果有--x权限。
      这个目录只有进入的权限。进入这个目录后不能看也不能写,那进来干啥呢?
      网吧你可以进去,但是不能看,也不能玩。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    文件权限的设置

    chmod设置文件权限

    chmod u/g/o
    u=user (owner)
    g=group
    o=others
    
    • 1
    • 2
    • 3
    • 4

    1.使用等号增加权限
    在这里插入图片描述

    2.使用减号删除权限
    在这里插入图片描述
    在这里插入图片描述

    十进制设置权限

    我们知道文件权限的三列是“可读”、“可写”、“可执行”的组合,
    第一列只可能是"r"或者"-"
    第二列只可能是"w"或者"-"
    第三列只可能是"x"或者"-"
    也就是说这三列可以有以下几种组合
    
      0+0= 000   "---"    文件没有任何权限      0  
      0+1= 001   "--x"    文件可执行           1=1x2^0
      1+1= 010   "-w-"    文件可写             2=0x2^1+1x2^1
     10+1= 011   "-wx"    文件可写可执行        3=1x2^0+1X2^1
     11+1= 100   "r--"    文件可读             4=1X2^2
    100+1= 101   "r-x"    文件可读可执行        5=1x2^2+1X2^0
    101+1= 110   "rw-"    文件可读可写          6=1x2^1+1x2^2
    110+1= 111   "rwx"    文件可读可写可执行     7=1x2^0+1x2^1+1x2^2
      
    以上权限组合正好符合二进制和十进制的相互转换,所以我们可得出文件的最大权限是7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    Linux的三种特殊权限

    庚彦祖的笔记
    1.SET UID
    2.SET GID
    3.Sticky(粘置位)
    Linux的三种特殊权限,红帽考试只考一种,实际在生产环境当中,用的并不是特别多

    1.SET UID
    SET UID特殊权限应用于可执行的普通文件,当一个文件被设置SET UID特殊权限时,
    任何人一旦执行该文件,都会临时获得文件拥有人的权限。

    
      ls -l /bin/passwd
      -rwsr-xr-x. 1 root root 34512 Aug 13 2018 /bin/passwd
      
      在文件拥有者的权限列的执行权限位置,如果该位置是s或者S,就表示该文件被设置了set UID特殊权限。
      chmod u-s /bin/passwd
      ls -l /bin/passwd
      -rwxr-xr-x. 1 root root 34512 Aug 13 2018 /bin/passwd
      
      chmod u+s /bin/passwd
      ls -l /bin/passwd
      -rwsr-xr-x. 1 root root 34512 Aug 13 2018 /bin/passwd
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.SET GID
    SET GID特殊权限应用于目录文件,当一个目录被设置SET GID特殊权限时,
    任何用户在该目录下创建文件,文件的所属组都会变成被设置SET GID那个目录的所属组。

      [zk@foundation0 dir-test]$ chmod g+s zk-dir1
      [zk@foundation0 dir-test]$ ls -ld zk-dir1
      drwxrwsrwx. 2 zk zk 23 Apr 15 23:07 zk-dir1
    
      在文件所属组的权限列的执行权限位置,如果该位置是s或者S,就表示该文件被设置了set GID特殊权限。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.Sticky(粘置位)
    针对有写权限的目录设置的特殊权限位,当一个有写权限的目录被设置了sticky特殊权限,
    那么任何人在该目录下创建的文件就只有自己和root可以删除。该特殊权限位,限制了目录的写权限。
    对于目录的写权限来说,该权限有点太大了,sticky就是限制目录写权限的。

    umask

    用户创建文件的初始权限

    在这里插入图片描述
    由上图可以看root用户新创建出来的目录的权限是“rwxr-xr-x”是755,新创建出来的普通文件的权限是“rw-r–r–”是644.

    而普通用户新创建的目录和文件的权限则是“rwxrwxr-x”775和“rw-rw-r–”664
    在这里插入图片描述

    umask值

    而决定用户创建目录和文件的权限大小的是umask值,root用户和普通用户的umask值是不一样的。(我们暂时只看umask的后3位) umask能帮助用户修改创建文件的默认权限。
    在这里插入图片描述

    一般来说:
       任何用户创建目录后,该目录的权限是"rwxrwxrwx" 777
       任何用户创建文件后,该文件的权限是"rw-rw-rw-" 666 (为什么不给它执行权限呢)
    
       普通文件带上执行权限是很危险的,如何这个文件里有"rm -rf /*"这样致命的操作和病毒怎么办。所以为了安全起见,默认不给执行权限,后期需要自己手动赋予执行权限。
       
       用户创建文件的默认初始权限是 777-umask的后三位
       
    由此可得:
       root创建目录文件的权限是: 777-022=755
       root创建普通文件的权限是: 666-022=644
       
       普通用户创建目录的权限是: 777-002=775
       普通用户创建文件的权限是: 666-002=664
       
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    umask的减法误区

    当修改了umask值后,文件的默认权限不能生硬的直接用最高权限-umask值,请看下面的例子。

    将umask的值改为0033,按理说修改umask值之后:
       目录的默认权限应为:777-033=744  "rwxr--r--"
       文件的默认权限应为:666-033=633  "rw--wx-wx"
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    由上图可见修改umask为0033后,目录的默认权限是正确的,但是普通文件的权限出现了偏差,预期的应该是633,怎么变成了644,所以这就是我们umask的减法误区。

    666-033=(rw-rw-rw-)-(----wx-wx) 咱们的减法应该是以下这样情况
             rw-rw-rw-
      -()  ----wx-wx
     -------------------
             rw-r--r--
     
     rw减--就等于rw  -减-就等于-  r减-就等于r  w减w就等于- -减x就等于-
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    【训练题71:动态规划】Building Blocks | Gym102822B
    第三范式
    GO 语言处理并发的时候我们是选择sync还是channel
    华为云云耀云服务器L实例评测|利用云服务器部署个人博客站
    No170.精选前端面试题,享受每天的挑战和学习
    按列而非按行读取文本
    38、HttpMessageConverter的@ReponseBody注解(用的最多)
    AAPT: error: resource android:attr/lStar not found
    FluentCRM 2.6.0:更多功能、集成改进等等!
    【Linux】部署Jenkins(简介及详细教程【war包部署】)
  • 原文地址:https://blog.csdn.net/flytalei/article/details/133047638