linux权限续
文章目录
- linux权限续
- 进入目录的权限
- 有关默认权限
- 删除文件权限--粘滞位
- 基础开发工具
- 软件包管理器
- 结语
很高兴和大家见面,给生活加点impetus!!开启今天的编程之路
今天我们来学习Linux的基础指令,以及细化每一条指令,我们会从基本用法和理论的角度出发认识这些指令
作者:٩( ‘ω’ )و260
我的专栏:Linux,C++进阶,C++初阶,数据结构初阶,题海探骊,c语言
欢迎点赞,关注!!
linux权限续
在前面我们讲解了普通文件的权限,接下来我们来理解目录与权限的联系,我们需要使用普通用户来验证,因为超级用户不受权限限制,这里主要有三个问题:
1:我们需要什么权限才能够进入一个目录?
2:为什么创建普通文件,目录的默认权限是固定的?
3:other没有任何权限,能否删除文件?
进入目录的权限
我们来看进入目录的权限,我们一个一个来验证:
先来验证-r:
注意:为什么这里我减去的是拥有者的-r,因为角色匹配只会匹配一次,且是从左到右匹配,这里用户为zxh,匹配到的是拥有者
那么目录文件中,-r的作用是什么呢?
-r:决定用户能否查看该目录中的文件属性
再来验证-w:
我们发现还是能够进入目录,那么-w决定的是什么呢?
-w:决定了特定用户是否有权限在该目录下进行创建目录文件,删除,重命名文件
所以:
进入目录的权限就是-x
来看代码验证:
其实这里可以这样理解:
前面我们提到过linux下一切皆文件,所以目录也是一个文件,是文件就必须包含文件内容和文件属性,目录的文件属性直接ll就可以看到,那么,目录的文件内容是什么呢?
我们可以片面的理解为目录文件内容就是目录下的文件的属性!!这里我们学到文件再来完善
有关默认权限
刚才我们创建了一个目录文件,此时就有一个默认的权限,普通文件也同理:
这两者的区别是什么呢?
目录文件比普通文件默认权限就多一个x:因为目录文件可以进入,普通文件大多数都是文本文件,库文件,可执行文件~
如果我们将这个转换为八进制,目录文件为 775,普通文件为664,默认权限涉及起始权限:
目录的起始权限为777,普通文件的起始权限为666
接下来还涉及权限掩码的问题:
查看权限掩码:umask
修改权限掩码:umask + 三位八进制数字
注意:不用担心修改之后不知道其实的权限掩码是多少,关闭xshell之后重新登陆,就会被重置为最初的权限掩码
我们直接来说明结论:
凡是出现在权限掩码中的权限,最终都应该从权限中去掉
注:去掉不是减,计算规则是:默认权限=起始权限 & (~权限掩码)
所以造成的效果就是字符掩码中的权限在其实权限中就去掉了!!
来看示例:
此时我们字符掩码是002,即other权限中的w权限肯定是在起始权限中没有的。
此时我们字符掩码是777,即三种角色所有权限在起始权限中都没有:
删除文件权限–粘滞位
有一种场景,比如我们需要两个普通用户进行共享文件,那么,我们共享文件的位置应该是在哪里呢?
先来看家目录,家目录默认只对自己开放,所属组和oher都是没有任何权限的,所以共享文件肯定不能够放在家目录的。
那么,我们最好就放在root创建的目录中,为什么呢?因为用户可以进行sudo提权去访问有root用户创建的共享文件!!
语法:chmod +t 目标目录
如果此时还有一个用户要来访问这个文件,此时肯定第三个用户也能够访问到,但是,就有一个问题:
第三个用户访问的时候,我能够通过sudo提权将这个共享文件给删除掉,因为该文件root用户已经对所有用户other用户开放w权限,允许对其中的文件进行创建,删除,重命名改目录文件,这就导致了我的共享文件能够被任何人删除!!这显然不合理,为什么我的文件能够被任何人删除呢?
为了处理这种情况,引入了粘滞位~
这里zxh.txt是由zxh用户创建的,但是却可以被其他用户给删掉,那么不是别人想删这个文件就删这个文件。当我们给该目录添加上粘滞位之后,再来看结果:
因为普通用户相当于根目录都是other,所以肯定是在other加上t权限,此时再去删除该文件是就会报错~~
此时由于粘滞位,只能够删除自己创建的文件(root用户除外)
我们先来说明结论:
粘滞位:
1:给other用户设置的权限管理级别
2:创建的文件只能够有拥有者和超级用户删
基础开发工具
软件包管理器
什么是软件包?
在linux中,下载软件主要分为三种手段:
1:源代码下载(麻烦),因为还需要自己编译
2:rpm包安装(麻烦)。
3:软件包管理器(推荐):即将已经完成的二进制程序已经编译好放在了对应的服务器上。用户需要下载直接可以到对应的服务器上下载
apt/yum都是软件包管理器,能够自动解决依赖,下载,安装软件包问题
依赖是什么?
以前我们写的程序都是依赖库中的代码,比如写一个打印hello world程序,需要借助库中的文件,即头文件。
同理,linux中各个二进制程序指令也会对库有依赖,如动态库。使用软件包安装能够下载这个二进制程序指令,同时也能够进行将对应的动态库等依赖性文件一并下载。
评估操作系统的好坏:linux生态(涉及文档,论坛,更新,软件自身,客户群体),即操作系统做的目的就是为了有更多人能够使用。
我们来查看涉及软件包安装的具体指令操作:
安装:apt/yum install -y 二进制程序名称
删除:apt/yum remove -y 二进制程序名称
在下载程序的时候我们需要保证网络通畅,检查网络是否通畅的指令:
ping + 目标地址(域名/主机名)
来看测试代码:
链接正常的话指令会运行下方并给出结果~~
下载软件包之后,可以去找到对应的软件包:
指令:
centos:yum lis | grep 二进制程序名称
ubuntu:apt search 二进制指令名称
list指罗列目标包服务器,其中包含打包好的二进制程序(即命令)。
这里我们不再举例~~
结语
感谢大家的认真阅读,不足之处欢迎大家留言指出,感谢大家支持!!