Linux下一切皆文件,Linux中所有内容都是以文件的形式保存和管理的,因此了解文件系统是学习Linux十分重要的一步。而Linux是一个多用户操作系统,多用户操作系统就会涉及到每个用户所拥有的权限,这里我们简单的介绍了Linux的文件权限。
1. 查看文件权限
ls
指令是Linux最常用的指令之一,相信接触过Linux的用户都或多或少使用过这个指令。ls
是“list”的意思,其作用是列出当前目录下的文件,利用ls -l
可以查看文件的详细信息,如:
[root@Ju /]# ls -l
total 64
lrwxrwxrwx. 1 root root 7 May 21 2021 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Nov 22 2021 boot
drwxr-xr-x 3 mysql mysql 4096 Nov 8 2021 data
drwxr-xr-x 19 root root 2960 May 19 14:01 dev
drwxr-xr-x. 85 root root 4096 May 19 14:00 etc
drwxr-xr-x. 3 root root 4096 Apr 16 13:50 home
lrwxrwxrwx. 1 root root 7 May 21 2021 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 May 21 2021 lib64 -> usr/lib64
drwx------. 2 root root 16384 May 21 2021 lost+found
drwxr-xr-x. 2 root root 4096 Apr 11 2018 media
drwxr-xr-x. 2 root root 4096 Apr 11 2018 mnt
drwxr-xr-x. 6 root root 4096 Apr 14 18:55 opt
dr-xr-xr-x 89 root root 0 May 19 14:01 proc
dr-xr-x---. 9 root root 4096 May 19 14:01 root
drwxr-xr-x 24 root root 740 May 19 14:01 run
lrwxrwxrwx. 1 root root 8 May 21 2021 sbin -> usr/sbin
drwxr-xr-x. 2 root root 4096 Apr 11 2018 srv
dr-xr-xr-x 13 root root 0 May 19 22:01 sys
drwxrwxrwt. 21 root root 4096 May 25 03:44 tmp
drwxr-xr-x. 19 root root 4096 Mar 28 16:49 usr
drwxr-xr-x. 19 root root 4096 May 21 2021 var
上述例子利用ls
指令查看了根目录下的文件信息,其每一列的含义大致如下:
这里我们主要关注第一列,即文件类型与权限:
-
第一个字母代表文件的类型:
-
d
代表目录 -
-
代表文件 -
l
代表连接档(link file) -
b
代表可供储存的接口设备 -
c
代表串行端口设备:如键盘、鼠标
-
-
后面的九个字母代表了文件的权限:
-
以三个相连的字母为一组
-
第一组(前三个字母)代表了文件所有者的权限
-
第二组代表了文件所属群组的权限
-
第三组代表了其他用户的权限
-
r
代表读权限,w
代表写权限,x
代表执行权限
-
drwxr-xr-x. 3 root root 4096 Apr 16 13:50 home
# d: 代表home是一个目录
# rwxr-xr-x:
# 文件所有者: 拥有读、写、执行的权限
# 文件所属组群的用户: 拥有读、执行的权限
# 其他用户: 拥有读、执行的权限
# 第一个root代表文件的所有者是root
# 第二个root代表文件所属组群是root
注意:root用户是Linux系统中的超级管理员,拥有对文件和目录的全部权限(即使文件权限为000,即----------
)。
2. rwx 的意义
对于文件来说:
-
r
:表示可读取此文件的实际内容,如读取文本文件的文字内容等 -
w
:表示可以修改此文件的内容(但不含删除该文件) -
x
:表示此文件具有可以被系统执行的权限(Windows中文件是否可执行 -
由扩展名决定,而Linux中则是由
x
权限决定的)
对于目录来说:
-
r
:表示具有读取此目录结构列表的权限,即可以查询该目录下的文件名数据(利用ls
指令可以将该目录的内容列表显示出来) -
w
:表示具有修改此目录结构列表的权限,包括:-
建立新的文件与目录
-
删除已经存在的文件与目录(不论该文件的权限为何)
-
将已存在的文件或目录进行更名
-
搬移该目录内的文件、目录位置
-
-
x
:代表用户能否进入该目录并让其成为工作目录:
注意:工作目录对于指令的执行是非常重要的,如果你在某目录下不具有x
权限, 那么你就无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有该目录的rw
权限。
3. 改变文件属性与权限
3.1 rwx 与 421
在介绍如何改变文件的权限之前,我们需要先了解下文件权限另一种表示方式:
-
r
:4 -
w
:2 -
x
:1
我们都知道,文件的权限是三个一组的,现在遵循上面的对应原则,就可以用数字表示文件的权限。
drwxr-xr-x. 3 root root 4096 Apr 16 13:50 home
# owner = rwx = 4+2+1 = 7
# group = r-x = 4+1 = 5
# owner = r-x = 4+1 = 5
# 上述文件的权限就可以用755进行表示啦!
3.2 改变文件权限:chmod
# 可以通过chmod指令修改文件权限
# 基本格式: chmod [-R] 权限 文件或目录
# -R: 进行递归的持续变更,即连同次目录下的所有文件都会变更
[root@Ju test]# ls -l
total 4
drwxr-xr-x 2 root root 4096 May 25 12:20 t1
[root@Ju test]# chmod 000 ./t1
[root@Ju test]# ls -l
total 4
d--------- 2 root root 4096 May 25 12:20 t1
[root@Ju test]# chmod -R 755 ./t1
[root@Ju test]# ls -l
total 4
drwxr-xr-x 2 root root 4096 May 25 12:20 t1
3.3 改变文件所属组群:chgrp
# 基本格式: chgrp [-R] 组群 dirname/filename ...
# -R: 进行递归的持续变更,即连同次目录下的所有文件都会变更
[root@JuJunjian test]# ls -l
total 8
drwxr-xr-x 2 root root 4096 May 25 12:20 t1
drwxr-xr-x 2 root root 4096 May 25 12:25 t2
[root@JuJunjian test]# chgrp hadoop t1 t2
[root@JuJunjian test]# ls -l
total 8
drwxr-xr-x 2 root hadoop 4096 May 25 12:20 t1
drwxr-xr-x 2 root hadoop 4096 May 25 12:25 t2
3.4 改变文件所有者:chown
# 基本格式: chown [-R] 用户 dirname/filename ...
# -R: 进行递归的持续变更,即连同次目录下的所有文件都会变更
[root@JuJunjian test]# ls -l
total 8
drwxr-xr-x 2 root hadoop 4096 May 25 12:20 t1
drwxr-xr-x 2 root hadoop 4096 May 25 12:25 t2
[root@JuJunjian test]# chown hadoop t1 t2
[root@JuJunjian test]# ls -l
total 8
drwxr-xr-x 2 hadoop hadoop 4096 May 25 12:20 t1
drwxr-xr-x 2 hadoop hadoop 4096 May 25 12:25 t2
# 同时改变所有者和组群: chown [-R] 用户:组群 dirname/filename ...
# -R: 进行递归的持续变更,即连同次目录下的所有文件都会变更
[root@JuJunjian test]# chown root:root t1 t2
[root@JuJunjian test]# ls -l
total 8
drwxr-xr-x 2 root root 4096 May 25 12:20 t1
drwxr-xr-x 2 root root 4096 May 25 12:25 t2