关注不迷路,一起 From Zero To Hero !
你必须非常努力,才能看起来毫不费力!
微信搜索公众号[ CodePlayer ],一起From Zero To Hero !
前言
本篇文章主要讨论Linux中的文件权限管理命令,包括更改文件权限、文件所有者、文件所有组和默认权限,大家一起来学习吧!
chmod
chmod: ch
ange the permission mod
e of a file
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。权限分为三种:可读、可写、可执行。可以通过更改不同用户的权限来保护文件。
命令格式
1
|
chmod [-cfvR] mode file
|
命令描述
谁可以更改文件权限:文件所有者或者root用户
选项
1
2
3
4
|
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
|
权限有两种方式可以设置:
1
2
3
|
1. [{ugoa}{+-=}{rwx}] [文件或目录]
2. [mode=421] [文件或目录]
|
- 第一种通过对不同角色增加、减少或者设定权限,完成chmod
u:所有者 g:所属组 o:其他 a:所有角色
+:增加权限 -:减少权限 =:设定权限
r:读权限 w:写权限 x:执行权限
1
2
3
4
5
6
7
8
9
10
11
12
|
# 新建文件的权限为 rw-r--r--
[root@VM-0-5-centos ~]# touch test.txt
[root@VM-0-5-centos ~]# ls -l
总用量 0
-rw-r--r-- 1 root root 0 10月 9 01:00 test.txt
# 所有者增加执行权限,所属组增加写权限
[root@VM-0-5-centos ~]# chmod u+x,g+w test.txt
# 查看权限
[root@VM-0-5-centos ~]# ls -l
总用量 0
-rwxrw-r-- 1 root root 0 10月 9 01:00 test.txt
|
可以看出这种比较繁琐,需要对每个角色完成设定。
- 由于权限对应的是
r w x
,对应 4 2 1
,可以通过数字表示不同的权限
即r - 4 ; w - 2 ; x - 1
那么 rwxrw-r--
可以表示为 764
通过该方式,可以一次性对所有角色设置权限,比第一种要简便先,但是要先将权限对应到具体的数值上
1
2
3
4
5
6
7
8
9
10
11
|
# 新建文件的权限为 rw-r--r--
[root@VM-0-5-centos ~]# touch new.txt
[root@VM-0-5-centos ~]# ls -l
总用量 0
-rw-r--r-- 1 root root 0 10月 9 01:09 new.txt
# 设置文件权限为 764
[root@VM-0-5-centos ~]# chmod 764 new.txt
[root@VM-0-5-centos ~]# ls -l
总用量 0
-rwxrw-r-- 1 root root 0 10月 9 01:09 new.txt
|
文件目录权限总结
代表字符 |
权限 |
对文件的含义 |
对目录的含义 |
r |
读权限 |
可以查看文件内容 |
可以列出目录中的内容 |
w |
写权限 |
可以修改文件内容 |
可以在目录中创建、删除文件 |
x |
执行权限 |
可以执行文件 |
可以进入目录 |
易混淆点
我们下面做个实验,使用root用户新建一个文件夹,给文件夹权限777,并在文件夹中新建一个文件。那么有个问题:非root用户是否可以删除该文件呢?可以思考下再看后面的内容。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
[root@VM-0-5-centos ~]# cd /opt
[root@VM-0-5-centos opt]# ls
redis-6.2.4 redis-6.2.4.tar.gz rh
# 1. 新建文件夹和文件,并设置文件夹权限为777
[root@VM-0-5-centos opt]# mkdir movie
[root@VM-0-5-centos opt]# touch movie/list.txt
[root@VM-0-5-centos opt]# ls
movie redis-6.2.4 redis-6.2.4.tar.gz rh
[root@VM-0-5-centos opt]# chmod 777 movie/
# 2. list.txt文件,只有所有者有写权限
[root@VM-0-5-centos opt]# cd movie/
[root@VM-0-5-centos movie]# ls -l
总用量 0
-rw-r--r-- 1 root root 0 10月 9 18:09 list.txt
# 3. 新建用户,切换用户
[root@VM-0-5-centos opt]# useradd user1
[root@VM-0-5-centos opt]# su - user1
[user1@VM-0-5-centos ~]$ cd /opt/movie
# 4. 删除文件成功
[user1@VM-0-5-centos movie]$ rm list.txt
rm: remove write-protected regular empty file ‘list.txt’? y
[user1@VM-0-5-centos movie]$ ls
|
从上面的实验可以看出,想要删除文件,不需要对文件有写权限,而是需要对文件夹有写权限。对于文件的写权限,只是可以修改文件内容,而不是删除文件。而对目录的写权限,则可以删除目录中的文件。
chown
命令格式
命令描述
chown:ch
ange file own
ership
作用:改变文件或目录的所有者
限制:改变文件的所有者,需要root权限才能执行
示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# 1. 新建文件
[root@VM-0-5-centos tmp]# touch a.txt
# 2. 查看所有者为root
[root@VM-0-5-centos tmp]# ls -l
total 0
-rw-r--r-- 1 root root 0 Oct 9 18:31 a.txt
# 3. 改变所有者
[root@VM-0-5-centos tmp]# chown user1 a.txt
# 4. 所有者权限变为 user1
[root@VM-0-5-centos tmp]# ls -l
total 0
-rw-r--r-- 1 user1 root 0 Oct 9 18:31 a.txt
|
chgrp
命令格式
命令描述
chgrp:ch
ange file gr
oup
ownership
功能:改变文件或者目录的所属组
权限:允许普通用户改变文件所属的组,只要该用户是该组的一员
示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 1. 新建文件
[root@VM-0-5-centos tmp]# touch b.txt
[root@VM-0-5-centos tmp]# ls -l
total 0
-rw-r--r-- 1 root root 0 Oct 9 18:38 b.txt
# 2. 添加一个组
[root@VM-0-5-centos tmp]# groupadd stu
# 3. 改变所属组
[root@VM-0-5-centos tmp]# chgrp stu b.txt
[root@VM-0-5-centos tmp]# ls -l
total 0
-rw-r--r-- 1 root stu 0 Oct 9 18:38 b.txt
|
umask
命令格式
命令描述
- 显示新建的文件或者目录的默认权限
- 默认显示的权限是4位,第一位是特殊权限,暂不需要关注;后三位需要
与777异或
后,才是默认权限。
注意:计算后的权限是文件夹的权限,对于文件要去掉执行权限,Linux中默认新建的文件都没有执行权限!!!!
示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 1. 第一位不需要关注,022异或777后,为755,即默认权限为 rwxr-xr-x
[root@VM-0-5-centos tmp]# umask
0022
# 2. 新建文件夹,验证确实为 rwxr-xr-x
[root@VM-0-5-centos tmp]# mkdir test
[root@VM-0-5-centos tmp]# ls -l
drwxr-xr-x 2 root root 4096 Oct 9 18:52 test
# 3. 新建文件,默认都去掉了执行权限,为 rw-r--r--
[root@VM-0-5-centos tmp]# touch c.txt
[root@VM-0-5-centos tmp]# ls -l
-rw-r--r-- 1 root root 0 Oct 9 18:55 c.txt
drwxr-xr-x 2 root root 4096 Oct 9 18:52 test
|
选项
- -S:以 rwx 的形式显示文件夹的默认权限,直接就是对应的文件夹权限,不需要再进行异或操作
1
2
|
[root@VM-0-5-centos tmp]# umask -S
u=rwx,g=rx,o=rx
|
更改umask默认值
通过上述命令可以更改新建文件夹和文件的默认权限,需要注意的是,该值与777异或后才是真正的权限值。因此可以先将想要的权限值与777异或,得到的就是这里的权限值。
比如想要默认权限为700,700异或777为077,这里的权限值就为077。
不建议使用该命令修改默认权限值!!!
1
2
3
4
5
6
|
[root@VM-0-5-centos tmp]# umask 077
[root@VM-0-5-centos tmp]# mkdir test3
# 077 与 777 异或后为 700
[root@VM-0-5-centos tmp]# ls -l
drwx------ 2 root root 4096 Oct 9 19:00 test3
|
总结
本文介绍了Linux文件权限管理命令:
- chmod:更改文件权限
- chown:更改文件所有者
- chgrp:更改文件所有组
- umask:查看和修改默认文件权限
更多
微信公众号:CodePlayer