AI智能
改变未来

『学了就忘』Linux基础命令 — 25、文件基本权限的管理

[toc]

Linux系统的权限有6种。

  • 读写执行为基本权限。
  • umask

    为默认权限。

  • 后边还有4种权限,会在之后的权限管理部分详细讲解。

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

我们先创建一个文件

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 ~ ] # umask0022

注意:我们之前学的权限只有三位,我们现在忽略第一位,第一位的作用在以后文章中会详细说明。

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

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

(3)umask权限的计算方法

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

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

按照官方的标准算法,

umask

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

我们在这里还是按照权限字母来讲解

umask

权限的计算方法。(推荐算法)

我们就按照默认的

umask

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

提示: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/profileif [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; thenumask 002elseumask 022fi#在Linux系统中root用户的UID=0,而普通用户的UID>500,500以内是留给系统用户的。#[ "`id -gn`" = "`id -un`" ]判断的是用户的UID和GID是相等的,暂时可以忽略不看。root用户的umask值[root@192 ~]# umask0022普通用户的umask值[user1@192 ~]$ umask0002

总结:

umask

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

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 『学了就忘』Linux基础命令 — 25、文件基本权限的管理