【Linux权限】Shell命令及运行原理 | Linux权限管理 | 粘滞位 下

简介: 【Linux权限】Shell命令及运行原理 | Linux权限管理 | 粘滞位

💦 文件访问权限的相关设置方法

a) chmod

功能:设置文件的访问权限

格式:chmod [参数] 权限 文件名

常用选项

  • R -> 递归修改目录文件权限
  • 说明:只有文件的拥有者和 root 才能改变文件权限

chmod 命令权限值的格式:

1️⃣ 用户表示符 +/-= 权限字符

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

实例

$ chmod u-r file.txt
$ chmod g-rw file.txt
$ chmod o+rwx file.txt
$ chmod u+r,g+rw,o-rwx file.txt

sudo提升权限解决不可读等问题 ❗

作为 root 具有最高权限,所以这里能 cat 没问题;但是 root 同时也是 other,这里 other 无权限为什么能 cat 呢 ?

权限永远都是约束普通人的,root 是超级用户,它不受或几乎不受权限约束。这里的 owner、group、other 主要针对的是多个普通用户的情况。

Linux下文件后缀 ❗

之前说过 Linux 系统对于文件后缀是不关心的,注意这里指的是系统不关心不是某些工具。

这里把 a.out mv a.txt 后 a.out 和 a.txt 的结果是一样的。

如果我们把拥有者的 x 权限删除那么便不能执行了,因为我当前是文件的拥有者,那我也是所属组且有执行,为啥不让执行呢 ?—— 因为在审核权限时,优先使用拥有者。

2️⃣ 三位八进制数字

如上八进制数值表示方法

b) chown

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名

实例

$ sudo chown root file.txt//修改拥有者
$ sudo chown wanghong file.txt//修改拥有者
$ sudo chown :wanghong file.txt//修改所属组
$ sudo chown wanghong:wanghong file.txt//可以将拥有者、所属组同时修改
$ sudo chown root:root file.txt//可以将拥有者、所属组同时修改

c) chgrp

功能:修改文件或目录的所属组

格式:chgrp [参数] 用户组名 文件名

常用选项:-R 递归修改文件或目录的所属组

实例

$ sudo chgrp root file.txt
$ sudo chgrp wanghong file.txt

注意如果短期内使用过 sudo,那么可以不用输密码。

d) umask

功能:查看或修改文件掩码

格式:umask 权限值

说明:将现有的存储权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022,普通用户默认为 0002

❓ 新建了一个 file 文件、dir 目录,是什么决定了它的默认权限 ❔

一般普通文件,起始权限从 666(rw- rw- rw-) 开始

一般目录文件,起始权限从 777(rwx rwx rwx) 开始

为啥它没按照一般情况来 ❓

因为在 Linux 中,在设置权限时,系统默认会有一个 umask 权限掩码

对于 0002 我们这里先不管第一个 0(它涉及后面的概念),其它位转成对应的二进制就是 000 000 010

umask 其中设定了一个概念:凡是在 umask 中出现的权限,都不应该在最终权限中出现

这里我们发现只有 other 里有一个写的权限,那么最终我们应该在 666(rw- rw- rw-) 或 777(rwx rwx rwx) 中去掉 other 的写权限,其中计算过程是:default & ~umask

实例

所以换句话说我们在系统中设定的 umask 就可以进行更改默认权限了 ❗

之后我们再新建 file1.txt 和 dir1.txt 时,它们就无权限了:

使用sudo分配权限

对于 sudo 分配权限,咱后面再说,因为它需要改配置文件。

六、file指令

功能:辨别文件类型

语法:file [选项] 文件或目录

常用选项

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形
  • -z 尝试去解读压缩文件的内容

七、目录的权限

【面试题1】要在目录下创建文件,需要什么权限 ?

增加 w 权限,能写文件但不能读文件:

📝说明:

要在目录下创建文件,必须需要 w 权限。

【面试题2】要读取目录下的文件列表,需要什么权限 ?

增加 r 权限,能读文件但不能写文件:

📝说明:

要读取目录下的文件列表,必须需要 r 权限。

【面试题3】要进入一个目录,需要什么权限 ?

默认能进入:

删除 r 能进入:

删除 w 能进入:

删除 x 不能进入:

📝说明:

要进入一个目录必须具有 x 权限。

r 或 w 对于目录又影响什么呢 ❓

进入目录里查看文件、新建文件不能完成:

这里请转到上面两个面试题。

八、粘滞位

当前 owner、group 是 root,wanghong 是 other:

我作为 other 具有 rwx 权限,所以可以进入目录、查看、新建:

随后我们新建了若干文件(普通用户+root 用户)又把 root 的所有文件中 other 的权限删除:

对于 root 的文件,不能读、写、执行,因为作为一个普通人,人家的这个文件是 root 的,你不是 owner、group,甚至你作为 other,什么权限也没有,所以无可厚非。

但是作为一个普通用户我却可以删除 root 创建的文件:

📝说明

可以看到当前所处的目录是 dir 下,我作为 other 是可读可写可执行的,上面面试题说了我要在一个目录下新建文件,必须得有写权限,同样,删除文件也必须得有写权限。如果说这样就可以以 other 的身份去删除 root 的文件,那么权限也太高了吧。

在一个公开的目录下 (rwx rwx rwx),不同的用户新建文件,既定事实是我们我们只能访问权限以内的文件,但我可以随意的删除。

root 能删别人的这能理解,但是普通用户能删 root 的不能理解 ?—— 这是既定事实,有人说这是 Linux 系统设计的 bug,当然应该算他把这块的权限放的比较大,当你要删除时,系统也提示你是否要移除一个携保护的常规文件。

那怎么防止普通用户删掉root的文件呢 ❓

这里就引出我们的主题粘滞位

📝说明:

同一个目录下,不同人创建的文件可能会被其它人删除,为了防止这种情况,可以给目录设置粘滞位。

注意这样做只可以防止普通用户删除 root 的文件,root 依然能删除普通用户的文件。

如果要直接删除目录,一定要先把内部的文件全部删除,同样,你要删内部的文件,前提是你必须先进入目录。

当一个目录被设置为粘滞位,则该目录下的文件只能由:

  • 超级管理员删除
  • 该目录的所有者删除
  • 该文件的所有者删除

Linux系统中使用粘滞位的场景 ❓

在 Linux 系统中,有时会形成很多的临时文件 (一般在 /tmp)

九、权限总结

  • 目录的执行权限是表示你能否进入目录
  • 如果目录没有 x 权限,则无法对目录执行任何命令,甚至无法 cd 进入目录,即使目录仍然有 r 权限 (这个地方很容易犯错:认为有读权限就可以进入目录读取目录下的文件。这里有一个现象:a 目录不具有 x 权限,但是有 r 权限,此时去 ls a/,会报错同时也能查看)
  • 如果目录具有 x 权限,但没有 r 权限,用户可以执行命令,可以 cd 进入目录,但没有目录的读权限
  • 所以在目录下,即使可以执行 ls 命令,但仍然没有权限读出目录下的文档
相关文章
|
1月前
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
45 1
linux特殊权限!!
|
2月前
|
机器学习/深度学习 人工智能 Ubuntu
|
2月前
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky
|
2月前
|
Linux 数据安全/隐私保护 Windows
Linux_权限理解(详细PLUS
Linux_权限理解(详细PLUS
|
2月前
|
网络协议 Linux 网络安全
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
|
2月前
|
Linux Go 数据安全/隐私保护
Linux入门2——初识Linux权限
Linux入门2——初识Linux权限
30 0
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
95 8
|
1月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
265 6
|
1月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
80 3
下一篇
DataWorks