『无欲则无求』Linux常用命令 — 24、umask默认权限

    技术2022-07-10  167

    文章目录

    1、文件和目录的默认权限2、umask 默认权限(1)查看系统的umask权限(2)用八进制数值显示umask权限(3)umask权限的计算方法(4)注意:umask 默认权限的计算绝不是数字直接相减。总结:

    1、文件和目录的默认权限

    Linux系统的基本权限有6种。

    读写执行为基本权限 umask 为默认权限 后边还有4种权限,会在之后的权限管理部分详细讲解。

    我们先创建一个文件abc,然后查看abc文件的长信息。

    [root@192 ~]# touch abc [root@192 ~]# ls -l abc -rw-r--r--. 1 root root 0 12月 30 05:32 abc

    可以看到上边新创建的文件,直接就有一定的权限,我们把这种权限叫默认权限。

    Linux系统是如何得到文件和目录的默认权限? 是通过umask值来获得文件和目录的默认权限。

    2、umask 默认权限

    (这个值基本上不用我们自己修改,但是我们一定要知道和能看懂。)

    (1)查看系统的umask权限

    [root@localhost ~ ] # umask 0022 注意:我们之前学的权限只有三位,我们现在忽略第一位,第一位的作用在以后文章中会详细说明。

    (2)用八进制数值显示umask权限

    [root@localhost ~ ] # umask -S u=rwx,g=rx,O=rx #用字母表示文件和目录的初始权限

    (3)umask权限的计算方法

    我们需要先了解一下新建文件和目录的默认最大权限。

    对文件来讲,新建文件的默认最大权限是666,没有执行(x)权限。这是因为执行权限对文件来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予。对目录来讲,新建目录的默认最大权限是777。这是因为对目录而言,执行(x)权限仅仅代表进入目录,所以即使建立新文件时直接默认赋予,也没有什么危险。

    按照官方的标准算法,umask默认权限需要使用二进制进行逻辑与和逻辑非联合运算才可以得到正确的新建文件和目录的默认权限。这种方法对计算机来说很好计算,但是对人来说既不好计算,也不好理解,不推荐。

    我们在这里还是按照权限字母来讲解umask权限的计算方法。(推荐算法)

    我们就按照默认的umask值是022来分别计算一下新建文件和目录的默认权限吧。

    文件的默认权限最大只能是666,而umask的值是022 “-rw-rw-rw-”减去“-----w–w-”等于“-rw-r–r--”目录的默认权限最大可以是777,而umask的值是022 “drwxrwxrwx”减去“d----w–w-”等于“drwx-r-xr-x”

    (4)注意:umask 默认权限的计算绝不是数字直接相减。

    例如umask是033呢? 修改umask值命令为[root@192 ~]# umask 033(临时修改,如果需要永久修改,就要修改配置文件) 文件的默认权限最大只能是666,而umask的值是033 “-rw-rw-rw-”减去“—wx-wx”等于“-rw-r-r-” r--=r w-w=- --x=-x(所有负的都为-)例如umask是033用数字相减呢? 666-033=633 翻译成权限为-rw--rx-rx,这就不对了。

    提示: 修改umask值的配置文件在/etc/profile文件,/etc/profile文件是环境变量配置文件。 什么是环境变量配置文件? 修改该文件内容,会影响当前系统的操作环境。 环境变量配置文件并不是只有这一个,默认是有4个环境变量配置文件,另加一个目录(目录中有很多配置文件,以后用到哪个说哪个。)。

    说明: 我们进入到上边所提到的/etc/profile环境变量配置文件,可以找到关于umask值的代码块

    [user1@192 ~]$ cat /etc/profile if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then umask 002 else umask 022 fi #在Linux系统中root用户的UID=0,而普通用户的UID>500,500以内是留给系统用户的。 #[ "`id -gn`" = "`id -un`" ]判断的是用户的UID和GID是相等的,暂时可以忽略不看。 root用户的umask值 [root@192 ~]# umask 0022 普通用户的umask值 [user1@192 ~]$ umask 0002

    总结:

    umask值重要度很高,默认自动赋值并生效。但是不需要用户介入(修改),能看懂,知道他就可以了。

    Processed: 0.013, SQL: 9