OS9.【Linux】基本权限(下)

目录

1.默认权限

掩码

修改权限掩码

目录的权限说明

r权限

w权限

x权限

结论

家目录权限

2.共享目录

粘滞位t


承接OS8.【Linux】基本权限(上)文章

1.默认权限

创建用户时拥有者所属组都是该用户,而且对其他人没有任何权限

掩码

新建文件new.txt1和目录folder后,立刻查看它们的权限:

显示目录的默认权限:775

显示普通文件的默认权限:664

思考:为什么会出现以上默认的权限?

其实:系统提供普通文件的默认权限是666,而目录的默认权限是777,664与666不同的原因和775和777不同的原因和权限掩码umask有关

输入umask命令:

bash 复制代码
umask

只看后3位002,最左侧的0不管,给出以下规则:

在umask出现的权限(二进制位为1)不会在最终的文件权限中出现,而umask中未出现的权限(二进制位为0)保持起始的权限位

推测最终权限是掩码和起始权限通过某运算规则得到的,

这个运算规则是:最终权限=原始权限&(~掩码)

也可以变形为**~(~原始权限|掩码),使用德摩根定律**

写一个简单的程序验证下:

cpp 复制代码
#include <stdio.h>
int main()
{
    printf("%d", 666 & (~002));
    return 0;
}

运行结果:

cpp 复制代码
#include <stdio.h>
int main()
{
    printf("%d", ~(~666|002));
    return 0;
}

运行结果:

修改权限掩码

例如修改成0123:

cpp 复制代码
umask 0123

目录的权限说明

使用控制变量法,逐个尝试,设目录folder里面有test.txt文件

r权限

先禁掉w和x权限:

cpp 复制代码
chmod u+r-wx,g+r-wx,o+r-wx folder

查看目录中的文件:只知道文件名,但不知道文件的权限

无法查看test.txt的内容:

无法向test.txt写入内容写入内容:

不允许进入目录:

w权限

先禁掉r和x权限:

cpp 复制代码
chmod u+w-rx,g+w-rx,o+w-rx folder

无法查看目录中的文件:

无法向test.txt写入内容写入内容:

不允许进入目录:

x权限

先禁掉r和w权限:

cpp 复制代码
chmod u+x-rw,g+x-rw,o+x-rw folder

无法查看目录中的文件:

尝试向test.txt写入内容:可以写入,能打印到显示器上

可以进入目录里:

结论

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

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

可写权限w: 如果目录没有可写权限, 则无法在目录中创建、更改或删除文件.

-->一个文件是否能被删除,不由文件本身决定,而由其所处的目录决定

家目录权限

普通用户的家目录权限是700,也就意味着一个普通用户无法访问另一个普通用户的目录,但root除外,其有最高权限

2.共享目录

如果多个普通用户想共享一个目录,则这个共享目录不能在任何一个人的家目录下

现以root身份创建共享目录shared:

粘滞位t

为了防止其他用户删除目录中的文件,

1.shared目录中,对other去掉权限w是不能解决问题的,由上述对w权限的分析,这样就无法创建文件,

2.缺点:只能以root身份建立共享目录,且只有以root身份才能增删改查,例如上方提到的shared目录

解决方法:根目录下有一个自带的tmp目录**,可以在其中对用户各自的文件进行增删改查操作,其中权限中的t为粘滞位(可以通过chmod o+t设置),是特殊的x权限,当前认为: 只有root和拥有者能删除文件,其他人都不允许**

例如以guest身份创建一个test.txt,切换为zhang身份却发现无法删除test.txt

相关推荐
hyf32663311 小时前
泛程序:从零开始搭建稳定程序项目框架
运维·服务器·爬虫·百度·seo
哎呦喂我去去去11 小时前
C#实现屏幕墙:同时监控多个电脑桌面(支持Windows、信创Linux、银河麒麟、统信UOS)
linux·windows·c#
为自己_带盐11 小时前
安敢越雷池一步?浅尝雷池WAF社区版
运维·web安全
NiceCloud喜云11 小时前
海外云服务器怎么选?适用场景、价格和避坑经验总结
运维·服务器
easy_coder12 小时前
Linux LVM 知识文档
linux·运维
小小的木头人13 小时前
Ubuntu 使用 udev + systemd + UUID 实现 USB 硬盘自动挂载
linux·运维·ubuntu
布鲁飞丝13 小时前
彩笔运维勇闯机器学习--cpu与qps的线性关系
运维·人工智能·机器学习
kaoa00014 小时前
Linux入门攻坚——84、网络虚拟化技术-1
linux·运维·服务器
RisunJan14 小时前
Linux命令-shutdown(安全关闭或重启系统)
linux·服务器·安全
2601_9657984715 小时前
MTDb Movie & TV Database Script Setup, Caching, and SEO Guide
linux·服务器·数据库·php