2、Linux权限理解

个人主页: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.mzph.cn/news/118196.shtml

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

相关文章

excel常用的几个函数

1、MID函数 通常用来返回返回指定字符串中的子串。 函数公式: MID(string, starting_at, extract_length) String(必填):包含要提取字符的文本字符串 starting_at(必填):文本中要提取的第一个字…

YOLO目标检测——行人数据集【含对应voc、coco和yolo三种格式标签+划分脚本】

实际项目应用:智能监控、人机交互、行为分析、安全防护数据集说明:行人检测数据集,真实场景的高质量图片数据,数据场景丰富标签说明:使用lableimg标注软件标注,标注框质量高,含voc(xml)、coco(j…

docker-compose安装ES7.14和Kibana7.14(有账号密码)

一、docker-compose安装ES7.14.0和kibana7.14.0 1、下载镜像 1.1、ES镜像 docker pull elasticsearch:7.14.0 1.2、kibana镜像 docker pull kibana:7.14.0 2、docker-compose安装ES和kibana 2.1、创建配置文件目录和文件 #创建目录 mkdir -p /home/es-kibana/config mkdir…

音视频技术开发周刊 | 316

每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 日程揭晓!速览深圳站大会专题议程详解 LiveVideoStackCon 2023 音视频技术大会深圳站,保持着往届强大的讲师阵容以及高水准的演讲质量。两天的参会…

【解锁未来】探索Web3的无限可能性-01

文章目录 前言什么是Web3? 前言 还记得你第一次听说比特币吗?也许那只是一个关于新技术将改变一切的微弱嗡嗡声。也许你会有一种 "FOMO "的感觉,因为那些早早入场的人突然积累了一大笔财富–尽管你并不清楚这些 "钱 "可…

flutter开发的一个小小小问题,内网依赖下不来

问题 由于众所周知的原因,flutter编译时,经常出现Could not get resource https://storage.googleapis.com/download.flutter.io…的问题,如下: * What went wrong: Could not determine the dependencies of task :app:lintVit…

ip报头和ip报文切片组装问题

在tcp层将数据打包封装向下传递后,网络层将其整个看为一个数据,然后对其数据加网络报头操作,在网络层最具有代表的协议就是ip协议。在这里我们探究ipv4的报头。 ip报头 4位版本:指定ip的版本号,对于ipv4来说就是4。 …

asp.net文档管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net文档管理系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言开发 asp.net文档管理系统 二、功能介绍 (1…

C++ list 的使用

目录 1. 构造函数 1.1 list () 1.2 list (size_t n, const T& val T()) 1.3 list (InputIterator first, InputIterator last) 2. bool empty() const 3. size_type size() const 4. T& front() 4. T& back() 5. void push_front (const T& val) 6.…

FL Studio 21 for Mac中文破解版百度网盘免费下载安装激活

FL Studio 21 for Mac中文破解版是Mac系统中的一款水果音乐编辑软件,提供多种插件,包括采样器、合成器和效果器,可编辑不同风格的音乐作品,Pattern/Song双模式,可兼容第三方插件和音效包,为您的创意插上翅膀…

java _JDBC 开发

目录 一.封装JDBCUtiles 二.事务 三.批处理 四.数据库连接池 C3P0 Druidf(德鲁伊)阿里 五.Apache-DBUtiles 六.Apache-DBUtils 七.DAO 和增删改查 通用方法 - BasicDao 一.封装JDBCUtiles 说明:在jdbc操作中,获取连接和释放资源&#…

设计模式:代理模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

上一篇《组合模式》 下一篇《命令模式》 简介: 代理模式,它是一种结构型设计模式,它通过引入一个代理对象来控制对原始对象的访问。代理模式的主要目的是在保持原始对象…

《动手学深度学习 Pytorch版》 10.4 Bahdanau注意力

10.4.1 模型 Bahdanau 等人提出了一个没有严格单向对齐限制的可微注意力模型。在预测词元时,如果不是所有输入词元都相关,模型将仅对齐(或参与)输入序列中与当前预测相关的部分。这是通过将上下文变量视为注意力集中的输出来实现…

【Elasticsearch】es脚本编程使用详解

目录 一、es脚本语言介绍 1.1 什么是es脚本 1.2 es脚本支持的语言 1.3 es脚本语言特点 1.4 es脚本使用场景 二、环境准备 2.1 docker搭建es过程 2.1.1 拉取es镜像 2.1.2 启动容器 2.1.3 配置es参数 2.1.4 重启es容器并访问 2.2 docker搭建kibana过程 2.2.1 拉取ki…

LSKA(大可分离核注意力):重新思考CNN大核注意力设计

文章目录 摘要1、简介2、相关工作3、方法4、实验5、消融研究6、与最先进方法的比较7、ViTs和CNNs的鲁棒性评估基准比较8、结论 摘要 https://arxiv.org/pdf/2309.01439.pdf 大型可分离核注意力(LSKA)模块的视觉注意力网络(VAN)已…

Linux CentOS 8(firewalld的配置与管理)

Linux CentOS 8(firewalld的配置与管理) 目录 一、firewalld 简介二、firewalld 工作概念1、预定义区域(管理员可以自定义修改)2、预定义服务 三、firewalld 配置方法1、通过firewall-cmd配置2、通过firewall图形界面配置 四、配置…

利用Jpom在线构建Spring Boot项目

1 简介 前面介绍了运用Jpom构建部署Vue项目,最近研究了怎么部署Spring Boot项目,至此,一套简单的前后端项目就搞定了。 2 基本步骤 因为就是一个简单的自研测试项目,所以构建没有使用docker容器,直接用java -jar命令…

Java程序设计进阶

Java异常处理机制 异常 异常的最高父类是 Throwable,在 java.lang 包下。 Throwable 类的方法主要有: 方法说明public String getMessage()返回对象的错误信息public void printStackTrace()输出对象的跟踪信息到标准错误输出流public void printSta…

【项目设计】网络对战五子棋(下)

我不再装模作样地拥有很多朋友,而是回到了孤单之中,以真正的我开始了独自的生活。有时我也会因为寂寞而难以忍受空虚的折磨,但我宁愿以这样的方式来维护自己的自尊,也不愿以耻辱为代价去换取那种表面的朋友。 文章目录 一、项目设…

Postman笔记

文章目录 1.安装2.简介和使用流程3 postman使用3.1 测试集与HTTP请求发送HTTP请求和分析响应数据 3.2 发送HTTP请求和分析响应数据3.3 Postman中请求体提交方式3.4 Postman使用之接口测试3.5 使用Postman新建一个mock服务3.6 请求数据的参数化3.7 断言与脚本导出 1.安装 官网地…