“权限之舞:Linux安全之道”

news2025/1/12 12:25:21

W...Y的主页😊

代码仓库分享💕

 


🍔前言:

在之前的Linux博客中,我们学习了基础的Linux指令,具体可以订阅一下博主的Linux专栏学习。当我们想进行递归删除文件时等等许多操作中,只有在root账号中有询问或只能在root账号中添加未安装的指令呢?今天我们来讲一下Linux的一些权限,长话短说我们开始今天的内容!

目录

Linux权限的概念

sudo指令

Linux权限管理

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

 文件访问者的分类(人)

文件权限值的表示方法

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

chcod指令


Linux权限的概念

Linux下有两种用户:超级用户(root)、普通用户。

超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

当我们在Linux系统中可以进行来回的切换root与普通用户。

命令:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。 

举个例子:

我现在就是一个普通用户,想要进入root账户中去,只需要输入su指令后,正确输入root账户的密码即可进入root账户(输入密码时,密码是不会显示的) 

当我们想要快速再返回到普通用户账户时,可以直接使用快捷键ctrl+d或者输入指令exit即可。

我们还有一种进入root账户的方法,输入指令su -即可。这样输入后与之前的操作相同,输入root账户密码即可进入,但是在命令行中会比上面指令多出几行内容。

就会出现上面类型之类的话语,虽然达到的结果是相同的,但是底层的意义是不同的。使用su指令就是暂时将身份提升至root,而su -指令本质是以root身份重新登陆一次,就如同点开xshell登录root账户一样。

 同样root账户也可以切换普通用户,因为root账户下可能有许多普通用户,所以在切换时su + 用户名即可。

在普通账户切换root账户时需要输入root账户的密码,但是在root切换到普通用户时是不需要输入密码进行验证的!!! 

当我使用的是普通用户切换到root账户下的另一个普通用户去,直接切换不用root作为媒介应该输入谁的密码呢?

输入自己账户的密码进不去,输入root账户的密码进不去,所以想要普通用户切换到另一个普通用户就要输入目标用户的密码进行切换。

但是如果我们有root账户的密码,我们就可以随意的进入每个普通用户中去,这是非常危险的行为,所以root账户的密码必须要复杂且保密!!! 

但是如果我们就是想使用普通用户的账户来进行一条指令的短暂操作,我们应该怎么办呢?

sudo指令

sudo指令可以短暂的将我们的身份切换为root账户进行执行一条命令。

命令:sudo + 过去学到的各种指令

如果没有sudo指令的安装,我们可以在自己的root账户中输入:yum install sudo 指令即可。

我们在普通用户中想要以root的身份创建一个文件,应该怎么做?

 我已经正确的使用sudo指令了,为什么还是创建不了呢?甚至报错!

那是因为在root账号中有一个类似于白名单的文件,将我们的普通用户进行加入才可以进行sudo指令操作。

我们的用户放在了以root创建的一个目录中去,一个用户只有在这个配置文件中,才可以使用sudo指令,反之则不能使用。

所以Linux系统考虑的非常周到,如果我们每个人都可以使用sudo指令,那么root账号将变得毫无意义。如何添加用户我们在后面的博客中讲解。

Linux权限管理

在生活中,我们都会遇到权限不足的问题,比如一个群聊是否为管理员、爱奇艺有无VIP会员等等,都与权限有关。当我们看那些需要vip的电影如果没有vip就是看不了。而Linux中也会有这些权限,而Linux一切路径下皆文件,所以我们Linux权限一般是针对用户与文件的,下面我们来了解一些Linux中的权限。

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

对于每个文件,我们也有相对应的属性,文件属性上我们分为w、r、x。

上图是一个文件的信息分布即意义,我们可以使用ll、ls -d等指令查看文件的详细信息内容。

文件类型:

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

基本权限: 

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

 文件访问者的分类(人)

 对于我们的用户访问文件,Linux会将它们分为三种类型:拥有者、所属组、other。

文件和文件目录的所有者:u---User(中国平民 法律问题)
文件和文件目录的所有者所在的组的用户:g---Group(不多说)
其它用户:o---Others (外国人)

这些分类不应该是对人,应该是每个人扮演的角色。那这些角色与root、普通用户都有什么关系呢?

上图就是我们文件所对应的拥有者与所属组。那什么是other呢?当其他用户访问我们的一个文件或目录时,Linux会将其用户看作other。 

那一个文件会有拥有者就足够了,为什么还会有所属组呢?

Linux创建所属组就是为了方便管理,就如同微信中拉了一个群聊一样,几个人创建一个所属组以某个用户的用户名命名。但是现在的资源比较丰富,所以所属组已经不经常使用了。而所属组就是将一个人或一群人放入一个组里进行文件权限的共享。

文件权限值的表示方法

a)字符表示方法

文件权限内容与文件权限属性的后九个字符有关,前三个代表拥有者的权限,中间三个代表所属组的权限,最后三个代表other的权限。 

而我们的rwx也可以用二进制的形式进行存储,000代表---,001--x……110代表rw-111代表rwx。这些二进制也可以转换成8进制从0~7。 

 b)8进制数值表示方法

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

其实这些文件的访问权限属性我们都可以进行更改,它们都是可以改变的,只要属于所有者的名下即可改变。修改时我们需要使用一个指令chmod。

chcod指令

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:

R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

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

上面的文件file.txt属性中,拥有者权限:rw-所属组权限:rw-,other权限:r--。现在我们想让拥有者也有运行权限就可以进行一下操作:

 要想删除拥有者的运行权限即可:

要想给拥有者、所属组、other全部提供运行权限即可:

 举一反三,那么删除所有的运行权限只需要将+改为-即可。

那我想将拥有者、所属组、other的全部权限全部增加应该怎么办?

全部操作也有比较快捷的办法:

就是在后面直接加a(-/+) 想要删除或加入的权限即可给所有种类的用户进行权限操作。

但是权限这个东西,我们有这个权限但是不一定能够执行,这时为什么呢?能够访问权限要有两个条件:

1.必须要有可执行的权限

2.必须要有可执行的属性 

如果没有可以执行的属性,即使有可执行的权限也是不能执行的。

就如我们不能在leetcode中进行看电影的行为。

但是root账号是超级账号,当拥有者或所属组中没有root时,但是root还是可以进行访问。所以对于root而言就几乎没有权限,都是开放的!!! 

最后还有一种修改权限的方法,就是利用8进制进行修改。rwx可以用8进制表示为7,那么用三位就可以分别表示三种用户的权限情况。比如:777,就是三种用户都是rwx权限。

我们的需求可以修改二进制然后转为8进制进行改变。

比如拥有者权限:-w-,所属组权限:rwx,other权限:r-x。那么三种用户用二进制表示为010、111、101。转成8进制每位代表一个数为:2、7、5。那合起来就是275。  上图就是我们想要的结果!


以上就是我们本次的全部内容,对大家有帮助的一健三连支持一下博主!!!

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

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

相关文章

IPV6 ND协议--源码解析【根源分析】

ND协议介绍 ND介绍请阅读上一篇文章:IPv6知识 - ND协议【一文通透】11.NDP协议分析与实践_router solicitation报文中不携带source link-layer address-CSDN博客 ND协议定义了5种ICMPv6报文类型,如下表所示: NS/NA报文主要用于地址解析RS/…

使用PyTorch解决多分类问题:构建、训练和评估深度学习模型

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

【学习笔记】RabbitMQ02:交换机,以及结合springboot快速开始

参考资料 RabbitMQ官方网站RabbitMQ官方文档噼咔噼咔-动力节点教程 文章目录 四、RabbitMQ :Exchange 交换机4.1 交换机类型4.2 扇形交换机 Fanout Exchange4.2.1 概念4.2.1 实例:生产者4.2.1.1 添加起步依赖4.2.1.2 配置文件4.2.1.3 JavaBean进行配置4.…

NGF ; -R : Trk NTRK

NTRK基因融合的机制与靶向治疗 - 知乎 【NTRK基因】共识已发布,24款获证,2款NGS产品已布局

开关电源测试解决方案之浪涌电流测试 -纳米软件

浪涌电流是由于开关、断电等引起的突发电流,这种电流会直接影响到设备的寿命和可靠性,因此浪涌电流测试是开关电源测试的一个重要项目。本文将会介绍浪涌电流测试要求以及测试方法。 什么是浪涌电流? 浪涌电流是指电源接通瞬间,流入电源设备…

Python中兔子递归函数的例子

本文将详细介绍Python中兔子递归函数的例子,展示递归函数的基本实现方法及其原理。 一、递归函数的概念 递归函数是指在函数内部调用自身的函数。通过递归函数,可以将复杂问题分解成简单的子问题来解决。 这种过程是有限的,当子问题足够小…

分布式存储系统——ceph

目录 一、分布式存储类型 1、块存储 2、文件存储 3、对象存储 二、ceph概述 1、ceph简介 2、ceph的优势 3、ceph架构 1)RADOS 基础存储系统(Reliab1e,Autonomic,Distributed object store 2)LIBRADOS 基础库 …

Linux 下I/O操作

一、文件IO 文件 IO 是 Linux 系统提供的接口,针对文件和磁盘进行操作,不带缓存机制;标准IO是C 语言函数库里的标准 I/O 模型,在 stdio.h 中定义,通过缓冲区操作文件,带缓存机制。   标准 IO 和文件 IO 常…

论文阅读 Memory Enhanced Global-Local Aggregation for Video Object Detection

Memory Enhanced Global-Local Aggregation for Video Object Detection Abstract 人类如何识别视频中的物体?由于单一帧的质量低下,仅仅利用一帧图像内的信息可能很难让人们在这一帧中识别被遮挡的物体。我们认为人们识别视频中的物体有两个重要线索&…

怎么使用动态代理IP提升网络安全,动态代理IP有哪些好处呢

随着互联网的普及和数字化时代的到来,网络安全问题越来越受到人们的关注。动态代理IP作为网络安全中的一种技术手段,被越来越多的人所采用。本文将介绍动态代理IP的概念、优势以及如何应用它来提升网络安全。 一、动态代理IP的概念 动态代理IP是指使用代…

nginx.4——正向代理和反向代理(七层代理和四层代理)

1、正向代理反向代理 nginx当中有两种代理方式 七层代理(http协议) 四层代理(tcp/udp流量转发) 七层代理 七层代理:代理的是http的请求和响应。 客户端请求代理服务器,由代理服务器转发给客户端http请求。转发到内部服务器(可以单台&#…

Mac OS m1 下安装Gradle4.8.1

1. 下载、解压 1.1 下载地址 https://gradle.org 往下翻 或者选择 任何 你想要的版本 ,点击 binary-only 即可下载 . 1.2 解压到指定目录 2. 配置环境变量 2.1 编辑环境文件 vi ~/.bash_profile #GRADLE相关配置 GRADLE_HOME/Users/zxj/Documents/devSoft/gradle-4.8.1 e…

视频集中存储/视频监控管理平台EasyCVR如何免密登录系统?详细操作如下

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…

【Mac】时间机器频繁提示磁盘没有正常推出

问题描述 有一次在进行时间机器备份的时候总是提示“磁盘没有正常推出”,并且好几次直接导致系统重启… 估计是 MacOS 系统 bug 解决 看了 Vex 一个帖子之后设置了一个硬盘是否休眠就好了,不要勾选让硬盘处于休眠就可以了,在电池选项界面中…

Sonar跨服务扫描Jenkins Job

需求:验收环境新增sonar扫描,(困难点:验收环境jenkins和开发环境sonar不通,验收环境没有办法重新安装Sonar,数据库等服务。 解决方法:验收Jenkins和开发环境jenkins做免密,通过修改验收环境jenk…

基于 nodejs+vue网上考勤系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

VSCode连接代理

VSCode连接代理 首先有代理 然后在设置里搜代理 然后再在windows的设置–>网络–>代理 拼接上就行 最后重启

问题解决:使用Mybatis Plus的Mapper插入达梦数据库报“数据溢出”错误

前言 使用Mybatis Plus的Mapper插入达梦数据库报“数据溢出”错误 文章目录 前言问题描述错误日志输出排查过程最终解决办法 问题描述 在进行批量插入中,抛出异常为数据溢出 插入方法:this.baseMapper.insertBatchSomeColumn()抛出异常:数据…

Hadoop分布式文件系统——HDFS

1.介绍 HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错、高吞吐量等特性,可以部署在低成本的硬件上。 2.HDFS 设计原理 2.1 HDFS 架构 HDFS 遵循主/从架构,由单个 NameNode(NN) 和多个 DataNode(DN) 组成:

C++【命名空间详解】

系列文章目录 本篇文章呢主要说的是C中关于命名空间相关知识点哦~ 文章目录 一、C简单介绍二、详解 1.命名空间2.输入输出总结 一、C简单介绍 前面我们学习的C语言,它是结构化和模块化的语言,适合处理较小规模的程序。那么,对于一些复杂的问…