【Linux】深入理解linux权限

简介: 本文深入解析Linux权限管理机制,涵盖权限概念、用户角色、文件属性及操作方法。文章分为前言、权限介绍、用户与角色、文件属性、权限修改及常见问题六大板块。详细说明了权限类型(r/w/x)、角色优先级、chmod/chown指令用法,以及目录权限、umask掩码、粘滞位等重点内容。掌握这些知识,可有效提升Linux系统安全性和灵活性,是管理员必备技能。喜欢的话别忘了点赞支持哦! ❤❤❤

前言

在数字世界中,安全始终是最重要的基石,而Linux作为开源操作系统的璀璨明珠,其权限管理机制更是构筑安全防线的关键一环。本篇文章,我们将深入探讨Linux的权限体系,帮助你更好地掌控文件权限,构建更安全、可靠的工作环境。

一、权限是什么

在Linux当中,权限指的是操作系统用于控制用户对文件或目录进行访问的机制,说白了,权限能决定用户能不能访问一个文件或目录,能以什么样的方式访问文件或目录。影响权限的因素:目标事物的属性和用户及其扮演的身份角色

image.png

二、用户和身份角色

在Linux下,我们可以认为有两种用户:

  1. root用户(超级用户)几乎不受权限约束,可以任意访问文件或目录。

2. 普通用户Linux使用者,受权限约束。

创建用户:adduser [用户名]

设置密码:passwd [用户名]

切换用户: su [用户名]

切换到root用户:su

回退到之前用户:ctrl+Dexit

以root身份重新登录:su -

指令提权:sudo 指令

注:指令提权本质是以root用户的身份执行命令

而“身份角色”是针对于具体事物,由用户所扮演的。身份角色有如下三种:

1. 文件拥有者(User,u)

2. 文件所属组(Group,g)

3. 其他人(Other,o)

对于一个目录或文件而言,身份角色不同,它们所拥有的权限也不尽相同,其权限由文件属性和身份角色共同决定

三、文件属性

1. 文件属性表示

使用 ls -l 指令显示文件信息,就可以看到文件属性

image.png

例如上图中的code文件,它的各项属性表示如下:

image.png

接下来,我们重点探讨一下文件类型以及权限属性。

2. 文件类型

文件类型

d:目录

-:普通文件

c:字符设备文件

b:块设备文件

p:管道文件

l:软链接文件

s:套接口文件

3. 文件的权限属性

如上图所示,文件的权限属性针对三种角色可能有所不同,这就说明权限由文件属性和身份角色共同决定。权限类型有三种:

r:可读--可以查看文件内容

w:可写--可以修改文件内容

x:可执行--可以运行

当权限属性的相应位置上有r/w/x时,表示该文件针对的角色具有读/写/执行该文件的权限,否则不具有相应权限。

以下两点需要注意:

对于root用户,无论其扮演的角色是否具有权限,其都可以进行相应操作。

一个文件可执行的两个必要条件:1. 文件具备可执行权限;2. 文件的类型是可执行程序。

权限类型有字符表示方法八进制表示方法两种

image.png

当使用八进制表示方法表示权限属性时,一种角色的权限属性可以只用一位八进制数字表示,所以一个三位八进制数字就可以表示全部角色的权限属性(修改权限属性时方便使用)。

注意:针对某个文件来讲,一个扮演多种角色的用户的权限按照角色优先级进行对应。

角色优先级:拥有者>所属组>其他人

举例:对于一个文件test.txt,拥有者的权限是r--,而所属组的权限是-x-,而一个用户既作为该角色的拥有者,也作为所属组时,其权限是r--(拥有者优先级较高,与拥有者权限相同)。

四、修改文件的权限属性和角色

1. 修改权限属性

我们可以使用chmod指令修改一个目录或文件的权限属性。它的语法如下:

chmod 选项 权限 文件名

常用选项-R 递归地修改目录及子目录的权限

其中,若使用字符表示法表示权限,则其格式是:(角色)(+/-)(r/w/x)

角色

u:表示拥有者

g:表示所属组

o:表示其他人

a:表示所有角色

+/-

+:表示新增权限

-:表示去除权限

使用示例:

chmod u+r test.txt

chmod g+rwx test.txt

chmod a-x test.txt

chmod -x test.txt

chmod u+r,o-w test.txt

当然我们也可以使用八进制表示方法设置文件权限。使用示例:

chmod 777 test.txt

chmod 456 test.txt

注意只有文件的拥有者或具有root权限才能修改和设置文件的权限属性

2. 修改文件角色

    除了文件的权限属性,文件角色也可以被修改。

chown指令修改文件拥有者

chown 用户名 文件名

使用示例:

chown user test.txt

chown -R user mydir/...

chgrp指令修改文件所属组

chgrp 用户名 文件名

使用示例:

chgrp user test.txt

chgrp -R user mydir/...

注意只有具有root权限才能修改文件拥有者;只有文件的拥有者或具有root权限才可以修改该文件所属组

五、关于权限的三个问题

1. 目录的权限

对于一个目录而言:

如果没有权限,就无法查看该目录下的文件信息;

如果没有权限,那么就无法创建、删除、修改该目录内部的文件;

如果没有执行权限,那么无法进入该目录。

注意:**即使一个目录有读权限,但若没有执行权限,那么仍然无法进入该目录,并且无法在该目录下执行命令和查看该目录下文件的详细信息。**

2. 默认权限与实际权限

在Linux下,一个普通文件,它的默认权限是rw- rw- rw-(666);而一个目录的默认权限是rwx rwx rwx(777)

但当我们创建一个普通文件和目录后,可以看到其权限属性并非是默认值

image.png

相比默认权限,两者的实际权限貌似缺失了所属组和其他人的读权限。这是为什么呢?

实际上,存在一种叫做umask权限掩码的机制,它控制的是新创建文件和目录时,哪些权限将被去除。注意:它并不会直接赋予权限,而是通过限制默认权限来间接设定权限。

image.png

可以使用umask指令查看umask码:

image.png

可以看到,当前系统的umask为022(最高位的0暂且省略),它其实是一个三位八进制数字,与八进制数字表示的权限属性相呼应。

掩码规则:文件的实际权限 = 默认权限(八进制)- umask**。**

所以我们看到的文件和目录的实际权限是:

目录:777 - 022 = 755 (rwx r-x -r-x)

文件:666 - 022 = 644 (rw- r-- r--)

当然,umask也可支持修改,使用示例如下:

umask 002 #将umask修改为002

修改umask,可以达到修改实际权限的效果。

3. 删除权限与粘滞位

删除一个文件,看的不是该文件的读/写/执行权限,而是需要该文件所在目录的**写权限执行权限**,因为执行权限决定了是否可以进入目录;写权限决定了是否可以删除目录下文件。

但这种设定似乎并不合理:假设有一个用户,其无权访问文件A,但可能有权删除文件A。

所以Linux出现了一种机制:粘滞位,用于防止无关人员删除重要文件

当一个目录被设置为粘滞位后,其下的文件或目录只能由以下两者删除:

1. root用户

2. 当前文件或目录的所有者

也就是说,除了root用户之外,该目录下的文件或目录,只有自己的,才能被自己删除。

设置粘滞位的指令:

chmod +t 目录名

总结:如果想要共享一个目录,并且确保目录下的文件不被删除,那么就需要设置粘滞位。

有两点需要注意:

1. 根目录下的tmp目录自带粘滞位,可以用做共享目录。

2. 粘滞位只需给目录设置,不需要给普通文件设置。

总结

本篇文章,我们深入探讨了Linux系统中的权限管理,包括权限的概念、用户角色、文件属性及其权限设置的操作方法。了解并掌握这些内容对于管理Linux系统的安全性至关重要。通过合理配置文件权限和用户角色,可以有效控制文件访问、提高系统的安全性和灵活性。如果你觉得博主讲的还不错,就请留下一个小小的赞在走哦,感谢大家的支持❤❤❤

相关文章
|
2月前
|
安全 Unix Linux
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
25000多字详细讲解,深度剖析权限管理核心。从基础权限到复杂的特殊权限,逐一拆解,无论你是零基础小白还是经验丰富的运维人员,都能在这里找到提升技能的关键知识,全面掌握 Linux 权限管理。还不快来看看?
|
6月前
|
Linux Shell
Linux系统文件默认权限
Linux系统文件默认权限
125 2
|
2月前
|
安全 Linux 数据安全/隐私保护
Linux权限揭秘“Root与Sudo”
Root用户是Linux系统中的超级用户,拥有对系统的完全控制权。Root用户几乎可以执行任何命令,修改任何文件,甚至删除系统上的所有内容。因此,Root用户的使用需要非常谨慎,以避免潜在的安全风险。
104 6
|
5月前
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
124 1
linux特殊权限!!
|
6月前
|
运维 监控 安全
Linux_权限理解(详细PLUS)
【10月更文挑战第3天】本文介绍了Linux系统中的权限管理基础,包括文件系统对象与权限关联、权限的继承性、字符与数字表示法的解读,以及用户、组与权限的动态交互。详细解析了`chmod`命令的高级用法和权限修改的风险,探讨了SUID、SGID和Sticky Bit等特殊权限的作用机制,并提出了基于角色的权限分配和定期权限审计的最佳实践。
148 11
|
6月前
|
Linux Go 数据安全/隐私保护
Linux入门2——初识Linux权限
Linux入门2——初识Linux权限
66 1
|
6月前
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky
|
6月前
|
Linux 数据安全/隐私保护 Windows
Linux_权限理解(详细PLUS
Linux_权限理解(详细PLUS
|
6月前
|
网络协议 Linux 网络安全
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
|
8月前
|
存储 安全 Linux
Linux权限之谜:一步步教你如何解锁sudo权限并窥视/etc/shadow的神秘面纱!
【8月更文挑战第22天】在Linux中,`sudo`命令让授权用户能以其他用户(通常是root)身份运行命令。关键的安全文件`/etc/shadow`存储用户密码哈希,仅root可读。要使用`sudo`,需确保账户被列入`sudoers`文件中。系统管理员可通过`visudo`编辑此文件来赋予用户权限,例如添加`username ALL=(ALL) NOPASSWD: ALL`行。获得`sudo`权限后,可运行`sudo cat /etc/shadow`查看文件内容,但需谨慎操作以免影响系统安全。遵循最小权限原则,确保安全使用这些强大工具。
310 2
下一篇
oss创建bucket