Linux 修改文件权限

前面小节介绍了用户权限相关的知识,从这一小节开始我们将要开始学习文件权限相关的知识,如何给文件修改权限,之前小节介绍过 ls 命令展示出来的一些文件相关的信息,这里面就有和文件权限相关的信息。

在 Linux 系统中,有时候某些文件内容不能修改,只能拥有只读权限,某些文件需要读写权限,即可以读,又可以写,某些文件需要可执行权限,这个时候若文件的相关权限不正确,就可能报错业务出错,因此需要对文件权限进行修改。

1. Linux 文件权限值

在上述权限中的文件读、写、执行权限信息中,对应着二进制数值,对应关系如下表:

权限展示值 二进制值 八进制值 描述
--- 000 0 表示没有读、写、执行权限
--x 001 1 表示有执行权限,没有读、写权限
-w- 010 2 表示有写,没有读、执行权限
-wx 011 3 表示有写、执行权限,没有读权限
r-- 100 4 表示有读权限,没有写、执行权限
r-x 101 5 表示有读、执行权限,没有写权限
rw- 110 6 表示有读、写权限,没有执行权限
rwx 111 7 表示有读、写、执行权限

2. umask 命令

在 Linux 系统中创建一个新的文件或者目录的时候,它们都会有默认的访问权限,umask 命令则可以修改这些文件默认的访问权限。例如用户创建一个文件的默认访问权限为 rw-rw-rw-(八进制值666) ,创建目录的默认权限 rwxrwxrwx(八进制值777) ,而 umask 值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值。

2.1 umask 命令查看默认权限去除值

使用 umask 命令可以查看一个默认的权限信息,命令如下:

umask

执行结果如下图:

图片描述

如上图所示,当前文件或目录权限相关的是默认去除值是 0022,其中第一位 0 表示的是一项特殊安全权限,暂且不讨论。

后面三位 022 则和普通权限 rwx 有关,其中后三位中的第一位 0 表示创建者/所有者相关的权限,表示从用户权限去掉 0 对应的权限 ---(不变),后三位中的第二位 2 表示用户组相关的权限,表示从用户组权限去掉 2 对应的权限-w-(写权限),后三位中的第三位 2 表示和其他用户的权限有关,表示其他用户的权限去掉 2 对应的权限 -w-(写权限)

所以创建 文件 的默认八进制值 666(rw-rw-rw-) 去掉 022(----w--w-) 对应的相关权限之后为 644(rw-r--r--),创建 目录 的默认八进制值 777(rwxrwxrwx) 去掉 022(----w--w-) 对应的相关权限之后为 755(rwxr-xr-x),下面通过示例来验证一下:

umask

touch testfile

ls -l testfile

mkdir testdir

ls -l

执行结果如下图:

图片描述

Tipsumask 命令展示出来表示从原来的默认值去除的权限值,新建文件默认的权限值是 666,新建目录的权限值是 777umask 命令展示的值是在这个基础之上去除的。

2.2 umask 命令修改默认去除权限

若想要新建的文件有指定的初始默认权限,可以使用 umask 命令,命令如下:

umask 226

umask

执行结果如下图:

图片描述

新建文件默认的权限值是 666,新建目录的权限值是 777226 表示在这个基础上去除
-w--w-rw- 之后的权限。

3. chmod 命令

3.1 修改文件权限

新建一个文件 newfile,然后使用 chmod 命令修改文件权限,新建和修改文件权限命令如下:

touch newfile

ls -l newfile

chmod 777 newfile

ls -l newfile

执行结果如下图:

图片描述

3.2 修改目录权限

使用 chmod 命令修改目录的权限,修改目录权限命令如下:

ls -l

chmod -R 755 study

ls -l

执行结果如下图:

图片描述

3.3 chmod 命令限定权限

chmod 命令可以修改已经存在的文件或目录的权限,可以分别修改它们用户的权限、用户组的权限、其他用户的权限,也可以修改上述全部的权限,下图表示 chmod 权限相关的操作:

图片描述

下面以新增文件其他用户写权限为例,命令如下:

ls -l testfile

chmod o+w testfile

ls -l testfile

执行结果如下图:

图片描述

3.4 chmod 权限作用对象

  • u 表示用户;
  • g 表示用户组;
  • o 表示其他用户;
  • a 表示全部。

3.5 权限操作相关符号

  • + 表示在现有权限基础上增加权限;
  • - 表示在现有权限基础上移除权限;
  • = 表示在现有权限基础上设置成等号后的权限。

3.6 权限设置值

  • r 表示读权限;
  • w 表示写权限;
  • x 表示执行权限。

4. 小结

本小节介绍了文件或目录权限相关的命令,新建的文件权限默认是 rw-rw-rw-,新建目录权限默认是 rwxrwxrwx,使用 umask 命令可以对新建的文件或目录的权限去除某些特定的权限。还介绍了 chmod 命令直接配合八进制权限值修改文件或目录的权限,也可以使用限定符在原来权限基础上增加、移除、设定某些权限。