linux权限管理

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 本文介绍了Linux系统中的权限管理,包括权限的概念、用户和用户组与权限的关系、文件权限位的说明以及rwx权限的具体含义。同时,详细讲解了如何使用`chmod`和`chown`命令更改文件和目录的权限,并通过多个实验演示了不同权限组合对文件和目录的实际影响。最后,总结了文件和目录权限的一些重要知识点,帮助读者更好地理解和应用Linux权限管理。

[TOC]

第1章 Linux系统权限介绍

1.什么是权限

现实生活中我们每个人都有国家赋予的公民权利,国家的法律规定了哪些事我们可以做,哪些事不能做。
同样,在Linux系统中,如果我们想限制某个用户对系统的操作,就可以通过设置不同的权限达到我们想要的效果。

2.用户和用户组和权限的关系

通过前面用户管理我们知道,Linux里针对文件定义了三种角色,分别是所属用户(owner),所属组(group),其他用户(others),每一种角色又对应了三种权限,分别是可读,可写,可执行。

当用户访问文件时,流程如下:
1.如果是文件的所用者,则按所有者的权限进行操作。
2.如果是文件的所属组,则按所属组的权限进行操作
3.如果是文件不是所属用户,也不是所属组,则按其他用户的权限进行操作。

3.文件权限位说明

在Linux中,每个文件或目录都有一组共9个基础权限位,每三位字符分为一组,它们分别是所属用户权限位、用户组权限位、其他用户权限位。最终形式如“rw-r--r--”。
Linux正是通过这9个权限位来控制文件用户、用户组以及其他用户对文件的访问权限的。

image-20210328172711786

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 命令切换到目录下,但是无法列表目录下的文件及子目录。
目录
相关文章
|
4月前
|
算法 Linux 数据安全/隐私保护
【linux】root大王如何制约普通用户——权限管理
【linux】root大王如何制约普通用户——权限管理
|
6月前
|
Ubuntu Linux Shell
【Linux操作系统】探秘Linux奥秘:用户、组、密码及权限管理的解密与实战
【Linux操作系统】探秘Linux奥秘:用户、组、密码及权限管理的解密与实战
141 0
|
6月前
|
算法 Linux 数据安全/隐私保护
Linux权限管理:深入理解setuid、setgid、seteuid和setegid
Linux权限管理:深入理解setuid、setgid、seteuid和setegid
525 0
|
1月前
|
Linux 数据安全/隐私保护
探索Linux操作系统下的权限管理
【8月更文挑战第66天】在数字世界中,操作系统的权限管理就如同现实世界中的钥匙和锁,保护着我们的数据安全。本文将带你深入理解Linux系统中的权限设置,通过实际代码示例,让你掌握文件和目录权限的分配与管理技巧。准备好了吗?让我们开始这场关于权限管理的探险之旅吧!
83 14
|
5月前
|
网络协议 Linux 数据安全/隐私保护
【Linux操作系统】权限管理和粘滞位
【Linux操作系统】权限管理和粘滞位
【Linux操作系统】权限管理和粘滞位
|
5月前
|
安全 Linux Shell
【Linux】权限管理
【Linux】权限管理
49 5
|
6月前
|
运维 安全 Linux
深入理解 Linux 文件系统的权限管理
【5月更文挑战第30天】 在 Linux 操作系统中,文件系统权限管理是维护系统安全与数据完整性的基石。本文旨在深入探讨 Linux 权限模型的核心概念、实现机制及其对系统安全性的影响。通过对用户身份、文件权限和访问控制列表(ACL)等关键元素的剖析,揭示权限管理在实际操作中的应用细节。文章还将讨论如何有效配置权限来优化系统性能和提升安全性,以及解决常见的权限问题的策略。
|
6月前
|
Linux PHP 数据安全/隐私保护
深入理解PHP7的返回值类型声明深入理解 Linux 文件系统的权限管理
【5月更文挑战第30天】在PHP7中,引入了返回值类型声明的特性。这一特性使得开发者可以在函数定义时指定函数应返回的值的类型。本文将详细解析返回值类型声明的用法,以及它在实际开发中的应用,帮助读者更好地理解和使用这一特性。
|
6月前
|
安全 Linux 数据安全/隐私保护
深入理解Linux文件系统的权限管理
【5月更文挑战第24天】 在Linux操作系统中,文件系统权限管理是维护系统安全和用户数据隔离的关键机制。本文将深入探讨Linux文件系统中的权限模型,包括用户、组和其他类别的读、写、执行权限。我们将分析权限位的具体含义,如何通过命令行工具修改权限,以及权限掩码(umask)的作用。此外,我们还将讨论文件系统权限在实际应用中的常见问题及其解决方案,帮助读者构建更为安全且高效的Linux工作环境。
|
6月前
|
存储 Linux 数据安全/隐私保护
【Linux修行路】权限管理
【Linux修行路】权限管理