Linux下的权限掩码umask,Linux下的权限掩码umask
权限掩码umask
我们都知道在linux下创建一个文件或者目录之后是可以通过chmod等命令进行权限设置,来达到给当前用户、用户组用户以及其他用户分配不同的访问权限。那么,我们新创建的目录和文件本身也是有它的默认权限的,这个默认权限是什么,就是由权限掩码umask所确定的。它的功能可以说与chmod刚好相反的,代表默认拿走的也就是说不要的权限。
所以说,umask是用来指定"目前用户在新建文件或者目录时候的权限默认值"。那我们 如何得知或者设置这个umask呢?
在linux下我们查看的方式有两种,一种可以直接输入umask,就可以看到数字形态的权限设置分数,一种则是加-S(Symbolic)参数,就能以符号类型的方式来显示出权限了。我先进行一次查看,显示如下所示:
我们在这里看到的0022有四组数字,第一组代表的是特殊权限,我们这里先不做讨论。
然而,在目录和文件的默认权限属性是不同的,因为对于一个目录来说它的x权限也就是执行权限是很重要的,进入目录等操作都是需要目录具有执行权限的,而对于文件来说,一般情况都是用于数据的记录操作,所以一般不需要执行权限。从而,在linux下默认的情况是这样的:
▶如果用户创建的是目录,则默认所有权限都开放,为777,默认为:drwxrwxrwx
▶如果创建的是文件,默认没有x权限,那么就只有r、w两项,最大值为666,默认为:-rw-rw-rw-
那么之前所说的拿走的权限就是这里这个默认值要减掉的权限,r、w、x分别是4、2、1,要拿掉读权限就输入4,拿掉写权限就输入2,以此类推。
再看上图,umask为022,也就是说,对于当前用户没有拿掉权限,group用户和other用户都被拿走了w权限,所以此时如果用户进行创建目录和文件的时候,默认权限是会进行如下的减法操作:
新建文件:666-022=644;
新建目录:777-022=755.
我们来验证一下是不是这样做的:
可以看到确实是这样的,目录的默认权限是rwxr-xr-x(755),文件的默认权限是-rw-r--r--(644)。
Umask的设置:
--------------------------------------------------------------------
在上面的umask为022,我们创建的目录对于同组用户是没有写权限的,在实际中可能需要给同组用户能够在目录下创建和修改文件,那么此时需要创建的目录同组用户是具有写权限的,也就是说我们的umask不要拿走同组用户的写权限,那么就是把umask设置为002就可以达到效果。
Umask的设置很简单,只需要在umask命令后加想要拿掉的权限数字就行:
可以看到此时新建的目录是具有写权限的。
Linux下的etc/profile和etc/bashrc中都有默认的umask设置,我们来看一下:
这个是在etc/profile中的一部分内容,可以看到根据不同的uid设置了不同的umask,其实在etc/bashrc文件中也有基本相同的这部分代码,我们可以在这两个文件中设置umask,那么二者有什么区别呢?如果实在etc/profile中修改,只有在重新登录用户的时候才会发生改变,而在etc/bashrc中修改的话要是切换目录就会发生改变,因为profile是在登录用户的时候调用的,而bashrc是在打开一个shell时候调用。在这里不做详细介绍。一般情况下,是不建议这么修改的,我们如果要设置的话就直接用umask命令做更改就行。
Root用户/普通用户
从上面我们又可以发现,在profile中设置了两个umask。之前我们是在root目录下查看的,此时我们切换到普通用户dh进行查看:
可以看到确实和root用户下不一样,此时的umask是0002,也就是说默认拿掉的权限少了。这是linux系统基于安全的考虑,对于一般用户身份,保留了用户组的写权限,而root 用户下是拿掉了这项权限的。
默认权限的计算:
--------------------------------------------------------------------
可以看到上面在计算创建的文件和目录的默认权限的时候,我写的是这样的:666-022=644;777-022=755.,但这并不是做了对应数字的加减,刚刚看到数字相减的结果和最后验证的结果是一样的,但这只是巧合而已。
我们知道上面的每一个数字是代表着某一个用户对于文件或者目录有没有读、写、执行权限的衡量,比如6,代表了rw-,即只有度读和写权限,是421中4+2的结果,所以并不是一个单纯的十进制数,我们在计算的时候并不能直接以十进制相减来计算。
其实也很简单,我们只要知道421分别对应rwx,在计算的过程中用rwx来算就行了,或者就用二进制计算。这个熟练一点的话根本不需要方法的,完全口算就可以出来的,熟练就好。
Linux下的权限掩码umask,Linux下的权限掩码umask相关推荐
- linux下普通用户更改密码原理(S权限)、SetUID
linux下普通用户更改密码原理(S权限) 首先,我们来看 /etc/passwd 和 /etc/shadow 文件的权限: 可以看到passwd文件,所有者有读写权限,其他用户只能读 而sha ...
- linux 文件夹换所属用户,Linux中账号管理之权限管理(下)
linux中的账号管理我们在前面两张已经介绍了一些用户和组的相关概念,常用的配置文件,命令的使用.现在我们来看看账号管理中最傲娇的部分就是我们的权限管理. 一.简单介绍权限的概念 以install.l ...
- linux 用chomd修改权限时报:只读文件系统,linux下修改文件夹权限提示chmod: 更改xx 的权限: 只读文件系统...
1.当前用户权限是否正确2.当前分区是否可读写3.是否设置权限遮罩4.是不是RP有问题,那需要看你修改的文件在什么位置,是怎么mount上来的如果是cdrom一类的路径的话,那肯定就是只读的还有就是m ...
- 关于Linux下s、t、i、a权限
关于Linux下s.t.i.a权限 2012-08-16 16:19:35 分类: 原文地址:关于Linux下s.t.i.a权限 作者:wdrain 文件权限除了r.w.x外还有s.t.i.a权限: ...
- linux ttyusb读写_linux下非root用户获得devttyUSB0的读写权限
linux下非root用户获得devttyUSB0的读写权限 首先查看/dev/ttyUSB0的权限属性,在终端输入:teashaw@http://www.doczj.com/doc/049b1b8e ...
- linux s t i a权限,关于Linux下s、t、i、a权限
关于Linux下s.t.i.a权限 文件权限除了r.w.x外还有s.t.i.a权限: s:文件属主和组设置SUID和GUID,文件在被设置了s权限后将以root身份执行.在设置s权限时文件属主.属组必 ...
- Linux下用户组、文件权限、更改目录下所有文件权限
1.ls -laths查看权限 ls -l中显示的内容如下: -rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc - 10个字符确定不同用户能对文件干什么 - 第一 ...
- Ubuntu下Linux系统部署fisco时bash操作报错权限不足(permission denied) failed to run command ‘........‘
Ubuntu下Linux系统部署fisco时bash操作报错权限不足(permission denied) failed to run command '-' 例如这里就指的是fisco-bcos这个 ...
- linux下修改文件所属用户组和修改文件权限的方法
文章系转载,便于整理和分类,原文地址:https://cloud.tencent.com/developer/article/1341866 linux下修改文件所属用户组和修改文件权限的方法 修改文 ...
最新文章
- 杭电1175简单搜索 连连看
- python3并发性能_python几种并发实现方案的性能比较
- mysql json 函数_MYSQL 开发设计表是硬邦邦的VARHCAR 还是JSON TYPE 来处理数据更香
- python快速排序解析_快速排序python实现总结
- 万物之始正则表达式全解析三部曲(中篇)-正则表达式运算符优先级及匹配规则
- 泰州市区首次试用“闯红灯人脸识别系统”;“冷扑大师”想用AI提高肾脏移植效率 | AI掘金晚报
- POJ :3614-Sunscreen
- python全栈索引
- java第一阶段面面试题_java基础阶段几个必会面试题
- 超级计算机用于挖矿,全球至少500台超级计算机都被用来比特币挖矿
- 案例-三角形(CSS3)
- android学习心得之Activity
- codeforce 604B More Cowbell
- Microsoft Dynamics NAV成本原理讲解
- 关于主机的思维导图_【思维导图大咖分享干货】关于思维导图中插图的用法细解!!...
- usb红白绿蓝 红白绿黑四根线分别是什么
- ISTQB基础级认证参考书
- [WC2013]糖果公园
- 选择性注意中的“salience map”的作用是什么?
- 如何掌控自己的时间和生活 ---阿兰·拉金
热门文章
- svn客户端文件显示灰色的对号代表什么
- android 中文 API (41) —— RatingBar.OnRatingBarChangeListener
- 显示ip的img的url
- linux下快速添加Qt的MySQL驱动
- PIE SDK波段合成
- Asp.NetCore1.1版本没了project.json,这样来生成跨平台包
- 蓝鸥Unity开发基础二——课时20 接口
- STL容器存储的内容动态分配情况下的内存管理
- oracle 实现基于函数的索引
- 【LeetCode OJ】Remove Duplicates from Sorted List