“权限之舞:Linux安全之道”
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。 上图就是我们想要的结果!
以上就是我们本次的全部内容,对大家有帮助的一健三连支持一下博主!!!
相关文章:

“权限之舞:Linux安全之道”
W...Y的主页😊 代码仓库分享💕 🍔前言: 在之前的Linux博客中,我们学习了基础的Linux指令,具体可以订阅一下博主的Linux专栏学习。当我们想进行递归删除文件时等等许多操作中,只有在root账号中…...

Visual Studio Code官网下载、vscode下载很慢、vscode下载不了 解决方案
前言 开发界的小伙伴们对于Visual Studio Code开发环境来可以说非常熟悉了,但由于在Visual Studio Code官网的下载速度非常的慢,即便开了代理也是一样的很慢、甚至下载被中断,几乎不能下载。 解决方案 1、在Web浏览器上打开vscode官网&#…...

URL、域名和网址的区别
网址、域名和URL 都用于描述在互联网上定位资源的标识符,通常它们可以互换使用,但严格来说有区别: URL(Uniform Resource Locator):URL是统一资源定位符的缩写,它是一个包含地址信息的完整字符串…...

【oceanbase】centos7/kylinv10部署oceanbase(x86版本)
1. 修改系统 vim /etc/sysctl.conf fs.file-max 102400 net.nf_conntrack_max 1024000 net.netfilter.nf_conntrack_max 1024000 2. 修改 ulimit 的 open file,系统默认的 ulimit 对文件打开数量的限制是 1024 vim /etc/security/limits.conf # 加入以下…...

论文导读 | 支持事务与图分析的图存储系统
事务系统保证了系统的数据一致性,确保事务更新的原子性或是不同事务之间的数据隔离性等在多线程并发环境下所必不可少的ACID特性。而在今天快速变化的商业环境下,诸如物流和供应链,金融风控和欺诈检测等场景都需要图分析系统提供对数据动态更…...

Vue3最佳实践 第八章 ESLint 与 测试 ( ESLint )
ESLint 在所有的JavaScript 项目开发中我们都会接触到 ESLint 这个词,ESLint 是个什么样的组件会给为项目做些什么吗?ESLint 是一种检查语法错误以及代码是否按照预定规则编写的工具。ESLint 可以帮助开发者发现代码中潜在的错误。在Vue项目中Eslint一…...

【C++】命名空间和using namespace std的注意事项
💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...

修改51单片机中数组元素的值
在8051单片机中,code关键字用于将数据存储在ROM中。由于ROM是只读的,所以在运行时无法直接修改seven_seg数组中的值。 如果您想在main函数中修改seven_seg[1]的值为0xc0,您可以将seven_seg数组定义为可写的变量,而不是存储在ROM中…...

Ruby和面向对象技术
Ruby和许多极为流行的编程语言都是面向对象的。多数的面向对象编程语言,每个对象都是一个样例或者既定类的实例以及独立对象的行为。 一、创建一个通用对象 创建一个通用对象 obj Object.new定义通用对象的行为 def obj.talk puts "I am an object"p…...

C++11常用新特性——可变参数模板
可变参数模板 C11中,可变参数模板是一个非常强大的特性,它允许函数和类模板接受任意数量和类型的参数,这为类型的安全编程提供了更广泛的灵活性。下面我将详细介绍这一新特性。 基础概念: 可变参数模板允许你传递多个类型和数量…...

SpringCloud-Seata
一、介绍 (1)实现分布式事务 (2)解决Spring只支持单机事务 (3)事务ID TC(事务协调者) TM(事务管理者) RM(资源管理者)...

java击球小游戏运行代码
创建一个图形化的小游戏通常需要使用Java图形库,例如Swing或JavaFX。下面是一个使用JavaFX创建的简单的图形化小游戏示例,其中一个小球会在窗口内移动,你需要点击小球以增加得分: import javafx.application.Application; import…...

Hadoop面试题+详解
20道面试题及详细解答! 1.说说什么是结构化数据、非结构化数据和半结构化数据 结构化数据、非结构化数据和半结构化数据是根据数据的组织结构和格式来划分的不同类型的数据。 结构化数据:结构化数据是按照预定义的数据模型进行组织和存储的数据。它通常…...

PDF编辑阅读:Acrobat Pro DC 2021中文稳定版
Acrobat Pro DC 2021是一款专业的PDF编辑和阅读软件。它可以创建、编辑、组合、签署和分享PDF文件,提供了许多强大的功能,如PDF文件转换、OCR识别、PDF文件合并、加密和解密等等。Acrobat Pro DC 2021的界面简单直观,易于使用,而且…...

单词规律(C++解法)
题目 给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 示例1: 输入: pattern "abba", s …...

MySQL 主从复制原理
文章目录 1.主从复制方式1.1 异步复制1.2 半同步复制1.3 全同步复制 2.主从复制原理3.主从复制时推还是拉?参考文献 主从复制是 MySQL 高可用(备份)和高性能(读写分离)的基础,有了这个基础,MySQ…...

构建嵌入式Linux rootfs根文件系统
创建根文件系统涉及选择系统运行所需的文件。在本节中,我们将介绍如何构建压缩的根文件系统。不太常见的选择是在直接作为 root 挂载的本地驱动器上构建未压缩的文件系统。 转载请注明来源,谢谢。构建嵌入式Linux rootfs根文件系统-CSDN博客创建根文件系…...

高速电路设计----第三章
一、数字信号需要上拉的情况 1、 一般信号上拉接多大的电阻要看对于芯片的电流要求。看芯片datasheet的I(BHLO)和I(BHHO)两个参数。平时的话: 3.3V的上拉为1K~3.3k即可 5V的上拉电阻为4.7K到10K即可。 2、数字信号的逻辑控制&a…...

【微信小程序】6天精准入门(第4天:自定义组件及案例界面)附源码
一、自定义组件 1、介绍 从小程序基础库版本 1.6.3 开始,小程序支持简洁的组件化编程。所有自定义组件相关特性都需要基础库版本 1.6.3 或更高。 开发者可以将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用;也可以将复杂的页…...

pragma once与ifndef的区别
概要 代码编译过程中,为了防止同一份代码被重复引用,通常有两种实现方式 方式一 #pragma once 方式二 #ifndef _TEST_H_ #define _TEST_H_ #endif // !TEST_H 通常情况下,使用上述两种方式中的任意一种都是可以的。最近工作中,代…...

52单片机独立键盘控制数码管计数
前言 使用52单片机实现独立键盘控制数码管计数 代码 #include<reg52.h> #define uchar unsigned char #define uint unsigned intsbit key2 P3^4; sbit key3 P3^5; sbit key4 P3^6; sbit key5 P3^7;char code smg[] {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x…...

完美解决 在将最终稿件上传到 IEEE PDF eXpress进行格式检查是出现“font not embedded“的问题 (不会出现自动压缩图像的现象)
最近中了一篇IEEE的论文,在校稿阶段,final paper是需要通过IEEE PDF eXpress网站的格式检查,然后出现一下问题: Errors: Font TimesNewRomanPS-BoldMT, TimesNewRomanPS-ItalicMT, TimesNewRomanPSMT is not embedded 用人话说就…...

零基础学习CSS
01-CSS初体验 层叠样式表 (Cascading Style Sheets,缩写为 CSS),是一种 样式表 语言,用来描述 HTML 文档的呈现(美化内容)。 书写位置:title 标签下方添加 style 双标签,style 标签…...

基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(五)FineBI可视化
文章目录 22:FineBI配置数据集23:FineBI构建报表24:FineBI实时配置测试附录二:离线消费者完整代码 22:FineBI配置数据集 目标:实现FineBI访问MySQL结果数据集的配置 实施 安装FineBI 参考《FineBI Windows…...

Python逆向爬虫案例: 某网站AES逆向解密
前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 环境使用: Python 3.8 Pycharm 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备好了࿰…...

ONNX runtime本地终端部署
1、class_index.csv文件: ID,English,Chinese 0,A,你 1,B,我 2,C,他 3,D,她2、classification.onnx 3、单张图像处理代码如下: import onnxruntime import torch import torch.nn.functional as F import pandas as pd from PIL import Image from tor…...

Linux性能优化--性能工具:特定进程CPU
4.0 概述 在用系统级性能工具找出是哪个进程降低了系统速度之后,你需要用特定进程性能工具来发现这个进程的行为。对此,Linux提供了丰富的工具用于追踪一个进程和应用程序性能的重要统计信息。 阅读本章后,你将能够: 确定应用程…...

技术人员转岗产品经理,有优势吗?
产品经理是一个非技术型的岗位,但是懂一些技术相关的知识会更好的和技术部门沟通,能更好的从技术部门的角度理解需求的可行性。所以这么说来,技术转产品经理相对来说更加有优势。 任何事情不可能都是只有好处没有坏处的,同样的&a…...

使用IDEA2022.1创建Maven工程出现卡死问题
使用IDEA创建Maven工程出现卡死问题,这个是一个bug 这里是别人和官方提供这个bug,大家可以参考一下 话不多说,上教程 解决方案: 方案1:更新idea版本 方案2:关闭工程,再新建,看图...

Nuttx Syscall
在Nuttx系统中,mksyscall工具用于根据syscall/syscall.csv文件生成供用户调用的接口和内核中对应的接口。具体来说,mksyscall -p system.csv生成供用户调用的接口,而mksyscall -s system.csv生成内核中调用的接口。 在syscall/syscall.csv文…...