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

[Linux]深刻理解Linux权限

  • 从0到1,深刻理解Linux权限
  • Linux权限的概念
  • Linux权限管理
    • Linux文件访问者
    • 文件类型和访问权限
      • 文件类型
      • 访问权限
  • 文件访问权限设置
    • 修改文件权限
    • 修改文件拥有者
    • 修改所属组
  • umask掩码
  • 目录权限
    • 目录权限问题
    • 粘滞位
  • 权限总结:

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

Linux权限的概念

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

  1. 超级用户:可以再linux系统下做任何事情,不受限制。

  2. 普通用户:在linux下做有限的事情。

  3. 超级用户的命令提示符是“#”,普通用户的命令提示符是"$";

命令:su 或 su -

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

从0到1,深刻理解Linux权限_第1张图片

Linux权限管理

Linux文件访问者

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

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

从0到1,深刻理解Linux权限_第2张图片

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

文件类型和访问权限

文件类型

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

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

见一见常见的文件类型:

从0到1,深刻理解Linux权限_第3张图片

访问权限

文件权限有三种,

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

表示法通常有两种:

一种是字符直接表示:

从0到1,深刻理解Linux权限_第4张图片

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

从0到1,深刻理解Linux权限_第5张图片

文件访问权限设置

修改文件权限

chmod

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

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

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

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

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

从0到1,深刻理解Linux权限_第6张图片

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

  • 通过八进制数值修改

从0到1,深刻理解Linux权限_第7张图片

总结:

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

修改文件拥有者

chown

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

从0到1,深刻理解Linux权限_第8张图片

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

修改所属组

chgrp

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

从0到1,深刻理解Linux权限_第9张图片

umask掩码

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

从0到1,深刻理解Linux权限_第10张图片

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

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

image-20230522133444762

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

从0到1,深刻理解Linux权限_第11张图片

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

从0到1,深刻理解Linux权限_第12张图片

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

目录权限

目录权限问题

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

  1. 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.

  2. 可读权限:如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.

  3. 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

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

从0到1,深刻理解Linux权限_第13张图片

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

粘滞位

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

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

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

从0到1,深刻理解Linux权限_第14张图片

权限总结:

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

  1. 目录的可执行权限是表示你可否在目录下执行命令。

  2. 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)

  3. 如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

你可能感兴趣的:(Linux系统和网络,linux)