2、Linux权限理解

news2024/12/25 14:10:12

个人主页:Lei宝啊 

愿所有美好如期而遇


目录

前言 

Linux权限的概念

1.文件访问者的分(人)

2.文件类型和访问权限(事物属性)

3.文件权限值的表示方法

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

file指令

目录的权限

粘滞位

关于权限的总结


前言 

在开始Linux权限理解前,我们先来理解一下shell命令以及运行原理。

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel),但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。

我们通过shell远程登录到云服务器上进行操作,买的云服务器,安装的Centos 7版本的Linux系统,用户通过shell外壳与Linux操作系统进行交互。

那么我们为什么不能直接与操作系统进行交互,而是要通过shell外壳呢?

有两个原因:

1、操作难度,用户的水平可能不足以直接与操作系统进行交互。

2、安全性,用户如果发出不安全的指令,比如使操作系统有挂掉风险的指令,那么shell外壳就可以安排一个子进程让他去执行,就算挂掉也不会影响进程。

那么shell外壳是什么呢?

命令行解释器,我们登录的时候,可以看到这样的东西:

这个就是命令行解释器,也就是我们的shell,当然,我们可以试着查看他。

bash就是shell的一种吗,就好像shell是媒婆,bash就是王婆那样。

那么怎么办我们也就知道了。

shell对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。



Linux权限的概念

Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

接下来我们来看看他们间的切换

root使用su切换普通用户后当前目录时不变的,普通用户su切换超级用户后当前目录也不变。

普通用户使用su -切换root时就是重新登录root。

从普通用户退回root。

1.文件访问者的分类(人)

拥有者:user(文件和文件目录的所有者)

所属组:group(文件和文件目录的所有者所在的组的用户)

其他人:other(其它用户)

2.文件类型和访问权限(事物属性)

 文件类型

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

文件夹即目录,开头为d

普通文件包括:图片,文本文件,源代码,视频,库,可执行文件等,开头为-

软链接,开头为l

其他不做介绍,了解一下就好

基本权限 

读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件以及创建文件的权限
执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
“—”表示不具有该项权限

3.文件权限值的表示方法

 ...

user只有只读权限,无法向文件写入。

user只有写权限,不可读取。

 拥有执行权限的文件a.out(我们通过执行gcc指令出来的a.out,此时a.out是可执行文件)

但是拥有执行权限就可以执行权限了吗?(我们通过添加x权限出来的file,并不是可执行文件)

我们看到尽管我们有了执行权限,但是由于file不是可执行文件,所以不可执行。

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

chmod

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

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

看普通文件的权限 

 去掉test.c文件所有的权限

添加权限

再将权限全关掉,之后我们测试=给权限

 ②三位8进制数字

前三位,中三位,后三位按二进制换算为8进制

chown

功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名

 

chgrp

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组 

但是我们如何同时修改拥有者和所属组呢?

有没有细心的老铁发现我们创建文件和目录时他们默认有的权限转换为八进制是多少吗?

文件为644,目录为755

当然,你的可能和我不一样,这就要提到我们的umask掩码,

umask

功能:
查看或修改文件掩码
新建普通文件默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

我们取掩码后面三位转换为二进制:000 010 010

新建普通文件默认权限转换二进制:110 110 110

新建目录默认权限转换为二进制为:111  111 111

掩码有一的地方对应着新建文件相同位置改为0,则结果为:110 100 100和111 101 101,转为8进制也就是644和755

现在我们设置一下umask的值

777和666,结果是显而易见的

file指令

功能说明:辨识文件类型。
语法:file [选项] 文件或目录...

Linux系统不区分大小写,但是他的指令区分。

目录的权限

 接下来我们来看目录的权限

目录的拥有者去掉自己目录dir的r权限后,无法查看dir目录下有什么文件。

去掉拥有者目录dir的w权限后,无法在该目录下创建文件,删除文件,改名,以及移动操作,但是可以做写入操作。

去掉拥有者目录的x权限后,无法进入该目录

粘滞位

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

那么为什么要提出粘滞位这个概念呢?

进入root的根目录,tmp这个目录时共享目录,仔细看他的权限,不是x而是t,t就是粘滞位

接下来我们正式回答为什么有粘滞位的这个问题:

假设有两个普通用户,他们都在一个云服务器上,有一天他们想要在这上面查看对方的一个文件,

显然,没有权限,无法查看,那么有什么办法解决呢?于是Linux给出了方法,就是共享目录tmp,谁都可以看,谁都可以改里面的文件,谁也可以进入目录。

但是就根据我们的rwx权限而言,我张三建的文件,你李四是不是也可以删?那我不想让你删,但是现有的权限又允许删,所以Linux就搞出了粘滞位t,这样你别人想删就不行了。 

关于权限的总结

文件访问者分拥有者,所属组和其他,文件类型分普通文件,目录,软链接等,目录和文件的访问和修改等需要权限,我们通过chmod,chown等修改权限,而root不受权限影响,最终我们通过一个共享目录引出了粘滞位这个概念

root几乎可以无视权限问题,普通用户设置的权限在root那里是没有用的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1133284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA: 自用主题及字体搭配推荐

文章目录 1. 字体设置推荐2. 主题推荐3. Rainbow Brackets(彩虹括号)4. 设置背景图片 下面是我的 IDEA 主题和字体,它们的搭配效果如下: 1. 字体设置推荐 在使用 IntelliJ IDEA 进行编码和开发时,一个合适的字体设置可以提高你的工作效率和舒…

Python---for循环中的两大关键字break和continue

之前在while循环中,也是用到两个关键字。 相关链接: 所以,在循环结构中都存在两个关键字:break和continue break:主要功能是终止整个循环 break:代表终止整个循环结构 continue:代表中止当…

【Note】二叉树的遍历

二叉树的遍历 二叉树的基本结构:根节点(Data)、左子树(LChild)和右子树(RChild)。 因此只要依次遍历这三部分,就遍历了整个二叉树。 如果用L、D、R分别表示遍历左子树、访问根结点…

不用编程超简单的自动化测试工具:Airtest入门篇教程!

目录 一、背景 二、什么是Airtest 三、Airtest下载安装 四、Airtest入门使用教程 4.1 连接设备: 4.2 具体测试场景案例: 五、总结 一、背景 很多刚入行或从其他行业转行做测试的同学,日复一日每天做点工已经点得疲惫和麻木&#xff0…

SparkSQL执行流程与Catalyst优化器

目录 一、SparkSQL运行流程与Catalyst优化器 (1)RDD运行流程 (2)SparkSQL自动优化 (3)Catalyst优化器流程 (4)Catalyst优化器总结 (5)Spark SQL执行流程 一、…

Leo赠书活动-02期 【信息科技风险管理:合规管理、技术防控与数字化】

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 赠书活动专栏 ✨特色专栏:…

五、W5100S/W5500+RP2040树莓派Pico<UDP Client数据回环测试>

文章目录 1. 前言2. 协议简介2.1 简述2.2 优点2.3 应用 3. WIZnet以太网芯片4. UDP Client回环测试4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 测试现象 5. 注意事项6. 相关链接 1. 前言 UDP是一种无连接的网络协议,它提供了一种简单的、不可靠的方式来…

Premiere Pro(Pr)2023软件下载及安装教程

目录 一.简介 二.安装步骤 软件:Pr版本:2023语言:简体中文大小:8.30G安装环境:Win11/Win10(1809版本以上)硬件要求:CPU2.6GHz 内存8G(或更高,不支持7代以下CPU&#xf…

Android系统启动

首语 Android系统启动与应用启动、四大组件、AMS等很多内容都有关联,因此,Android系统启动是首先需要了解的知识。 Android 系统启动流程 Android系统流程主要部分如上图所示。下面对各个流程进行解析。 Boot ROM 启动电源以及系统启动。当电源按下时…

启动1000万个虚拟线程需要多少时间?需要多少平台线程?

之前,在Java新特性专栏中,我们简单介绍了Java 21正式发布的虚拟线程。 昨天,正好看到一个讲解此内容的视频,非常不错,所以DD这里给大家翻译好了,感兴趣的可以看看。可以进一步了解虚拟线程。 什么是虚拟线…

二进制搭建 Kubernetes+部署网络组件+部署CornDNS+负载均衡部署+部署Dashboard

二进制搭建 Kubernetes v1.20 k8s集群master01:20.0.0.50 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群master02:20.0.0.100k8s集群node01:20.0.0.110 kubelet kube-proxy docker etcd k8s集群node02:20.…

ArcGIS笔记12_ArcGIS搜索工具没法用?ArcGIS运行很慢很卡?

本文目录 前言Step 1 ArcGIS搜索工具没法用Step 2 ArcGIS运行很慢很卡 前言 这是笔者最近遇到的两个小问题,新换了台式机,安装上ArcGIS后发现搜索工具没法用,而且感觉还不如原来笔记本运行的流畅,加载图层很慢,编辑要…

基于YOLOv8模型和UA-DETRAC数据集的车辆目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型和UA-DETRAC数据集的车辆目标检测系统可用于日常生活中检测与定位汽车(car)、公共汽车(bus)、面包车(vans)等目标,利用深度学习算法可实现图片、视频、摄像头等方…

μCOS-Ⅲ中断管理,这样理解非常简单!

μCOS-Ⅲ中断管理,这样理解非常简单! 文章目录 μCOS-Ⅲ中断管理,这样理解非常简单!前言一、中断源与中断优先级二、μCOS-Ⅲ的中断管理方式三、中断屏蔽与中断控制1、μCOS-Ⅲ中断开关2、μCOS-Ⅲ中断屏蔽应用——临界区4、μCOS…

sqoop和flume简单安装配置使用

1. Sqoop 1.1 Sqoop介绍 Sqoop 是一个在结构化数据和 Hadoop 之间进行批量数据迁移的工具 结构化数据可以是MySQL、Oracle等关系型数据库 把关系型数据库的数据导入到 Hadoop 与其相关的系统 把数据从 Hadoop 系统里抽取并导出到关系型数据库里 底层用 MapReduce 实现数据 …

Linux区分文件类型,file指令,目录权限,umask掩码,共享文件,Linux中的一些有趣指令

file指令,Linux区分文件类型,目录权限,umask掩码,共享文件,Linux中的一些有趣指令 1.Linux中是如何区分文件类型的2. file指令3.目录权限4.umask掩码5.粘滞位6.Linux中的一些有趣指令 所属专栏:Linux学习❤…

计算机网络-TCP协议

面向连接的运输:TCP TCP连接 TCP被称为面向连接的,因为在应用程序开始互传数据之前,TCP会先建立一个连接,该连接的建立涉及到三次“握手”。 TCP的连接不是一条真实存在的电路,而是一条逻辑链接,其共同状…

EL表达式和JSTL标签库

2023.10.25 EL表达式是什么&#xff1f; EL表达式&#xff0c;Expression Language&#xff08;表达式语言&#xff09;&#xff0c;可以代替JSP中的java代码&#xff0c;让JSP文件中的程序看起来更加整洁&#xff0c;美观。 由于JSP中夹杂着各种java代码&#xff0c;例如<…

MySQL---表的增查改删(CRUD进阶)

文章目录 数据库约束表的设计一对一一对多多对多 新增查询聚合查询分组查询联合查询内连接外连接自连接子查询合并查询 数据库约束 数据库约束就是指&#xff1a;程序员定义一些规则对数据库中的数据进行限制。这样数据库会在新增和修改数据的时候按照这些限制&#xff0c;对数…