umask 命令控制着创建文件时指定给文件的默认权限。它使用八进制表示法从文件模式属性中删除一个位掩码。

参见下面的例子:

[huey@huey-K42JE cmdline]$ rm -f foo.txt
[huey@huey-K42JE cmdline]$ umask [huey@huey-K42JE cmdline]$ touch foo.txt
[huey@huey-K42JE cmdline]$ ls -l foo.txt
-rw-rw-r-- 1 ucm ucm 0 Oct 3 17:32 foo.txt

首先,删除 foo.txt 文件存在的所有副本,以保证一切都是重新开始。下一步,允许不带任何参数的 umask 命令,查看当前掩码值,得到的值是 0002(0022 是另一个常用的默认值),它是掩码的八进制表示形式。接着创建文件 foo.txt 的一个新实例,查看该文件的权限。

可以发现,文件所有者和组都获得了读写权限,而其他所有用户则只读权限。其他所有用户没有写权限的原因在于掩码值。重复执行该实例,不过这次是自己设置掩码值。

[huey@huey-K42JE cmdline]$ rm -f foo.txt
[huey@huey-K42JE cmdline]$ umask 0000
[huey@huey-K42JE cmdline]$ touch foo.txt
[huey@huey-K42JE cmdline]$ ls -l foo.txt
-rw-rw-rw- 1 ucm ucm 0 Oct 3 17:38 foo.txt

在设置掩码为 0000(实际上是关闭该功能)时,可以看到其他所有用户也拥有写权限了。为了理解它是如何实现的,再来看看八进制数。如果把改掩码展开成二进制形式,然后再与属性进行对比,那么就能明白是怎么回事了。

 原始文件模式   ---    rw-    rw-    rw-  
 掩码 000    000     000     010
 结果  ---    rw-    rw-    r--

在设置掩码为 0000(实际上是关闭该功能)时,可以看到其他所有用户也拥有写权限了。为了理解它是如何实现的,再来看看八进制数。如果把改掩码展开成二进制形式,然后再与属性进行对比,那么就能明白是怎么回事了。

先忽略掉掩码中前面的 0,观察掩码中出现 1 的地方,将会发现 1 的位置对应的属性被删除——在这个例子中对应的是其他所有用户的写权限。这就是掩码的操作方式。掩码的二进制数值中每个出现 1 的位置,其对应的属性都被取消。如果设置掩码值为 0022 那么具体操作如下。

 原始文件模式   ---    rw-    rw-    rw-  
 掩码 000    000     010     010
 结果  ---    rw-    r--    r--

同样地,二进制数值中 1 出现的位置,其对应的属性都被取消。可以再试一下其他的掩码值(尝试一些带数字 7 的),以熟悉掩码的操作方式。记得每次操作完之后清理文件,并把掩码值还原成默认值。

[huey@huey-K42JE cmdline]$ rm -f foo.txt; umask 0002

大多数情况下,并不需要修改掩码值,系统提供的默认掩码值就很好了。然而,在一些高安全级别的环境下,则需要控制掩码值。

命令格式

umask [-p] [-S] [mode]

命令参数

-p
  如果 mode 省略了,则以可复用的形式输出当前的掩码值。
-S
  以字符的形式显示当前的掩码值。

实例

a) 以字符的形式显示当前的掩码值。

[huey@huey-K42JE cmdline]$ umask -S
u=rwx,g=rwx,o=rx

Linux 命令 - umask: 显示或设置文件模式掩码值的更多相关文章

  1. Linux显示检查设置文件中的语法是否正确

    Linux显示检查设置文件中的语法是否正确 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ apachectl [conflgtest] 程序"apa ...

  2. SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 和oracle 查询数据中文乱码问题

    一.SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 linux 设置系统语言 修改 /etc/sysconfig/i18n 文件,如 LANG="en_ ...

  3. linux命令之信息显示与搜索文件命令

    1.uname:显示系统信息 该命令用于显示系统相关的信息,比如内核版本号,硬件架构等. 参数 说明 -n(常用) 显示主机名称 -r(常用) 显示内核发行版本号 示例: 1)显示主机名 [root@ ...

  4. Linux命令行批量替换多文件中的字符串【转】

    Linux命令行批量替换多文件中的字符串[转自百度文库] 一种是Mahuinan法,一种是Sumly法,一种是30T法分别如下: 一.Mahuinan法: 用sed命令可以批量替换多个文件中的字符串. ...

  5. linux下对普通用户设置文件访问控命令之setfacl

    命令名 setfacl  -设置文件访问控制列表 常用用法:setfacl [-bkRd] [{-m|-x} acl参数] 目标文件名 命令的常用参数 -m 设置后续的acl参数给文件使用(常用). ...

  6. 批量执行(Linux命令,上传/下载文件)

    前言: 每个公司的网络环境大都划分 办公网络.线上网络,之所以划分的主要原因是为了保证线上操作安全: 对于外部用户而言也只能访问线上网络的特定开放端口,那么是什么控制了用户访问线上网络的呢? 防火墙过 ...

  7. Linux命令(五)创建文件或修改文件时间 touch

    Linux中 touch 命令可以改变文档或目录时间, 包括存取时间或更改时间, 也可以用于创建新文件. 命令格式: touch [选项] [参数] 选项: -a   只更改文件的读取时间. -m   ...

  8. linux 命令:chmod权限设置命令

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  9. 【Linux命令】--(1)文件文件夹操作命令15条

    文件文件夹操作命令++++++++++++++++++++++++++++++++++++++++ 列出进入显示文件夹     ls cd pwd  创建移动删除文件     mkdir rm rmd ...

随机推荐

  1. 读Qt Demo——Basic Layouts Example

    此例程主要展示用代码方式创建控件并用Layout管理类对其进行布局: 例程来自Qt5.2,如过是默认安装,代码位于:C:\Qt\Qt5.2.0\5.2.0\mingw48_32\examples\wi ...

  2. Map 排序

    /** * 通过map 的 value 排序,并返回排序后的第一个条目 * * @param m 待排序集合 * @param desc true:降序排序,false:升序排序 * @return ...

  3. C#引用传递

    学过C#的人都知道,通过值或通过引用,值类型和引用类型都可以作为方法参数传递.在C#中,不管是值类型或者是引用类型,所有方法参数在默认情况下是通过值传递的. 1)通过值传递值类型 在通过值传递作为方法 ...

  4. Running Solr with Maven

    Solr is an open source search server which is built by using the indexing and search capabilities of ...

  5. MVC3 Razor模板引擎

    http://blog.csdn.net/tiz198183/article/details/8659362 一.Views文件夹 -> Shared文件夹下的 _Layout.cshtml 母 ...

  6. 使用Unity制作游戏关卡的教程(二)

    转自:http://gamerboom.com/archives/75554 作者:by Matthias Zarzecki 本文是“使用Unity制作<The Fork Of Truth> ...

  7. Unix-Linux编程实践 学习点滴

    1.结构体最后定义一个char p[0]有什么作用 2. 3. 4. 1.结构体最后定义一个char p[0] 有什么作用 这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势: ...

  8. Intel大坑之中的一个:丢失的SSE2 128bit/64bit 位移指令,马航MH370??

    缘由 近期在写一些字符串函数的优化,兴趣使然.但是写的过程中,想要实现 SSE2 128 bit / 64 bit 的按 bit 逻辑位移.遇到了一个大坑,且听我娓娓道来. 我并不想用什么马航370来 ...

  9. Javascript可变长度参数列表 - Arguments对象

    在一个函数体内,标识符arguments具有特殊含义. Arguments对象是一个类似数组的对象 eg: 验证函数参数的正确数目 function f(x, y, z) { if (argument ...

  10. Codeforces Gym 100203G G - Good elements 暴力

    G - Good elementsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/ ...