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
执行结果如下图:
Tips:
umask
命令展示出来表示从原来的默认值去除的权限值,新建文件默认的权限值是666
,新建目录的权限值是777
,umask
命令展示的值是在这个基础之上去除的。
2.2 umask 命令修改默认去除权限
若想要新建的文件有指定的初始默认权限,可以使用 umask
命令,命令如下:
umask 226
umask
执行结果如下图:
新建文件默认的权限值是 666
,新建目录的权限值是 777
,226
表示在这个基础上去除
-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
命令直接配合八进制权限值修改文件或目录的权限,也可以使用限定符在原来权限基础上增加、移除、设定某些权限。