名企高频考点之-Linux命令之文件访问权限理解
0. 概述
在我们面试各大公司的时候,关于Linux往往最容易被问到的问题之一就是Linux指令,而其中,对于文件访问权限的理解又是相对比较容易被问到的。因为对于文件访问权限的理解,最能直观反应应聘者对于Linux环境是否有更加深入的了解。我们结合海量面经,提取出了几个最容易被问到的Linux文件访问权限相关的知识,供大家参考。
- Linux系统中文件访问权限包含哪些信息
- Linux系统中如何修改文件访问权限
- Linux系统中如何修改文件所属用户以及所属组
1. 对于Linux中文件访问权限的基本认识
1.1 简述
Linux系统中,对于用户对文件的访问进行权限控制可以极大的提高文件自身以及文件内容的安全性。
1.2 文件访问权限信息的查看
我们如何查看一个文件的权限信息呢?可以通过ls -l
命令查看文件详细信息来查看文件的访问权限。
[root@San doc]# ls -l
drwxr-xr-x 2 root root 4096 Apr 10 16:24 test2
其中 rwxr-xr-x
则是文件的权限信息了。那么这些信息向我们表达了什么样的权限信息呢?
1.3 文件权限信息的认识
首先,在Linux系统中文件的访问权限对文件的访问者进行了分类:文件所有者、文件所属组、其它用户。
其中权限的前3位是文件所有者的权限、中间3位是文件所属组的权限、最后3位是其它用户的权限
其次,在Linux系统中文件的访问权限对每一类用户进行了访问方式的分类:可读、可写、可执行。
r | w | x |
---|---|---|
可读 | 可写 | 可执行 |
若不具备某个权限则以 -
表示。综合可得 rwxr-xr-x
权限最终的解释为:
- 文件所有者对当前文件具备可读、可写、可执行的权限;
- 文件所属组对当前文件具备可读、可执行权限;
- 其它用户对当前文件具备可读、可执行权限;
其中文件的权限向外展示 rwxr-xr-x
,实际在操作系统中权限使用二进制方式存储,这样存储更加轻量,使用1表示具备权限,使用0表示不具备权限。
r | w | x | r | - | x | r | - | x |
---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
因此文件的权限表示方式在针对用户的时候又可以使用三个八进制数字的形式进行表示:
文件所有者 | rwx | 111 | 7 |
---|---|---|---|
文件所属组 | r-x | 101 | 5 |
其它用户 | r-x | 101 | 5 |
因此当前的文件权限也可以表示为:755
2. Linux命令之文件默认创建权限掩码设置-umask
2.1 概述
在shell中创建一个文件,虽然没有指定文件的权限,但是文件被创建成功后,默认会具有一个权限,这是因为文件创建之时的权限会受到系统中文件创建权限掩码的影响。
umask
命令可以查看系统中当前默认的权限掩码信息
2.2 高频选项
-S #使掩码以符号形式打印;默认输出为八进制数
2.3 umask
命令
在shell中输入umask
命令可以看到当前系统中文件权限掩码的默认值。
[root@San doc]# umask
0022
显示出来的信息是以八进制数字形式表示
同时可以在umask
命令后紧跟需要设置的掩码值
[root@San doc]# umask 0000
[root@San doc]# umask
0000
2.4 umask -S
选项
直接查看掩码,并不利于我们的理解,因此可以使用-S
选项来以人性化符号的形式展示掩码对应的文件默认权限
[root@San doc]# umask
0022
[root@San doc]# umask -S
u=rwx,g=rx,o=rx
[root@San doc]# umask
0000
[root@San doc]# umask -S
u=rwx,g=rwx,o=rwx
注意:u
指的是文件所有者,g
指的是文件所属组, o
指的是其它用户
从这里可以理解其实在shell
中掩码取反得到的就是文件的权限信息。
3. Linux命令之文件访问权限的修改-chmod(全称:change mode)
3.1 概述
umask
决定的是文件创建出来的默认权限,然而大多时候我们需要修改一个已经存在的文件权限,这时候就需要使用chmod
命令完成。
3.2 高频选项
-R 或 --recursive #递归处理,将指定目录下的所有文件及子目录一并处理
<访问者>+<权限设置> #开启权限范围的文件或目录的该项权限设置。
<访问者>-<权限设置> #关闭权限范围的文件或目录的该项权限设置。
<访问者>=<权限设置> #指定权限范围的文件或目录的该项权限设置。
+t #设置目录文件的沾滞位
3.3 chmod
命令
[root@San doc]# ls -l
-rw-r--r-- 1 root root 0 Apr 10 16:24 test1.c
[root@San doc]# chmod u+x test1.c
[root@San doc]# ls -l
-rwxr--r-- 1 root root 0 Apr 10 16:24 test1.c
[root@San doc]# chmod o-r test1.c
[root@San doc]# ls -l
-rwxr----- 1 root root 0 Apr 10 16:24 test1.c
[root@San doc]# chmod a=w test1.c
[root@San doc]# ls -l
--w--w--w- 1 root root 0 Apr 10 16:24 test1.c
[root@San doc]# chmod 777 test1.c
[root@San doc]# ls -l
-rwxrwxrwx 1 root root 0 Apr 10 16:24 test1.c
chmod
在使用时,可以针对指定用户进行文件访问权限的设置或者增减,也可以通过八进制数字的形式设置文件的访问权限。
3.4 chmod -R
选项
[root@San doc]# tree test2/
test2/
├── tmp1.txt
├── tmp2.txt
└── tmp3.txt
[root@San doc]# ls -l test2/
-rw-r--r-- 1 root root 0 Apr 10 17:50 tmp1.txt
-rw-r--r-- 1 root root 0 Apr 10 17:51 tmp2.txt
-rw-r--r-- 1 root root 0 Apr 10 17:51 tmp3.txt
[root@San doc]# chmod -R go+w test2/
[root@San doc]# ls -l test2/
-rw-rw-rw- 1 root root 0 Apr 10 17:50 tmp1.txt
-rw-rw-rw- 1 root root 0 Apr 10 17:51 tmp2.txt
-rw-rw-rw- 1 root root 0 Apr 10 17:51 tmp3.txt
3.5 chmod +t
选项
当在一个目录中,想要其它用户能够创建文件并且只能删除自己的文件的时候,就需要靠沾滞位来实现
[san@San ~]$ ls -l
drwxrwxrwx 3 root root 4096 Apr 10 16:24 doc
[root@San san]# chmod +t doc/
[root@San san]# ls -l
drwxrwxrwt 3 root root 4096 Apr 10 16:24 doc
4. Linux命令之文件所有者的修改-chown(全称:change owner)
4.1 概述
文件的所有者拥有对文件的权限进行修改的权力,但是若我们想要将这个权力交给另一个用户,也就是修改一个文件的所有者,那么就需要使用chown
命令
4.2 高频选项
-R #对目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
4.3 chown
命令
[root@San doc]# ls -l
-rwxrwxrwx 1 root root 0 Apr 10 16:24 test1.c
[root@San doc]# chown san test1.c
[root@San doc]# ls -l
-rwxrwxrwx 1 san root 0 Apr 10 16:24 test1.c
注意:修改一个文件的所有只能是root用户进行修改,毕竟别人是否同意这也是一个问题~
4.4 chown -R
选项
[root@San doc]# ls -ld test2/
drwxrwxrwx 2 root root 4096 Apr 10 17:51 test2/
[root@San doc]# ls -l test2/
-rw-rw-rw- 1 root root 0 Apr 10 17:50 tmp1.txt
-rw-rw-rw- 1 root root 0 Apr 10 17:51 tmp2.txt
-rw-rw-rw- 1 root root 0 Apr 10 17:51 tmp3.txt
[root@San doc]# ls -ld test2/
drwxrwxrwx 2 san root 4096 Apr 10 17:51 test2/
[root@San doc]# ls -l test2/
total 0
-rw-rw-rw- 1 root root 0 Apr 10 17:50 tmp1.txt
-rw-rw-rw- 1 root root 0 Apr 10 17:51 tmp2.txt
-rw-rw-rw- 1 root root 0 Apr 10 17:51 tmp3.txt
[root@San doc]# chown -R san test2/
[root@San doc]# ls -l test2/
total 0
-rw-rw-rw- 1 san root 0 Apr 10 17:50 tmp1.txt
-rw-rw-rw- 1 san root 0 Apr 10 17:51 tmp2.txt
-rw-rw-rw- 1 san root 0 Apr 10 17:51 tmp3.txt
注意:默认情况下只能修改文件的所有者,而对于目中的子文件却是没有任何影响;
5. Linux命令之文件所属组的修改-chgrp(全称:change group)
5.1 概述
文件所属组中成员,具备对一个文件对应所属组的访问权限,若要将这个权力移交到另一个用户组中则需要使用chgrp
命令
5.2 高频选项
-R或--recursive #递归处理,将指定目录下的所有文件及子目录一并处理。
5.3 chgrp
命令
[root@San doc]# ls -l
total 4
-rwxrwxrwx 1 san root 0 Apr 10 16:24 test1.c
[root@San doc]# chgrp san test1.c
[root@San doc]# ls -l
-rwxrwxrwx 1 san san 0 Apr 10 16:24 test1.c
注意:修改文件的所属组,也同样需要root用户进行修改。
5.4 chgrp -R
选项
[root@San doc]# ls -l test2/
-rw-rw-rw- 1 san root 0 Apr 10 17:50 tmp1.txt
-rw-rw-rw- 1 san root 0 Apr 10 17:51 tmp2.txt
-rw-rw-rw- 1 san root 0 Apr 10 17:51 tmp3.txt
[root@San doc]# chgrp -R san test2/
[root@San doc]# ls -l test2/
-rw-rw-rw- 1 san san 0 Apr 10 17:50 tmp1.txt
-rw-rw-rw- 1 san san 0 Apr 10 17:51 tmp2.txt
-rw-rw-rw- 1 san san 0 Apr 10 17:51 tmp3.txt
6. 总结
- 文件权限的理解认识,可以让我们知道什么样的文件我们能够操作或者不能操作以及为什么这样。
- 文件权限的修改,可以让我们对本不能操作的文件变得能够操作。
好了,如上就是我们在面试中被问到,关于在Linux系统中系统操作权限以及文件访问权限方面面试时,老铁们回答的参考喽!大家下来可以自行练习哦。