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来算就行了,或者就用二进制计算。这个熟练一点的话根本不需要方法的,完全口算就可以出来的,熟练就好。
文章原创作者:Mr_Listening https://home.cnblogs.com/u/MrListening/
Linux下的权限掩码umask的更多相关文章
- [转]Linux下权限掩码umask
本文转自:http://www.cnblogs.com/123-/p/4188942.html ---------------------------------------------------- ...
- Linux下权限掩码umask
一 权限掩码umask umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,例如你用chmod 755 file(此时这文件的权限是属主读( ...
- Linux 下的权限改变与目录配置
Linux 下的权限改变与目录配置 ./代表本目录的意思. (1):用户与用户组, 1:文件所有者,文件被某一用户所有 2:用户组: 对文件给与一个或者多个用户权限配置 3:其它人: (2):l ...
- Linux下文件目录权限和对应命令的总结
Linux下的权限有rwx三种,分别对应读,写,执行三种,在对文件和目录时,分别是下列含义: 对应权限的命令为: 文件: r-- cat, more, head, tail w-- echo, vi ...
- 计算Linux权限掩码umask值
创建文件默认最大权限为666 (-rw-rw-rw-),默认创建的文件没有可执行权限x位. 创建目录默认最大权限777(-rwx-rwx-rwx),默认创建的目录属主是有x权限,允许用户进入. 简单的 ...
- linux下文件权限更改(转载)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_33571752/article/d ...
- linux下进程权限分析
转自http://blog.chinaunix.net/uid-27105712-id-3349522.html 在linux下,关于文件权限,大部分人接触比较多,也比较熟悉了解.但是对进程权限一般知 ...
- sqlite数据库读写在linux下的权限问题
近期在学linux,恰巧有个php项目要做.于是配置好环境打算在linux下做. 无奈站点执行后一片空白.经过调试发现是sqlite数据库的问题. 安装sqlite扩展 apt-get install ...
- linux下的权限控制
终于还是要弄服务器了,这是多年前用fedora的时候整理的,也贴出来,顺便也再复习一下. 先来了解一下文件属性,在shell环境里输入:ls -l 可以查看当前目录文件.如:drwxr-xr-x. 1 ...
随机推荐
- 在NodeJS中配置aws ec2
获取access key和secret access key 自己账户下有security credentials的选项 然后点击Acce ...
- notepad++汉字突然横过来了
修改notepad++,汉字突然横过来了,如图, 百度了一下,原来是因为选择的字体"@微软雅黑"前面的@符号惹的祸,改成"微软雅黑"就没事了.
- Azure 公网及内网ip绑定方法
此文章为我的云服务绑定情况,仅供参考,适用于已经创建vm,但开始未绑定vip,后期进行vip的绑定,注意:绑定ip会造成虚拟机暂时离线. -Location(vm所在地) 注意区分 北部和东部: Ch ...
- Spring MVC ControllerClassNameHandlerMapping example
handler mapping是把url跟控制器关联起来. In Spring MVC, ControllerClassNameHandlerMapping use convention to map ...
- [iOS微博项目 - 1.7] - 版本新特性
A.版本新特性 1.需求 第一次使用新版本的时候,不直接进入app,而是展示新特性界面 github: https://github.com/hellovoidworld/HVWWeibo ...
- C#中的表达式树简介
表达式树是.NET 3.5之后引入的,它是一个强大灵活的工具(比如用在LINQ中构造动态查询). 先来看看Expression类的API接口: using System.Collections.Obj ...
- SQL Server 2008 Data Types and Entity Framework 4
Because I’ve had a lot of conversations about spatial data types lately, I thought I would create a ...
- C# 利用范型与扩展方法重构代码
在一些C#代码中常常可以看到 //An Simple Example By Ray Linn class CarCollection :ICollection { IList list; public ...
- 实现Android半透明Menu效果的开发实例
不知道大家是否用过天天动听,对于它界面上的半透明Menu效果,笔者感觉非常漂亮.下面是天天动听半透明Menu的截图,欣赏下吧: 感觉还不错吧?那么如何实现这种半透明Menu效果呢?本文就重点讨论并给出 ...
- SSL连接建立过程分析(1)
Https协议:SSL建立过程分析 web訪问的两种方式: http协议,我们普通情况下是通过它訪问web,由于它不要求太多的安全机制,使用起来也简单,非常多web网站也仅仅支持这样的方式下的訪问. ...