从0到1,深刻理解Linux权限

简介: 对普通文件的就不必多说了,读写可执行,都很好理解,要重点注意的是对目录权限的问题:目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

从0到1,深刻理解Linux权限

Linux权限的概念

Linux下有两种用户:超级用户(root)、普通用户

  1. 超级用户:可以再linux系统下做任何事情,不受限制。
  2. 普通用户:在linux下做有限的事情。
  3. 超级用户的命令提示符是“#”,普通用户的命令提示符是"$";

命令:su 或 su -

用来切换超级用户或者普通用户,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令

image-20230522094143705

Linux权限管理

Linux文件访问者

通常来讲,我们将Linux文件的访问者分为三类:

  1. 文件和文件目录的拥有者:u -- user
  2. 文件和文件目录的拥有者所在组的用户:g -- group
  3. 其他用户:o -- others

image-20230522123010509

如果普通用户想要使用root的权限才能做的一些事情,就需要sudo命令,在此之前则需要将普通用户添加到信任白名单里,路径为/etc/sudoers

文件类型和访问权限

文件类型

常见文件类型有以下几种:

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件  

见一见常见的文件类型:

image-20230522125239517

访问权限

文件权限有三种,

  1. 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  2. 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  3. 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  4. "-"表示不具有该项权限

表示法通常有两种:

一种是字符直接表示:

image-20230522125812289

另一种是八进制数值来表示:

image-20230522125853087

文件访问权限设置

修改文件权限

chmod

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:

-R -> 递归修改目录文件的权限

说明:只有文件的拥有者和root才可以改变文件的权限

既然权限的表示法有两种,修改权限的方法也就有两种:

  • 通过字符表示法直接修改:

image-20230522130921444

同时也可以看到,普通文件即使给了可执行权限,你去执行也是没有什么用处的。

  • 通过八进制数值修改

image-20230522131547299

总结:

+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户  

修改文件拥有者

chown

功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名

image-20230522132005465

可以看到,文件修改拥有者必须要root权限才行。

修改所属组

chgrp

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组

image-20230522132556497

umask掩码

现在文件的权限我们已经明白了,那么现在的问题是,我们创建一个文件,默认的权限是多少,为什么?

image-20230522133002567

创建一个目录和一个普通文件,可以看到,目录文件的默认权限是775,而普通文件是664,为什么呢?

这就是因为umask掩码的存在,

image-20230522133444762

umask默认值是0002,第一个0并不需要注意,只代表是八进制。需要注意的是后面的002,

image-20230522134300449

这就是原因默认权限的由来,通常情况下,我们也不需要改,但是umask是可以改的,而且很简单:

image-20230522134437610

可以看到,将umask值改完后,创建的文件默认权限确实是改变了。

目录权限

目录权限问题

上面已经理解了普通文件的权限,我们还需要将目录的权限单独拎出来理解清楚,两者还是有些区别的:

  1. 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
  2. 可读权限:如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
  3. 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

于是问题来了,如果一个人仅仅是有了目录的写权限,就能将文件随便删除,显然是不合理的,我们也可以验证一下:

image-20230522135605976

可以看到,用户lzb创建的文件竟然被dsb删掉了,我只是想要给你写的权限,但是你不能随便删我的文件吧。为了解决这个不科学的问题,就又引入了粘滞位

粘滞位

chmod+t,就可以给目录加上粘滞位,此时其他人即使有写权限,但是删不掉我的文件。这时候才是科学的现象。

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由:

一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

image-20230522140150585

权限总结:

对普通文件的就不必多说了,读写可执行,都很好理解,要重点注意的是对目录权限的问题:

  1. 目录的可执行权限是表示你可否在目录下执行命令。
  2. 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  3. 如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
相关文章
|
6月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
355 3
|
Linux Shell
Linux系统文件默认权限
Linux系统文件默认权限
304 2
|
9月前
|
安全 Unix Linux
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
25000多字详细讲解,深度剖析权限管理核心。从基础权限到复杂的特殊权限,逐一拆解,无论你是零基础小白还是经验丰富的运维人员,都能在这里找到提升技能的关键知识,全面掌握 Linux 权限管理。还不快来看看?
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
|
8月前
|
安全 Linux 数据安全/隐私保护
【Linux】深入理解linux权限
本文深入解析Linux权限管理机制,涵盖权限概念、用户角色、文件属性及操作方法。文章分为前言、权限介绍、用户与角色、文件属性、权限修改及常见问题六大板块。详细说明了权限类型(r/w/x)、角色优先级、chmod/chown指令用法,以及目录权限、umask掩码、粘滞位等重点内容。掌握这些知识,可有效提升Linux系统安全性和灵活性,是管理员必备技能。喜欢的话别忘了点赞支持哦! ❤❤❤
450 6
|
9月前
|
安全 Linux 数据安全/隐私保护
Linux权限揭秘“Root与Sudo”
Root用户是Linux系统中的超级用户,拥有对系统的完全控制权。Root用户几乎可以执行任何命令,修改任何文件,甚至删除系统上的所有内容。因此,Root用户的使用需要非常谨慎,以避免潜在的安全风险。
428 6
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
268 1
linux特殊权限!!
|
运维 监控 安全
Linux_权限理解(详细PLUS)
【10月更文挑战第3天】本文介绍了Linux系统中的权限管理基础,包括文件系统对象与权限关联、权限的继承性、字符与数字表示法的解读,以及用户、组与权限的动态交互。详细解析了`chmod`命令的高级用法和权限修改的风险,探讨了SUID、SGID和Sticky Bit等特殊权限的作用机制,并提出了基于角色的权限分配和定期权限审计的最佳实践。
246 11
|
Linux Go 数据安全/隐私保护
Linux入门2——初识Linux权限
Linux入门2——初识Linux权限
158 2
|
存储 安全 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`查看文件内容,但需谨慎操作以免影响系统安全。遵循最小权限原则,确保安全使用这些强大工具。
897 2
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky