zoukankan      html  css  js  c++  java
  • linux文件目录权限详解(20170101)

    linux目录权限与文件权限是不同的,二者要相互配合,这是基础。

    比如要读文件:目录至少要有x,文件至少要有r。

    要写文件:目录至少要有x,文件至少要有rw。

    要执行文件:目录至少要有x,文件至少要有rx。

    要建,删文件:目录至少要有wx。与文件无关。

    可见,文件最基础的是r,目录最基础的是x。

    因为目录权限是控制目录结构的,而最基础的就是要能进入该目录(x),所以没有x,一切莫谈。

    而建,删文件只和目录结构有关,所以与文件权限没有关系。

    但linux内还有隐藏权限的存在,这使得删除文件不再只与目录有关!

    chattr +a 只能增加,不可删除。 +i  不能修改,删除。

    想查看隐藏权限么,lsattr吧。

    那么问题来了,linux权限只有这10位么。不不,还有SUID,SGID,SBIT,这一大类呢。

    这几个也是4 2 1的分布。

    SUID一般只对二进制文件使用(shell scipt不可用哦),作用是使二进制文件获得文件拥有者的权限。主要用于提升命令权限。

    SGID用于二进制文件时,是二进制文件获得组拥有者的权限。

           用于目录时,使可进入该目录并拥有w权限的用户新建的文件(目录)组信息与该目录相同。主要用于团队合作开发。

    SBIT只用于目录,作用是使该目录中的文件只有拥有者和root才能删除。

    这一类都默认对象拥有x权限。作用时也是对x权限位做出改变。UID使用户权限x变为s, GID使组权限x变为s,BIT使other权限变为t.如果没有x权限, 相应的会变成大写SST哦(表示无法执行)。

    另外linux还有权限掩码 umask这一说,主要用于新建文件(目录)的默认权限。root一般为022,普通用户一般为002。掩码是拿掉的权限。也就是说root对group和other拿掉了w。

    从哪里拿掉呢?新建文件一般是不可执行的,所以是666,拿掉w后,就变成了644(rw-r--r--)。新建目录由于x是必给,所以是777, 拿掉w之后是755(rwxr-xr-x)。

    注意不可直接减,因为文件总权限是666,没有x,所以如果umask是033,直接减就错了哦。(正确结果是rw-r--r--)

    总的来说,linux文件目录权限显式的有12位。所以使用chmod时可以用4777这种完整形式哦。

    不要忘了隐形权限,虽然上镜率比较低.......

    附录:linux下删不掉文件的原因:

    1、在本目录没有w权限,这是最明显的。

    2、本目录设置了SBIT,而对象文件拥有者不是你。这个在/tmp目录比较明显。

    3、文件设置了隐藏权限-i或-a,这两个设置了任一个(-i尤其厉害),即使是root也删不了!

  • 相关阅读:
    第四讲动手动脑集课后作业
    第三讲课后作业
    课后作业01
    《大道至简》第一章伪代码读后感
    第八周学习进度条
    第七周学习进度条
    求一维联通数组的最大子数组之和
    求二维数组的最大联通子数组之和
    第六周学习进度条
    求一个数组的最大子数组之和
  • 原文地址:https://www.cnblogs.com/zqiguoshang/p/6240917.html
Copyright © 2011-2022 走看看