【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位(二)

简介: 本章我们将重点讲解 Linux 权限,这是 Linux 基础部分中非常重要的一部分。内容比较干,我会稍稍正经些去讲解。话不多说,我们直接切入正题。

Ⅳ. 文件权限的转让


0x00 chown 指令

chown [用户名] [文件名]     # 修改文件的拥有者

如果我是一个文件的拥有者,我想把文件给别人:

87466b2d252fdb65147a3af1670f1054_68d6c303948f46938be3cd131ea5e9d9.png


❓ 思考:当你想给别人东西的时候,要不要经过别人的同意?


当然需要!这里我们可以用 sudo 指令强制给别人:

f9e03fec372296ad1570c906c5b9c7e1_822145dbb62f4e28a47b52d1f17c66a3.png


(sudo 有一个叫信任列表的东西,你现在输入如果出现报错是因为 root 没有把你添加到信任列表里,这个我们后期讲完 vim 之后再说。在 /etc/sudoers 路径下。)


当然我们还可以直接切换成 root,通过 root 去给,别人不要也不行,就是这么🐂🍺。


(root 无视权限)


一个文件的创建者和拥有者一定是同一个人吗?


通过我们刚才修改文件的拥有者,我们就能得出 —— 不一定。


0x01 chgrp 指令

chgrp [用户名] [文件名]     # 修改文件的所属组

和 chown 一样的用法,我们可以用 chgrp 指令改变文件的所属组 group。

927f39317f633cad66962e827c644692_fcbdf885d1cf45aaa978d3161b65d0d3.png


Ⅴ. 目录的权限


0x00 目录的权限

78a8e2f33e88f9ff78b530a82a88e001_510542c49fe9421bb929605de03ac675.png


我们来去掉  权限,看看到底能不能进入这个 dir:

84f137dd79aaf42024f00144738ab1d1_f6422cfd427a480088a12108019611f3.png


这就说明进入一个目录跟   没有关系。

dce1e0775c43c82e772b03dd6ea992a9_9987b1250e4c43208e67a0bb32ee734a.png


❓ 如果我想进入一个目录,需要说明权限?


如果目录只没有  权限,允许进入、允许在该目录下创建(写入)文件,只不过是不允许查看:

c9a5f4202558f2118b74487f8d09920e_ac263856f8a44ff196e1fce9e08aa6c2.png


如果目录只没有  权限,允许进入,允许在该目录下查看文件列表,但是不允许创建文件:

7f05375764dd3a61a7f3d98590026527_76346a558e0e4492a307211a28065d6d.png


如果同时没有  权限,允许进入,但是不允许创建和查看目录下的文件列表:


(注意:不是文件内容,文件的内容是否可以查看由文件自己的权限决定)

3cbe0dcc8a717ef1f3cd37f4c1a28e37_4f95c6bc28e34358ac1e1831f3c97421.png


💡 Linux 下一切皆文件,目录也是文件。再结合 "文件 = 内容 + 属性" 去理解。


目录里面保存的是部分文件的 "属性" 。


(文件名和 id 之间是有对应的映射关系的,有可能被系统缓存了)


0x01 默认创建后的权限

d13bc9bebb19b4109f5044417b0ff17e_fcd9418f2adf4300a6de9c864d85bb48.png


为什么创建目录的默认权限是 775,而创建普通文件的默认权限是 664 ?


不同系统可能有差异吗?


创建的时候为什么不可以都是 777,权限都给我怼上呢?


📚 默认权限:① 默认目录的起始权限:777      ② 默认普通文件的权限:666


既然如此,那为什么不是 777 / 666,而是 775 / 664 呢?


💡 默认权限 != 最终权限,Linux 中的最终权限 = 默认权限 "去掉" umask 中存在的权限。


0x02 umask 权限掩码

因为系统中有一个默认的 "权限掩码" ,叫做 umask:


umask     # 打印权限掩码

1438a009124fb1c54ba302935412e022_a6f146dfff664556ad04a5ff7223dee9.png


📚 权限掩码:凡是在权限掩码中出现的权限,都不应该在最终权限中出现!

4761c26fbf252b46d416e436a8b2d89f_cfacc62b2c9d412eb551cfc9628526a5.png



所以,最后目录的默认权限变为了 775,文件权限变为了 664。


❓ 思考:所谓的 "去掉" umask 中的权限,是不是减去呢?


💡 这里的 "去掉" 并不是减去。首先要说的是,umask 是可以修改的:


umask [掩码]      # 修改umask掩码

db7da98bc9b75b7b748663d99ac41eca_1ea01249f27346cd90fdee8f8d54e283.png

由此可见,我们的权限确实是受 umask 的影响的。但是实际上是这样计算的:


最终权限 = 默认权限 & (~umask)

Ⅵ. 粘滞位(Sticky bit)


0x00 共享目录

Linux 下可以存在一些目录,拥有者和所属组是 root,


其他人允许以 other 的身份在该目录下进行文件的创建、读取、删除和修改等操作:

04525101c5177003484caa738f617df2_9ab5ca870ecc46549b7f3f6ac2da6d8d.png


📌 注意事项:在一个共享目录下,你不让我写,不让我读,但防不住我删除!


比如,有两个普通用户,用户A想让用户B访问它的文件,于是就 chmod 把 other 的  全撤咯,


于是用户B急了,恼羞成怒,啊你不给我用你也别想用了,得不到就毁掉!直接给你把文件删了。


如果你仍然是想在共享目录下形成临时文件,但又怕别人给你删了,


你可以给共享的 <目录> 加上粘滞位来解决。


注意,是给目录加粘滞位!即你共享哪个目录,你就在哪个目录下加上粘滞位。


我们下面来隆重介绍一下 Sticky bit ——粘滞位。


0x01 粘滞位

chmod +t [目录名]     # 添置粘滞位

💭 以 root 身份给 all 目录添置粘滞位:


8328f19999ac09437c2d35649fae23dd_9e443a3eed714efc8945d9de9bd843f5.png


目录设置了粘滞位  后,作为 other 就无法随意地删除其他用户的文件了:

32f964f91d526edb74007a3fb94abc12_338180c6724f4f2e99cbcac35e457be3.png


不过 root 还是想删就删,想干啥就干啥。


还是那句话 —— 普通用户再怎么进行文件操作,对 root 都是无效的。

07c03ae6d77b4b153f6d1ec710be7c14_7a80245f0b5f4021a033b3789a9efdeb.png

相关文章
|
9月前
|
存储 Linux
Linux 目录名称
Linux系统目录结构简介:根目录(/)下包含各类功能目录,如/bin存放用户命令,/etc存储配置文件,/home为用户主目录,/var记录日志等可变数据,/usr存放用户工具,/tmp用于临时文件。各目录分工明确,保障系统有序运行。(238字)
352 5
|
Linux 定位技术
Linux系统中的cd命令:目录切换技巧
踏过千山,越过万水,人生就是一场不断前行的旅程,总充满了未知与挑战。然而,“cd”命令如同你的旅伴,会带你穿梭在如棋盘一般的文件系统中,探索每一处未知。希望你能从“cd”命令中找到乐趣,像是掌控了一种络新妙的魔法,去向未知进发,开始你的探索之旅。
520 24
|
监控 Linux
Linux基础:文件和目录类命令分析。
总的来说,这些基础命令,像是Linux中藏匿的小矮人,每一次我们使用他们,他们就把我们的指令准确的传递给Linux,让我们的指令变为现实。所以,现在就开始你的Linux之旅,挥动你的命令之剑,探索这个充满神秘而又奇妙的世界吧!
293 19
|
网络协议 Shell 网络安全
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
“说说看,如果一个Pod的容器没有Shell,如何测试它能否访问外网?”
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
|
存储 Unix Shell
Shell 输出命令完全指南:echo 与 printf 的深度剖析
本文深入解析了 Shell 编程中 `echo` 和 `printf` 两个核心输出命令的用法与区别。`echo` 简单易用,适合基础输出;`printf` 功能强大,支持复杂格式化。文章从语法、转义序列、高级技巧到实际应用场景(如日志记录、进度显示)逐一讲解,并对比两者的性能与适用场景,帮助开发者根据需求灵活选择。最后通过进阶技巧和常见问题解答,进一步提升对两者的掌握程度。
878 1
|
Linux
Linux目录删除指南:彻底解决“Is a directory”错误
在 Linux 系统中遇到 `cannot remove &#39;xxx&#39;: Is a directory` 错误,是因为删除目录时未使用正确参数。解决方法包括:1) 使用 `rmdir` 删除空目录或 `rm -r` 删除非空目录;2) 检查并调整目录权限(如通过 `sudo` 提权);3) 处理特殊场景,例如文件属性异常、特殊字符或进程占用;4) 替代方法如 `find -delete` 或文件系统修复。操作前建议备份数据,并启用防误删功能(如 `alias rm=&#39;rm -i&#39;`)。掌握 `rm` 和 `rmdir` 的区别是关键。
2059 1
|
10月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
1009 1
二、Linux文本处理与文件操作核心命令
|
10月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
618 137
|
10月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
1581 58
|
9月前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
1454 2