先记下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

Linux默认权限的计算公式(个人理解性的笔记~)的更多相关文章

  1. [linux] 默认权限修改(umask)

    1 文件默认权限 对于目录,默认权限=777-umask 对于文件,默认权限=666-umask(文件默认无执行权限) 默认权限修改: vim /etc/bashrc 71行是普通用户的更改,73是超 ...

  2. Linux命令行–理解Linux文件权限(转)

    6.1.1 /etc/passwd文件 /etc/passwd:包含系统用户账户列表以及每个用户的基本配置信息 每个条目有七个字段,每个字段用冒号隔开 登录用户名 用户密码 用户账户的UID 用户账户 ...

  3. [转] Linux中的默认权限与隐藏权限(文件、目录)

    [From] https://blog.csdn.net/davidsky11/article/details/25424615 一个文件(或目录)拥有若干个属性,包括(r/w/x)等基本属性,以及是 ...

  4. Linux中的默认权限与隐藏权限(文件、文件夹)

    一个文件(或文件夹)拥有若干个属性.包含(r/w/x)等基本属性,以及是否为文件夹(d)与文件(-)或连接文件(l)等属性.此外,Linux还能够设置其它系统安全属性.使用chattr来设置.以lsa ...

  5. 如何设置UNIX/Linux中新创建目录或文件的默认权限

    在unix或者linux中,每创建一个文件或者目录时,这个文件或者目录都具有一个默认的权限,比如目录755,文件644,那么这些默认权限是怎么控制的呢? 答案是"umask"权限掩 ...

  6. Linux学习之CentOS(九)-----文件与目录的默认权限与隐藏权限

    文件与目录的默认权限与隐藏权限 一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略 ...

  7. Linux学习之CentOS(八)----文件与目录的默认权限与隐藏权限(转)

    文件与目录的默认权限与隐藏权限 一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略 ...

  8. 理解Linux文件权限

    任何完整的系统都应该具备有某种形式的安全性.必须用过某种机制来保护文件不被未授权的用户查看或修改:Linux系统遵循了Unix的文件权限的方法,来根据用户与用户组授权,实现文件安全访问. 1.Linu ...

  9. Linux 文件umask默认权限_012

    一.       umask介绍 Linux 系统用户创建一个新的目录或文件时,系统会默认会分配相应的权限.目录或文件的权限是如何产生的呢? 1.这就是umask的功能,umask设置了用户创建文件或 ...

随机推荐

  1. 二模14day1解题报告

    注:Index数☞由4,7组成的十进制数. T1.全排列(permutation) 求n个数的第k个排列中,有多少个Index位置上是Index数. 由于k的范围比较小,n的范围比较大(都是109), ...

  2. xml 配置文件规范 校验

    背景:做的数据同步框架,数据同步种类通过xml配置文件添加.为了系统的稳定性,我们只能认为将来写这个运行配置xml的人是一个傻瓜,那么对xml格式校验就很重要. 通过dom4j,是可以完成对xml格式 ...

  3. rsync 通过 ssh 上传文件

    rsync -avzP /www/ -e ssh root@192.168.1.200:/www/ 批处理上传: #!/bin/bash for (( ; ; )) do rsync -avzP /w ...

  4. Hibernate中的数据库方言(Dialect)

    在配置hibernate.cfg.xml时需指定使用数据库的方言: 例: <property name="dialect">org.hibernate.dialect. ...

  5. Android IOS WebRTC 音视频开发总结(二五)-- webrtc优秀资源汇总

    本文主要整理一些webrtc相关资料供学习(会持续更新),转载请说明出处,文章来自博客园RTC.Blacker,欢迎关注微信公众号:blackerteam ---------------------- ...

  6. MAXIMO-数据库配置属性数据类型解释

    ALN:       字母数字字符,混合大小写,最大长度取决于数据库     Oracle = 4000 个字符     Sql Server = 8000 个字符     DB2 = 32672 个 ...

  7. 珍惜每一滴水(kbmmw 中的内存调试)

    作为一个服务器端的应用,最基本的要求就是稳定,当然要做一个稳定的服务器端,需要涉及到很多方面, 内存泄露就是稳定的一个致命杀手,因为服务器的物理内存是有限的,即使一个功能有很小的内存泄露,经过 长时间 ...

  8. Spark+Hadoop问题小结

    1.spark执行./start-all.sh报"WARN Utils: Service 'sparkWorker' could not bind on port 0. Attempting ...

  9. golang的channel使用

    chan使用前必须用make来创建,可以有多个槽位 0个槽位相当于消息,1个槽位相当于锁,多个槽位就是读者-写者 go func

  10. seaJS循环依赖的解决原理

    seajs模块的六个状态. var STATUS = {  'FETCHING': 1, // The module file is fetching now. 模块正在下载中  'FETCHED': ...