umask值用于设置用户在创建文件时的默认权限,当我们在系统中创建目录或文件时,目录或文件所具有的默认权限就是由umask值决定的。

对于root用户,系统默认的umask值是0022;对于普通用户,系统默认的umask值是0002。执行umask命令可以查看当前用户的umask值。

[root@localhost ~]# umask

0022

umask值一共有4组数字,其中第1组数字用于定义特殊权限,我们一般不予考虑,与一般权限有关的是后3组数字。

默认情况下,对于目录,用户所能拥有的最大权限是777;对于文件,用户所能拥有的最大权限是目录的最大权限去掉执行权限,即666。因为x执行权限对于目录是必须的,没有执行权限就无法进入目录,而对于文件则不必默认赋予x执行权限。

对于root用户,他的umask值是022。当root用户创建目录时,默认的权限就是用最大权限777去掉相应位置的umask值权限,即对于所有者不必去掉任何权限,对于所属组要去掉w权限,对于其他用户也要去掉w权限,所以目录的默认权限就是755;当root用户创建文件时,默认的权限则是用最大权限666去掉相应位置的umask值,即文件的默认权限是644。

可以通过下面的测试操作来了解umask值。

[root@localhost ~]# mkdirdirectory1 #创建测试目录

[root@localhost ~]# ll -ddirectory1 #目录的默认权限是755

drwxr-xr-x. 2 root root 4096 12月 2 13:08 directory1

[root@localhost ~]# touchfile1 #创建测试文件

[root@localhost ~]# ll file1 #文件的默认权限是644

-rw-r--r--. 1 root root 0 12月 2 13:09 file1

通过umask命令可以修改umask值,比如将umask值设为0077。

[root@localhost ~]# umask 0077

[root@localhost ~]# umask

0077

此时创建的目录默认权限为700,文件默认权限是600:

[root@localhost ~]# mkdirdirectory2

[root@localhost ~]# ll -ddirectory2

drwx------. 2 root root 4096 12月 2 13:14 directory2

[root@localhost ~]# touch file2

[root@localhost ~]# ll file2

-rw-------. 1 root root 0 12月 2 13:14 file2

考虑一下,如果将umask值设为0003,那么此时创建的目录或文件的默认权限是多少?

正确的结果应该是:目录的默认权限是774,文件的默认权限是664。在计算默认权限时,不应用最大权限直接减去umask值,而是将umask值所对应的相应位置的权限去掉,这样才能得到正确的结果。

umask命令只能临时修改umask值,系统重启之后umask将还原成默认值。如果要永久修改umask值,需要修改/etc/profile文件或是修改/etc/bashrc文件,例如要将默认umask值设置为027,那么可以在文件中增加一行“umask 027”。

/etc/profile和/etc/bashrc都可以用于设置用户登录系统时自动执行某些操作,他们的区别是/etc/profile只在用户第一次登录时被执行,而/etc/bashrc则在用户每次登录加载Bash Shell时都会被执行。

因而,如果是修改/etc/profile文件,将只对新创建的用户生效;而如果是修改/etc/bashrc文件,则对所有用户都生效。

在Linux中设置UMASK值相关推荐

  1. linux中的umask 函数

    我们创建文件的默认权限是怎么来的?如何改变这个默认权限呢? umask是什么? 当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情.umask设置了 ...

  2. linux中设置环境变量_如何在Linux中设置环境变量

    linux中设置环境变量 Wondering how to set environment variables in Linux? This is exactly what we'll be doin ...

  3. linux蓝牙接收文件路径,在Linux中设置蓝牙,方便文件传输、连接耳麦

    在 Windows 和 macOS 上对蓝牙功能进行配置都非常容易,用户可以很简单地就连接蓝牙鼠标.键盘.耳机或其它任何蓝牙配件.而在 Linux 系统中使用蓝牙连接就不那么方便了,至少我还没遇到过能 ...

  4. ubuntu下更改时区_技术|如何在 Ubuntu Linux 中设置或更改时区

    你安装 Ubuntu 时,它会要求你设置时区.如果你选择一个错误的时区,或者你移动到世界的一些其它地方,你可以很容易地在以后更改它. 如何在 Ubuntu 和其它 Linux 发行版中更改时区 这里有 ...

  5. Linux中设置vi编辑器的编码格式以及使用

    Linux中设置vi编辑器的编码格式以及使用 vi ~/.vimrc set fileencodings=utf-8,gbk set termencoding=utf-8 set encoding=u ...

  6. ITK:在一张图像中设置像素值

    ITK:在一张图像中设置像素值 内容提要 输出结果 C++实现代码 内容提要 本示例演示如何设置图像中单个像素的值. 输出结果 C++实现代码 #include "itkImage.h&qu ...

  7. 配置linux登录超时命令,LINUX中 设置登录超时

    ssh设置超时时间 ssh连接超时问题解决方案: 1.修改server端的etc/ssh/sshd_config ClientAliveInterval 60 #server每隔60秒发送一次请求给c ...

  8. eclipse里source的快捷方法_教你如何在Linux中设置快捷方式图标

    这篇文章主要给大家介绍了关于如何在Linux中设置快捷方式图标的相关资料,文中通过示例代码的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 前言 Linux系统 ...

  9. 【VMware】虚拟机中给Linux设置ip——解决在linux中设置了ip地址,却还是连不上的问题

    大家好,我是好学的小师弟,最近在搭建虚拟机的时候,发现我虽然在linux中设置了ip地址却还是用MobaXterm连不上.后来查询相关文档,解决了该问题 进入虚拟机,点击编辑-虚拟网络编辑器 进入到N ...

最新文章

  1. 求一棵二叉树根到所有叶子节点的路径
  2. linux c ping实现
  3. 第二十二章 鲁曹沫柯地之盟强索地 齐桓公因势利导著信义
  4. lync服务器不响应或无法联系,Lync 用户无法与外部联系人通信 - Skype for Business | Microsoft Docs...
  5. Golang实践录:一个数据库迁移的代码记录
  6. Ags 9.3 文档逐步上线
  7. javascript学习之使文本框中不能输入数字
  8. springboot格式化时间
  9. C# 计算程序运行耗时的方法
  10. 【知乎热议】如何看待Momenta研发总监任少卿去了蔚来汽车?
  11. 在SQL中创建时间维度表
  12. 无需越狱,iPhone修改微信提示音!
  13. 【百度地图api】之获取当前用户地理位置-浏览器定位
  14. ngx-markdown 安装和使用
  15. 【每日蓝桥】7、一三年省赛Java组真题“核桃的数量”
  16. explorer.exe修复工具官方版-explorer.exe修复工具下载安装
  17. HTML-HTML协议简单解析
  18. rd,pe,ae,fae,marketing,sales都是干嘛的?
  19. 解决ImportError: /home/douxiao/anaconda3/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
  20. 龙芯平台上的容器和CI/CD实现方案

热门文章

  1. 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to
  2. 【JNI】javah使用(初步)
  3. DeepLearning索引
  4. UA STAT687 线性模型II 最小二乘理论3 广义最小二乘
  5. Prolog基本程序
  6. Spark知识体系完整解读
  7. xcode添加Cocos2d
  8. php微信公众号开发入门
  9. 【原创】user.id字段
  10. oracle 11g 大量废连接占满数据库连接问题处理