[TOC]
第1章 Linux系统权限介绍
1.什么是权限
现实生活中我们每个人都有国家赋予的公民权利,国家的法律规定了哪些事我们可以做,哪些事不能做。
同样,在Linux系统中,如果我们想限制某个用户对系统的操作,就可以通过设置不同的权限达到我们想要的效果。
2.用户和用户组和权限的关系
通过前面用户管理我们知道,Linux里针对文件定义了三种角色,分别是所属用户(owner),所属组(group),其他用户(others),每一种角色又对应了三种权限,分别是可读,可写,可执行。
当用户访问文件时,流程如下:
1.如果是文件的所用者,则按所有者的权限进行操作。
2.如果是文件的所属组,则按所属组的权限进行操作
3.如果是文件不是所属用户,也不是所属组,则按其他用户的权限进行操作。
3.文件权限位说明
在Linux中,每个文件或目录都有一组共9个基础权限位,每三位字符分为一组,它们分别是所属用户权限位、用户组权限位、其他用户权限位。最终形式如“rw-r--r--”。
Linux正是通过这9个权限位来控制文件用户、用户组以及其他用户对文件的访问权限的。
4.rwx权限的含义
字母权限 | 数字权限 | 权限含义 |
---|---|---|
r(read) | 4 | 读取权限 |
w(write) | 2 | 写入权限 |
x(execut) | 1 | 执行权限 |
- | 0 | 没有权限 |
在Linux里,默认创建文件和目录的权限不一样,大家可以尝试用数字表达法说一下。
第2章 Linux权限命令
1.chmod 更改文件或目录的权限
命令说明:
chmod命令是用来改变文件或目录权限的命令.
但只有文件的属主和超级用户root才能够执行这个命令。
命令格式:
chmod支持两种修改权限的模式一种是字母表达,一种是数字表达
chmod [ugoa] [-+=] [rwx] [文件或目录]
chmox [7|6|5|4|3|2|1] [文件或目录]
用户位说明:
u 所属用户
g 所属组
o 其他用户
a 代表所有ugo
操作字符说明:
- 取消权限
+ 添加权限
= 取消所有权限,然后赋予给定的权限
关键参数:
-R 递归处理指定目录及其子目录下的所有文件
命令实践:
chmod 755 /opt/dir
chmod u+x /opt/dir
chmod g-x /opt/dir
chmod o=rwx /opt/dir
chmod a+x /opt/dir
2.chown 更改文件或目录的所属用户及用户组
命令语法:
chown [选项] [用户:用户组] [文件或目录]
常用写法:
#同时更改用户和用户组
chown oldboy:oldboy /opt/oldboy
chown oldboy.oldboy /opt/oldboy
#这种写法也是同时修改用户和组
chown oldboy: /opt/oldboy
chown oldboy. /opt/oldboy
#只修改用户组
chown :oldboy /opt/oldboy
chown .oldboy /opt/oldboy
#递归修改目录及子目录的权限
chown -R oldboy:oldboy /opt/oldboy
第3章 Linux文件及目录权限详解
1.文件权限和目录权限区别
虽然文件和目录的权限都是rwx三种,但是在Linux系统中对文件和目录的权限是有不同含义和区别的。
权限 | 对文件的作用 | 对目录的作用 |
---|---|---|
r 读取权限 | 具有读取,浏览文件内容的权限 | 具有浏览目录及其子目录的权限 |
w 写入权限 | 具有增加,修改,删除文件内容的权限 | 具有增加,删除或修改目录内文件的权限 |
x 执行权限 | 具有执行文件的权限 | 具有进入目录的权限 |
2.文件权限实验
涉及到的命令:
chmod [ugoa] [-+=] file
实验流程:
使用普通用户测试以下权限的文件:
---
r--
rw-
r-x
-w-
-wx
--x
rwx
实验过程:--- 权限测试
#1.root用户去掉文件的其他用户可读权限
[root@linux dir]# chmod o-r file.txt
[root@linux dir]# ll
总用量 4
-rw-r----- 1 root root 21 3月 28 21:27 file.txt
#2.切换到普通用户查看文件权限
[root@linux dir]# su - oldya
[oldya@linux ~]$ cd /opt/dir
[oldya@linux dir]$ ll
总用量 4
-rw-r----- 1 root root 21 3月 28 21:27 file.txt
#3.普通用户测试是否可读可写
[oldya@linux dir]$ cat file.txt #不能查看因为没有r权限
cat: file.txt: 权限不够
#4.测试是否可以写入内容 #不能修改因为没有w权限
[oldya@linux dir]$ echo 123 > file.txt
-bash: file.txt: 权限不够
实验过程:r-- 权限测试
#1.root用户创建文件
[root@linux ~]# mkdir /opt/dir -p
[root@linux ~]# cd /opt/dir
[root@linux dir]# echo hello oldboy > file.txt
[root@linux dir]# ll
总用量 4
-rw-r--r-- 1 root root 13 3月 28 18:40 file.txt
[root@linux dir]# cat file.txt
hello oldboy
#2.切换到普通用户测试是否可读
[root@linux dir]# su - oldboy
[oldboy@linux ~]$ cd /opt/dir
[oldboy@linux dir]$ ll
总用量 4
-rw-r--r-- 1 root root 13 3月 28 18:40 file.txt
#3.测试是否可以查看
[oldboy@linux dir]$ cat file.txt #因为有r权限,所以可以查看
hello oldboy
#3.普通用户测试是否可修改
[oldboy@linux dir]$ vim file.txt #因为没有w权限,所以不能修改
#4.普通用户测试是否可以删除
[oldya@linux dir]$ rm -rf file.txt #这里不能删除是因为上层目录没有w权限
rm: 无法删除"file.txt": 权限不够
实验过程:rw- 权限测试
#1.root用户创建测试文件添加rw权限
[root@linux ~]# cd /opt/dir
[root@linux dir]# chmod o+rw file.txt
[root@linux dir]# ll
总用量 4
-rw-r--rw- 1 root root 21 3月 28 21:27 file.txt
#2.切换到普通用户查看文件属性
[root@linux dir]# su - oldya
[oldya@linux ~]$ cd /opt/dir
[oldya@linux dir]$ ll
总用量 4
-rw-r--rw- 1 root root 21 3月 28 21:27 file.txt
#3.测试是否可以读取文件
[oldya@linux dir]$ cat file.txt #可以读取,因为有r权限
echo "hello oldboy!"
#4.测试是否可以修改文件
[oldya@linux dir]$ cat file.txt #可以修改,因为有w权限
echo "hello oldboy!"
[oldya@linux dir]$ vim file.txt
[oldya@linux dir]$ cat file.txt
echo "hello oldboy!"
echo "v2"
#4.测试是否可以删除
[oldya@linux dir]$ rm -rf file.txt #不能删除,因为上层目录没有w权限
rm: 无法删除"file.txt": 权限不够
实验过程:r-x权限测试
#1.使用root用户创建具有执行权限的文件并测试
[root@linux dir]# chmod 645 file.txt
[root@linux dir]# ll
总用量 4
-rw-r--r-x 1 654 root 34 3月 29 08:37 file.txt
[root@linux dir]# cat file.txt
echo "hello szoldboy!"
[root@linux dir]# bash file.txt
hello szoldboy!
[root@linux dir]# ./file.txt
hello szoldboy!
#2.使用普通用户切换并测试
[root@linux dir]# su - oldya
[oldya@linux ~]$ cd /opt/dir
[oldya@linux dir]$ ./file.txt #可以执行因为有x权限
hello szoldboy!
[oldya@linux dir]$ bash file.txt #可以执行因为有x权限
hello szoldboy!
实验过程:-w- 权限测试
#1.root用户取消文件的r权限,添加w权限
[root@linux dir]# chmod o-r file.txt
[root@linux dir]# chmod o+w file.txt
[root@linux dir]# ll
总用量 4
-rw-r---w- 1 root root 31 3月 29 08:32 file.txt
#2.切换到普通用户查看文件属性
[root@linux dir]# su - oldya
[oldya@linux ~]$ cd /opt/dir
[oldya@linux dir]$ ll
总用量 4
-rw-r---w- 1 root root 31 3月 29 08:32 file.txt
#3.测试是否可以读取
[oldya@linux dir]$ cat file.txt #不能查看因为没有r权限
cat: file.txt: 权限不够
#4.测试是否可以修改
[oldya@linux dir]$ echo "v3" >> file.txt #可以直接使用echo写入,因为有w权限
#5.测试是否可以读取
[oldya@linux dir]$ cat file.txt #不能读取,因为没有r权限
cat: file.txt: 权限不够
#6.测试是否可以删除
[oldya@linux dir]$ rm -rf file.txt #不能删除,因为上层目录没有w权限
rm: 无法删除"file.txt": 权限不够
实验过程:-wx权限测试
#1.root用户创建wx权限的文件
[root@linux dir]# chmod o=wx file.txt
[root@linux dir]# ll
总用量 4
-rw-r---wx 1 654 root 23 3月 29 15:46 file.txt
#2.切换到普通用户查看文件信息
[root@linux dir]# su - oldya
[oldya@linux ~]$ cd /opt/dir
[oldya@linux dir]$ ll
总用量 4
-rw-r---wx 1 654 root 23 3月 29 15:46 file.txt
#3.测试读取文件
[oldya@linux dir]$ cat file.txt #不能查看,因为没有r权限
cat: file.txt: 权限不够
#4.测试修改权限
[oldya@linux dir]$ echo 'echo v2' >> file.txt #可以修改,因为有w权限
#5.测试读取权限
[oldya@linux dir]$ bash file.txt #因为没有r权限,所以即使有x权限也不能执行
bash: file.txt: 权限不够
[oldya@linux dir]$ ./file.txt
bash: ./file.txt: 权限不够
实验过程:--x权限测试
#1.使用root创建只有x权限,没有rw权限的文件
[root@linux dir]# chmod 641 file.txt
[root@linux dir]# ll
总用量 4
-rw-r----x 1 654 root 23 3月 29 15:46 file.txt
[root@linux dir]# su - oldya
[oldya@linux ~]$ cd /opt/dir
[oldya@linux dir]$ ./file.txt #因为没有r权限,所以即使有x权限也不能执行
bash: ./file.txt: 权限不够
[oldya@linux dir]$ bash file.txt #因为没有r权限,所以即使有x权限也不能执行
bash: file.txt: 权限不够
3.总结-文件权限需要注意的知识点
对于r读取权限需要注意的地方:
如果没有可读r的配合,那么使用vim编辑文件时会提示无法编辑(但可强制编辑覆盖文件),可以使用echo等命令进行重定向或追加内容到文件。
对于w写入权限需要注意的地方:
删除、移动或创建文件等的权限是受父目录(上一级目录)的权限控制的(因为文件名没有存放在Inode里,而是在上级目录的block里存放着的,若修改上级目录的block(删除文件本体),当然会受到上级目录的Inode的权限控制),与文件本身的权限无关,因此,文件本身的可写w权限,与文件是否能被删除和改名无关。
对于x执行权限需要注意的地方:
首先文件的本身要能够执行(文件为命令或脚本)。
如果是普通用户,同时还需要具备可读r的权限才能执行文件。
而root用户只要有可执行x的权限就能执行文件。
4.目录权限实验
实验流程:
分别创建一下权限的目录进行测试:
r--
rw-
r-x
-w-
-wx
--x
rwx
实验步骤:r-- 权限测试
#1.root用户修改目录权限只有r权限
[root@linux opt]# chmod 754 dir
[root@linux opt]# ls -ld dir
drwxr-xr-- 2 oldboy oldboy 22 3月 29 17:29 dir
#2.切换到普通用户
[root@linux opt]# su - oldya
#3.测试可否进入目录
[oldya@linux ~]$ cd /opt/dir #这里进入不了目录是因为没有x权限
-bash: cd: /opt/dir: 权限不够
#4.测试是否可以浏览目录下文件
[oldya@linux ~]$ ll /opt/dir
ls: 无法访问/opt/dir/file.txt: 权限不够 #这里显示不正常因为没有x权限的配合
总用量 0
-????????? ? ? ? ? ? file.txt
实验步骤:rw- 权限测试
#1.创建rw-权限的目录
[root@linux opt]# chmod o=rw dir
[root@linux opt]# ll -d dir
drwxr-xrw- 2 oldboy oldboy 6 3月 29 19:37 dir
#2.切换到普通用户
[root@linux opt]# su - oldya
#3.测试可否切换到目录
[oldya@linux ~]$ cd /opt/dir
-bash: cd: /opt/dir: 权限不够
#4.测试可否浏览目录下文件
[oldya@linux ~]$ ll /opt/dir #虽然可以看到文件名,但是因为没有x权限,文件名显示有问题
ls: 无法访问/opt/dir/file.txt: 权限不够
总用量 0
-????????? ? ? ? ? ? file.txt
#5.测试可否查看文件内容
[oldya@linux ~]$ cat /opt/dir/file.txt
cat: /opt/dir/file.txt: 权限不够
#6.测试可否删除目录下文件
[oldya@linux ~]$ rm -rf /opt/dir/file.txt
rm: 无法删除"/opt/dir/file.txt": 权限不够
实验步骤:r-x 权限测试
#1.更改目录属性为oldboy
[root@linux opt]# chown -R oldboy:oldboy /opt/dir
[root@linux opt]# ll -d dir
drwxr-xr-x 2 oldboy oldboy 22 3月 29 17:29 dir
#2.切换到普通用户
[root@linux opt]# su - oldya
#3.测试能否进入目录
[oldya@linux ~]$ cd /opt/dir #这里之所以能进入目录,是因为有r权限和x权限
#3.测试能否查看目录下文件
[oldya@linux dir]$ ll #这里之所以能看到文件,是因为有r权限
总用量 4
-rw-r--r-- 1 oldboy oldboy 10 3月 29 17:29 file.txt
#4.测试能否创建文件
[oldya@linux dir]$ touch oldya.txt #这里创建不了文件是因为没有w权限
touch: 无法创建"oldya.txt": 权限不够
#5.测试能否删除文件
[oldya@linux dir]$ rm -rf file.txt #这里删除不了是因为没有w权限
rm: 无法删除"file.txt": 权限不够
实验步骤: -w- 权限测试
#1.使用root用户修改目录权限为-w-
[root@linux opt]# chmod o=w dir
[root@linux opt]# ll -d dir
drwxr-x-w- 2 oldboy oldboy 22 3月 29 20:32 dir
#2.使用普通用户登陆
[root@linux opt]# su - oldya
#3.测试可否切换目录
[oldya@linux ~]$ cd /opt/dir #切换不了目录因为没有x权限
-bash: cd: /opt/dir: 权限不够
#4.测试可否查看目录下文件列表
[oldya@linux ~]$ ll /opt/dir #查看不了因为没有r权限
ls: 无法打开目录/opt/dir: 权限不够
#5.测试可否创建文件
[oldya@linux ~]$ touch /opt/dir/file2.txt #虽然有w权限,但是没有x权限配合依然不能创建文件
touch: 无法创建"/opt/dir/file2.txt": 权限不够
#6.测试可否读取文件内容 #查看不了文件内容因为没有r权限
[oldya@linux ~]$ cat /opt/dir/file.txt
cat: /opt/dir/file.txt: 权限不够
#7.测试可否删除文件 #删除不了因为没有w权限
[oldya@linux ~]$ rm -rf /opt/dir/file.txt
rm: 无法删除"/opt/dir/file.txt": 权限不够
实验步骤:-wx 权限测试
#1.使用root用户修改目录权限为-wx
[root@linux opt]# chmod o=wx dir
[root@linux opt]# ls -ld dir
drwxr-x-wx 2 oldboy oldboy 22 3月 29 17:29 dir
#2.使用普通用户登陆
[root@linux opt]# su - oldya
#3.普通用户测试能否切换目录
[oldya@linux ~]$ cd /opt/dir #这里可以登陆是因为目录具备x权限
[oldya@linux dir]$
#4.普通用户测试能否浏览文件内容
[oldya@linux dir]$ ls -l . #这里看不到是因为没有r权限
ls: 无法打开目录.: 权限不够
#5.普通用户测试能否修改文件内容
[oldya@linux dir]$ echo v3 > file.txt #这里不能写入是因为没有r权限
-bash: file.txt: 权限不够
#6.普通用户测试能否删除文件
[oldya@linux dir]$ rm -rf file.txt #这里可以删除是因为具备w权限
实验步骤:--x 权限测试
#1.使用root用户创建一个没有r权限的目录
[root@linux opt]# chmod 751 dir
[root@linux opt]# ll -d dir
drwxr-x--x 2 oldboy oldboy 22 3月 29 17:29 dir
#2.切换到普通用户测试可否进入目录
[oldya@linux ~]$ cd /opt/dir #这里可以进入目录是因为有x权限
#3.测试可以查看目录下文件 #这里看不到文件是因为没有r权限
[oldya@linux dir]$ ls -l
ls: 无法打开目录.: 权限不够
#4.测试是否可以编辑文件
[oldya@linux dir]$ echo v2 > file.txt #这里不能修改是因为没有w权限
-bash: file.txt: 权限不够
#5.测试是否可以删除文件
[oldya@linux dir]$ rm -rf file.txt #这里删除不了是因为没有w权限
rm: 无法删除"file.txt": 权限不够
5.总结-目录权限需要注意的知识点
对于r读取权限需要注意的地方:
具备r读取权限可执行ls dir命令查看目录下的内容。
但是如果没有可执行x权限的配合,则不能切换到指定目录里,即无法执行cd dir命令,而且在执行ls命令查看列表时,虽然可以看到所有的文件名,但是会提示无权访问目录下的文件。
执行ls -l命令查看列表目录下的文件属性时,所有文件对应的属性都会带有问号,也会提示无权访问目录下的文件,但是依然可以看到所有的文件名。
对于w写入权限需要注意的地方:
如果没有可执行x权限的配合,即使有w权限,也无法删除或创建文件。
对于x执行权限需要注意的地方:
可以执行cd dir 命令切换到目录下,但是无法列表目录下的文件及子目录。