• Linux默认权限的计算公式(个人理解性的笔记~)


    先记下Linux下的权限可以分为

    常见的

      r(Read,读取):对文件,读取文件内容的权限;目录来说,具有浏览目 录的权限。权限值=4

      w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。权限值=2

      x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。权限值=1

    特殊的

      s,t,i,a

    Linux是通过9个权限位来控制文件,目录权限的、分别是 所有者3位,所属分组3位,其它(用户组,用户)3位、

    文件默认权限基准值 rw- rw-  rw- ,所有者=读|写,所属分组=读写,其他(其他用户,用户组)=读写、

    目录默认权限基准值 rwx rwx rwx ,所有者=读|删除子目录或文件|进入,所属分组=读|删除子目录或文件|进入,其他(其他用户,用户组)=读|删除子目录或文件|进入、

    在创建文件,目录的时候,linux会通过上面的权限减去系统权限“补码”umask,用 umask命令可以查看到具体

    过 umask 查看,比如:0002;,umask -S可以查看own,group,others需要减去的具体权限是什么,比如:u=rwx,g=rwx,o=rx)

    权限值计算,有教科书上讲。按二进制 AND 和 NOT来计算,个人感觉能理解,但不是最能理解的方式。

    甚至有些BBS论坛用 666 - umask 来算 注意:这个个是错误滴....

          举个栗子,假如umask=003,按照这种计算方式。

      文件权限 = 666 - 003 = 663 = rw- rw- -wx,明明文件默认的other都没有可执行权限x嘛。这儿还给算出来了个x执行权限。所以,这是绝对错误。切记咯、

    公式:令r,w,x 等于 1、符号“-”等于0,文件/目录权限基准值与umask转换为 0,1 这种格式,将文件/目录权限基准值按位对应相减 umask,若位的相减小于等于0,表示此位无权限,等于1表示此有对权限。

    通过上面的公式,我们可以先得到(下面称为文件转换值,目录转换值)

    文件的权限基准值(rw-  rw-  rw- ) 转换为 110 110 110,对照图如下


    目录的权限基准值(rwx rwx  rwx) 转换为 111 111 111,对照图如下

    注意:权限位是按 owner,group,others 的 rwx ,rwx,rwx 这个顺序来的,不能变哦~

    也就是说的,是按照 所有者的r,w,x;所属分组的r,w,x;其他组/用户的r,w,x这个顺序来的~

    举个栗子

    问题:某用户umask = 002;请问,该用户创建的文件/目录的默认权限分别是什么?

    解答:

    首先,将 umask = ---  ---  -w-,按照公式转换为 000  000  010

    那么文件的默认权限值公式2,按位相减,计算如下步骤如下。

    文件的默认权限值 = 文件默认权限基准值 (rw- rw-  rw-) 减去 UMASK权限位值 文件转换值 减去 UMASK转换值

    = rw-  rw- rw- 减 ---  ---  -w-

    = 110 110 110 - 000 000 010

    转换下

          110   110   110

      — 000   000   010

    -------------------------------------------------------

    =   110   110   100 —> 转为权限位就是 rw- rw- r--

    目录的默认权限值 = 目录默认权限基准值 (rwx rwx  rwx) 减去 UMASK权限位值 = 目录转换值 减去 UMASK转换值

    = rwx  rwx rwx 减 ---  ---  -w-

    = 111 111 111  - 000 000 010 

    转换下 

          111   111   111

      — 000   000   010

    -------------------------------------------------------

    =   111   111   101 —> 转为权限位就是 rwx rwx r-x

    其实上面的公式有点点绕了。总结为一句话就是:“设rwx为1,-为0,按位xor,对应位值等于0,此位对应无权限,等于1,有权限;或按位相减,对应位值小于,等于0,此位对应无权限,等于1,有权限

    Okay,下面我们来测试下结果~

    资料参考:

    鸟哥的Linux私房菜(基础篇,第三版:182页~)

    Linux中的几种权限:http://blog.chinaunix.net/uid-16728139-id-3315846.html

  • 相关阅读:
    bzoj1015星球大战(并查集+离线)
    bzoj1085骑士精神(搜索)
    bzoj1051受欢迎的牛(Tarjan)
    左偏树学习
    hdu1512 Monkey King(并查集,左偏堆)
    左偏树(模板)
    PAT (Basic Level) Practice (中文) 1079 延迟的回文数 (20分) (大数加法)
    PAT (Basic Level) Practice (中文) 1078 字符串压缩与解压 (20分) (字符转数字——栈存放)
    PAT (Basic Level) Practice (中文) 1077 互评成绩计算 (20分) (四舍五入保留整数)
    PAT (Basic Level) Practice (中文) 1076 Wifi密码 (15分)
  • 原文地址:https://www.cnblogs.com/oceanho/p/5296691.html
Copyright © 2020-2023  润新知