Linux基本权限 笔记

基本权限:

  LInux中每个文件都有相应的属性权限,如这个文件是否可以被某个用户改写,是否可以被某个用户执行查看,在Linux中文件的访问权限通常为以下几种。
  访问权限:
    读取:允许查看内容-read   (r)表示
    写入:允许修改内容-write   (w)表示
    可执行:允许运行和切换-execute (x)表示
    特殊权限: Set GID (s/S),Set UID (s/S),Sticky Bit (t) 特殊权限会在最下面讲解。
    ACL权限:访问策略权限


    ls -l查看LInux的文件/目录信息我们就能看到在详细信息前有“drwxr-xr-x”或者“-rwxr-xr--.”等字符,这些就表示了文件它所对应的权限

    

     上图所示一共划分了三个框,每个框都代表了该文件所有者,所属组,其他用户 所对应拥有的权限,其中它以三个字符为一组,r表示可读,w表示可写,x为可执行,-为空

     注:在一组权限中它的顺序一定是“rwx”  r在最前面,x在最后,w在中间,空的用 - 表示  包括赋予命令时也一样 。

       举例:

    

     第一个框(所有者),权限为“rwx”表示,该文件的所有者有可读(r),可写(w),可执行(x)三种权限。

     第二个框(所属组),权限为"r-x",表示该文件的所属组有可读(r),可执行(x)的权限。

     第三个框(其他用户),权限为“r-x”,表示除该文件的所有者以及所属组外的其他用户都有着可读(r),可执行(x)的权限。

,      

  权限适用对象(归属)
    所有者:拥有此文件/目录的用户-user (u)表示
      所有者相当于你自己,给予文件所有者权限时只有你(当前用户)才能使用这些权限。
    所属组:拥有此文件/目录的组-group (g)表示
      所属组相当于一个大家庭,在这个家庭内(所属组内)的所有成员(用户)都可以使用该文件的所属组权限
    其他用户:除所有者/所属组以外的用户-other (o)表示
      相对与一个外人,你可以共享该文件给外人可查看的权限,也可给外人(其他用户)更高的权限

    

 

  设置基本权限:
    chmod 命令:

      chmod [-R] 归属关系+-=权限类型 FIle
      chmod [-R] 权限数值 FIle

    符号:
      " +"  是添加一些权限
      " - "  是去除一些权限
      " = "  是重置权限
      -R :   递归

      赋予权限也可用数字表示其中分别是  r = 4 , w = 1 , x = 2 ,其中权限赋予可将数字加起来表示,例如“7” = 1+2+4表示可读可写可执行,“6” = 2+4表示可读可执行,“5” = 1+4表示可读可写。
    例如:
    chmod u+x aaa.txt       # u代表"所有者(user)"意思是将aaa.txt文件的所有者权限添加(x)可执行权限

    

    chmod g-w ccc.sh         # g代表"所属组(group)"意思是将ccc.sh文件所属组的(w)可写权限去除掉

    

    chmod o=r ccc.sh         # o代表"其他用户(other)"意思是将ccc.sh文件的其他用户权限重新赋予,将原来的权限替换成(r)只读

    

    chmod u=rwx,g=rw,o=--- aaa.txt          #可用逗号分割将aaa.txt文件的权限分别修改为所有者rwx,所属组rw,其他用户---。 “---”就是什么权限都没有的意思

    

    chmod ugo=rw aaa.txt           # 将aaa.txt文件的 u,g,o权限都重新赋为可读可写

    

    chmod -R u=rwx ddd/           #将ddd目录下所有子目录/子文件 的所属用户权限改为(rwx)可读可写可执行

    

     chmod +w file              #单独写+x不写对象的话默认是 为(所有者)添加上"w"可写权限

     chmod a+x file             #表示将所有权限(所有者,所属组,其他用户)都添加上"x"可执行权限

    

    chmod  777  aaa.txt          #表示将aaa.txt的 所有者,所属组,其他用户的权限都设为可读可写可执行,(7=1+2+4),数字1=w,2=x,4=r
    chmod 654 aaa.txt          #表示将aaa.txt的 所有者权限为(可读可执行 6=2+4),所属组为(可读可执行 5=4+1),其他用户为(只读=4)
    chmod 7 aaa.txt          #如果单独只写一个数值的话,就表示其他用户有“7”的权限,所有者以及所属组将没任何权限。

    

    chmod  77    aaa.txt          #如果只写二个数值的话,就表示其他用户以及所属组有“7”的权限,所有者将没任何权限。

    

 

 

     注: 在赋予目录可写权限时给予的当面目录下(不包含本目录)的所有子目录/文件,也就是这个目录下所有的文件都能被修改。

 

  chown 命令:

    chown [-R] 所有者 File          #修改所有者为***
    chown [-R] :所属组 File         #修改所属组为***
    chown [-R] 所有者:所属组 File      #修改所有者以及所属组为***

  例如:

    chown work log.log            #修改log.log文件的所有者为work用户

    

    chown :work log.log               #修改log.log文件的所属组为work组

    

    chown work:work log.log             #修改log.log文件的所属组以及所有者都为wrok

    

 

特殊权限(附加权限):

    Set GID: (s或S)表示 附加在所属组的(x)位置,如所属组的(x)位置是(s)说明原本所属组是有(x)执行权限只不过被附加权限盖住了,如果是(S)说明原本所属组的(x)位置是空的没有执行权限仅附加了SetGID权限。
    Set GID权限适用于目录,可以使目录下新增的目录自动设置与父目录相同的属组,让子目录继承父目录的所属组身份。
    命令 :

    chmod g+s aaa/          #在aaa/目上录添加setGID权限

    

    在有setGID权限的目录下创建的目录都会继承父级目录的所属组权限。

 

 

  SetUID: 与SetGIU相同也是用(s或S)表示 附加在所有者权限的(x)位置,附加SetUID权限后会将(x)位替换为(s或S)
    SetUID适用于可执行文件,可让当前的使用者具有文件所有者的身份以及部分权限。 热知识:我们Linux上所执行的命令都只是调用一个程序去执行这个程序,大多数执行程序都在/usr/bin/下
  命令 :

  chmod u+s 执行文件         #所有用户使用或执行这个执行文件/命名都有文件所有者的身份/部分权限。 赋予权限后会显示为红色

   

   这里我们切换用其他用户"userA"用mkdir命令创建文件会发现创建的文件所有者是“root”,原因就是mkdir执行文件的所有者就是root,而我们又将mkdir执行文件附加了SetUID权限,所以无论是那个用户只要是使用这个mkdir执行文件都拥有mkdir文件所有者的身份,以及权限。

   SetUID权限尽量不要乱用,那如果假设我们将“/usr/bin/chmod”执行文件做了SetUID权限,那几乎所有的用户都可以自定义权限了,^^.

   

 

  Sticky Bit: 用(t)表示 附加在其他用户的(x)位上,附加后其他用户的(x)位会变成(t)
       适用于开发(w)权限的目录,可以阻止用户滥用(w)写入权限(禁止别人操作文档),比较常用的附加权限。
    命令:
    chmod o+t 文件名               #以当前用户为文件附加(t)权限

  

 

ACL权限:

     能够对个别的用户,个别的组设置独立权限,(比如设置A用户能读,B用户能写,C用户能读能写,D用户只能执行等)

    命令:
      setfacl -m [u:用户:权限] [g:组:权限] 文件/目录 

   举例:

     setfacl -m u:userA:rw aaa.txt         #单独为userA用户添加对aaa.txt文件可读可写的权限

    

     上述aaa.txt文件userA属于其他用户,但我们想让userA用户有可读可写的权限又不想把他加到组里或让他成为所有者,并且其他用户权限也不能改变,
     那我们就可以使用“setfacl -m u:userA:rw aaa.txt”命令单独将userA的权限变成rw可读可写。

    

     setfacl -x u:userA aaa.txt            #删除指定用户的setfacl权限策略
     setfacl -d aaa.txt                 #删除所有的setfacl权限策略
     getfacl  aaa.txt                #可查看文件详细的权限策略

    

 

posted @ 2023-07-04 17:29  Paimon丶  阅读(274)  评论(0编辑  收藏  举报