linux下umask命令用途原理和计算方式详解

目录
  • umask umask用途
  • 原理
    • 1. umask值
    • 2. 文件目录权限最大值
    • 3. 常规计算
    • 4. 严谨计算
  • umask值修改
    • 1. 临时生效(当前会话)
    • 2. 永久生效
  • 总结

umask umask用途

umask令新建文件和目录拥有默认权限。

可以看到root创建的目录是755,文件是644

[root@zaishu zaishu]# touch test.txt
[root@zaishu zaishu]# mkdir test

[root@zaishu zaishu]# ls -l
total 0
drwxr-xr-x 2 root root 6 Nov 25 16:29 test
-rw-r--r-- 1 root root 0 Nov 25 16:28 test.txt

普通用户

可以看到普通用户创建的目录是775,文件是664

[mysql@zaishu ~]$ touch test.txt
[mysql@zaishu ~]$ mkdir test
[mysql@zaishu ~]$ ls -l
total 0
drwxrwxr-x 2 mysql mysql 6 Nov 25 16:30 test
-rw-rw-r-- 1 mysql mysql 0 Nov 25 16:30 test.txt

这些默认的权限值是通过umask设置运算得到。

原理

Linux 它是通过使用 umask 默认权限来给所有新建的文件和目录赋予初始权限的。那么,我们如何得知 umask 默认权限的值呢?直接通过 umask 命令即可:

1. umask值

[root@zaishu ~]# umask
0022

[mysql@zaishu ~]$ umask
0002

#root用户默认是0022,普通用户默认是 0002

umask 默认权限确实由 4 个八进制数组成,第 1 个数代表的是文件所具有的特殊权限(SetUID、SetGID、Sticky BIT)先忽略。后 3 位 “022” 对应为 ----w–w-。

2. 文件目录权限最大值

Linux 系统中,文件和目录的最大默认权限是不一样:

文件来讲,可拥有的最大默认权限是 666,即 rw-rw-rw-。x是文件最大权限,新建文件的时候不会给与,只能通过用户手工赋予。

目录来讲,拥有的最大默认权限是 777,即 rwxrwxrwx。

3. 常规计算

文件和目录的初始权限,通过计算得到:

文件(或目录)的初始权限 = 文件(或目录)的最大默认权限 - umask权限

[mysql@zaishu ~]$ umask
0002
[mysql@zaishu ~]$ mkdir test
[mysql@zaishu ~]$ ll -d test
drwxrwxr-x 2 mysql mysql 6 Nov 26 10:50 test  // 目录的默认权限最大可以是 777,777-002 =775

[mysql@zaishu ~]$ touch h.txt
[mysql@zaishu ~]$ ll h.txt
-rw-rw-r-- 1 mysql mysql 0 Nov 26 10:52 h.txt //文件最大权限 666, 666-002(普通用户) 666-002 =664
[root@zaishu ~]# touch h2
[root@zaishu ~]# ls -l h2
-rw-r--r-- 1 root root 0 Nov 26 10:53 h2 //文件最大权限 666, 666-002(root) 666-022 =644

4. 严谨计算

在计算文件或目录的初始权限时,直接使用最大默认权限和 umask 权限的数字形式做减法,是不严谨的。例如,若 umask 默认权限的值为 033,按照数字形式计算文件的初始权限,666-033=633,但我们按照字母的形式计算会得到 (rw-rw-rw-) - (----wx-wx) = (rw-r–r--),换算成数字形式是 644。

这里的减法,其实是“遮盖”的意思,也就是说,最大默认权限中和 umask 权限公共的部分,通过减法运算会被遮盖掉,最终剩下的“最大默认权限”,才是最终赋予文件或目录的初始权限。

umask值修改

1. 临时生效(当前会话)

umask 权限值可直接修改:

[root@localhost ~]# umask 002
[root@localhost ~]# umask
0002
[root@localhost ~]# umask 033
[root@localhost ~]# umask
0033

这种方式修改的 umask 只是临时有效,一旦重启或重新登陆系统,就会失效。

2. 永久生效

让修改永久生效,则需要修改对应的环境变量配置文件 /etc/profile。

[root@zaishu~]# vim /etc/profile
...省略部分内容...
if [ $UID -gt 199]&&[ "'id -gn'" = "'id -un'" ]; then
    umask 002
    #如果UID大于199(普通用户),则使用此umask值
else
    umask 022
    #如果UID小于199(超级用户),则使用此umask值
fi

总结

到此这篇关于linux下umask命令用途原理和计算方式详解的文章就介绍到这了,更多相关linux下umask命令详解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • linux新文件权限设置之umask的深入理解

    前言 起源是一道题1:如果你的umask设置为022,缺省的你创建的文件权限为? 这让我回忆起被问过的另外一道题2: 777表示什么权限? 用户组说明 -rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc 第一个字符代表文件(-).目录(d),链接(l) 其余字符每3个一组(rwx),读(r).写(w).执行(x) 第一组rwx:文件所有者的权限是读.写和执行 第二组rw-:与文件所有者同一组的用户的权限是读.写但不能执行 第三组r--:不与文件所有者同组的其他用

  • 详解linux下umask的使用

    最近开始学习linux ,看完马哥的linux课程关于umask的这个部分, 写这篇博客希望加深下我对umask的理解 和对umask不太清楚的博友一些帮助. 1 umask 是什么 当我们登录系统之后创建一个文件是会有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情.umask用于设置用户创建文件或者目录的默认权限,umask设置的是权限的"补码",而我们常用chmod设置的是文件权限码.一般在/etc/profile,HOME/.bashprofile或者HOME

  • linux下umask命令用途原理和计算方式详解

    目录 umask umask用途 原理 1. umask值 2. 文件目录权限最大值 3. 常规计算 4. 严谨计算 umask值修改 1. 临时生效(当前会话) 2. 永久生效 总结 umask umask用途 umask令新建文件和目录拥有默认权限. 可以看到root创建的目录是755,文件是644 [root@zaishu zaishu]# touch test.txt [root@zaishu zaishu]# mkdir test [root@zaishu zaishu]# ls -l

  • Linux下重启oracle服务及监听器和实例详解

    一.在Linux下重启Oracle数据库及监听器: 方法1: 用root以ssh登录到linux,打开终端输入以下命令: cd $ORACLE_HOME #进入到oracle的安装目录 dbstart #重启服务器 lsnrctl start #重启监听器 cd $ORACLE_HOME #进入到oracle的安装目录 dbstart #重启服务器 lsnrctl start #重启监听器 ----------------------------------- 方法2: Sql代码 cd $OR

  • linux下的C\C++多进程多线程编程实例详解

    linux下的C\C++多进程多线程编程实例详解 1.多进程编程 #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main() { pid_t child_pid; /* 创建一个子进程 */ child_pid = fork(); if(child_pid == 0) { printf("child pid\n"); exit(0); } else { print

  • Linux下几种并发服务器的实现模式(详解)

    1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. 2>循环服务器和并发服务器 1.循环服务器:一个server只能一次只能接收一个client,当当前client结束访问之后才能进行下一个client的连接. 2.并发服务器:一个server同一时间可以响应很多客户端的访问. 3>select+多线程模式 并发服务器的三种实现方式 1.多进程并发服务器 是指TCP连接后,每一个客户机的

  • Linux系统关机命令之间的区别及用法详解

    Linux系统关机命令有哪些呢?良许教程网为您解答!熟悉linux的朋友应该知道我们在linux系统中常用到的关机命令有:shutdown.halt.poweroff.init:重启命令有:reboot.下面本文就主要介绍一些常用的关机命令以及各种关机命令之间的区别和具体用法. 以下是比较常用的一些关机命令 1.halt立刻关机 2.poweroff 立刻关机 3.shutdown -h now立刻关机(root用户使用) 4.shutdown -h 10 10分钟后自动关机 注:如果是通过sh

  • pytorch中的卷积和池化计算方式详解

    TensorFlow里面的padding只有两个选项也就是valid和same pytorch里面的padding么有这两个选项,它是数字0,1,2,3等等,默认是0 所以输出的h和w的计算方式也是稍微有一点点不同的:tf中的输出大小是和原来的大小成倍数关系,不能任意的输出大小:而nn输出大小可以通过padding进行改变 nn里面的卷积操作或者是池化操作的H和W部分都是一样的计算公式:H和W的计算 class torch.nn.MaxPool2d(kernel_size, stride=Non

  • JavaScript命令模式原理与用法实例详解

    本文实例讲述了JavaScript命令模式原理与用法.分享给大家供大家参考,具体如下: 第一,命令模式: (1)用于消除调用者和接收者之间直接的耦合的模式,并且可以对(调用这个过程进行留痕操作) (2)真的不要乱用这个模式,以为他使你简单调用写法变得非常的复杂和有些难以理解. (3)你的业务出现了 (回退操作)(重做操作)的需求的时候你就要考虑使用这个模式了. 命令的原理: 一种情况为发出者直接作用于执行者,这样耦合度很高,另外一种情况为,在发出者和执行者之间增加一个用存储命令的命令访问库也即命

  • linux下的dhcp服务的完全配置(图文详解)

    试验环境如下图所示: 服务器ip:192.168.0.1 试验要求:要求linux dhcp 服务器实现给linux客户机分配ip地址. 服务器软件包:dhcp-3.0.1-12_EL.I386 (当然其它版本的也可以)软件包默认在RHEL4的第四种安装光盘中. 主配置文件:dhcp.conf 默认情况下该文件没有在dhcp软件包中,需要手动建立. 服务器的配置: 1 挂载和安装dhcp软件包,如下图所示: 2编辑配置文件(由于配置文件安装软件包后并不会自动建立需要我们手动建立)只需打如下些命令

  • Linux下tcpdump命令解析及使用详解

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具.tcpdump可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无用的信息. 实用命令实例 默认启动 tcpdump 普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包. 监视指定网络接口的数据包 tcpdum

  • Linux 下xargs命令详解及xargs与管道的区别

    为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇到,但是却很容易与管道搞混淆,本篇会详细讲解到底什么是xargs命令,为什么要用xargs命令以及与管道的区别.为什么要用xargs呢,我们知道,linux命令可以从两个地方读取要处理的内容,一个是通过命令行参数,一个是标准输入.例如cat.grep就是这样的命令,举个例子: echo 'main' | cat test.cpp 这种情况下cat会输出test.cpp的内容,而不是'main'

随机推荐