【Hello Linux】 Linux的权限以及Shell原理(下)

简介: 【Hello Linux】 Linux的权限以及Shell原理(下)

文件访问权限的修改

如何修改文件的权限

我们一般在linux中使用下面的语法格式来修改文件的权限

chmod 选项 权限 文件名或目录名

这里要注意的是 只有root用户才有修改文件权限的权力 如果普通用户想要做这种操作需要使用sudo命令


修改文件权限的两种格式

格式一: 用户符号 +/-/= 权限字符

用户符号如下

  • u – 拥有者
  • g – 所属组
  • o – 其他人
  • a – 所有人


权限字符就是我们说的 rwx

下面是具体的操作示例

26bb5bf7a0314105a9fdd7a1dd2bc943.png


格式二 : 使用三位八进制数字

每一位八进制数字可以表示一个身份的三种权限

比如说 7的二进制是 111 即可以表示三种权限都存在的状态 rwx

6的二进制是110 则可以表示rw-

下面是具体的操作示例

a4d4587c35824e8f89750d6c54499de3.png


如何修改文件的拥有者

我们一般在linux中使用下面的语法格式来修改文件的拥有者

chown 选项 用户名 文件名或目录名

这里要注意的是 只有root用户才有修改文件权限的权力 如果普通用户想要做这种操作需要使用sudo命令

而如果想要递归修改所有文件的拥有者则需要使用 -R选项

下面是使用示例

b42c50a04e92479bbe1c01ffb59828c4.png


如何修改文件的所属组

我们一般在linux中使用下面的语法格式来修改文件的所属组

chgrp 选项 用户名 文件名或目录名

02c99672fd80425ba8cebd0d9d8aadcd.png

这里还有一种比较特殊的修改方式

就是当我们使用chown的时候 可以使用分号的方式指定两个用户 分别修改文件的拥有者和所属组

24a8d1fca5b44281a3f0bb20164822c4.png


如何修改文件的掩码

我们查看新建的文件和目录 它们都有自己默认的权限

其中新建文件的默认权限是 0666

新建目录的默认权限是 0777

第一位的0我们直接忽略 后面三位实际上就对应着三种身份的rwx权限

但是我们实际上创建文件或者目录的时候缺发现这不符合我们的理论

0a30f29cfd7f4e5e83773a13eac1f52e.png我们发现我们创建的目录 others并没有写权限

那么这是为什么呢?

实际上这是因为权限掩码的存在

我们假设默认权限是mask 掩码是umask 那么最后的文件的权限是 mask & (~umask)

我们可以通过umask指令来查看文件的默认掩码

3d893be6418a442ba121fd5ebce4621a.png

d9fde8dd6dd84a0d84cb7374b3435f69.png

我们可以发现刚好符合我们新创建的文件的权限 这也验证了我们的理论

与此同时我们可以设置权限掩码

bbe513bdd3e945fba26676de6220d7ff.png

892101cdc54e43488c59f5668cef026e.png

其中超级用的默认掩码是0022 普通用户的默认掩码是0002


目录的权限

对于目录来说它的可读可写可执行权限分别对应下面的内容

  • 可读权限: 如果用户没有该目录的可读权限 则无法通过ls指令查看目录中的文件内容
  • 可写权限: 如果用户没有该目录的可写权限 则无法通过一系列指令在目录中创建文件或删除文件
  • 可执行权限: 如果用户没有该目录的可执行权限 则无法通过cd指令进入到目录当中

但是这里就会有一个问题


只要用户有当前目录的可写权限 那么它就可以删除目录内的所有文件 哪怕它没有文件的可写权限

58b02f1ed519492ea3d0cb2fbd3e0049.png

这显然是很不合理了

于是linux中引入了一个叫做粘滞位的概念


粘滞位

它的语法格式如下

chmod +t 目录名

当一个目录被加上粘滞位之后 就算我们拥有这个目录的可写权限也无法删除了

ac1cc9501ec742c2b35857836e6910c3.png

001666574fe34371bd146b5279c46599.png

这里我们可以发现虽然other用户具有w权限 但是无法删除目录里面的文件了

当一个目录被设置为粘滞位只有三种情况能够被删除

  • 超级用户删除
  • 该目录的拥有者删除
  • 该文件的拥有者删除

这里最后还有一点值得注意的是

粘滞位只会影响删除 其他用户如果拥有w权限 仍然可以在该目录下创建文件

f6d3b88ad365486a83c2fa6d8407fa71.png

相关文章
|
6天前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
2天前
|
运维 监控 安全
Linux_权限理解(详细PLUS)
【10月更文挑战第3天】本文介绍了Linux系统中的权限管理基础,包括文件系统对象与权限关联、权限的继承性、字符与数字表示法的解读,以及用户、组与权限的动态交互。详细解析了`chmod`命令的高级用法和权限修改的风险,探讨了SUID、SGID和Sticky Bit等特殊权限的作用机制,并提出了基于角色的权限分配和定期权限审计的最佳实践。
21 11
|
6天前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
10天前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
26 2
|
1月前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
1月前
|
Linux
Linux内核的异常修复原理
Linux内核的异常修复原理
|
2月前
|
Unix Linux Go
Linux中的chmod权限问题
Linux中的chmod权限问题
30 0
|
1天前
|
Linux
Linux常用命令包括
Linux常用命令包括
10 5
|
1天前
|
Linux
Linux命令
Linux命令
12 5
|
5天前
|
Linux Python Perl
Linux命令删除文件里的字符串
Linux命令删除文件里的字符串
17 7
下一篇
无影云桌面