当前位置: 首页 > news >正文

【Linux权限:系统中的数字锁与安全之门】

1.Linux下的用户

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

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

命令:su [用户名]

功能:切换用户。

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

总结:

  • 普通用户切换成root,需要输入root密码。
  • root回退到普通用户:exit或者ctrl+d(logout)。

  • root账号变成普通,不用认证。

  • 普通用户变成另一个普通用户,需要对方的密码。

su - :以root身份重新登录一次。

su :用户身份切换为root。

如果我们所有人都有root密码,每个人都可以删除用户添加信息,但是总不能排出有新手误删了,此时对数据就会造成不可挽回的影响,所以一般拥有root密码的是Linux管理员。

sudo:对指定的指令进行提权。

普通用户不想切换为root,但是想以root权限执行指令:sudo touch file1.txt,然后输入普通用户的密码。

我们后面再以root权限执行指令:sudo touch file3.txt,我们会发现此次不需要输出普通用户的密码就创建出文件了,这是因为曾经sodu输过密码,并且Linux会短暂的记录用户在一段时间执行过sudo命令,是已经做过认证的,所以后面就不需要再输入密码。

如果我们输入sudo就可以以root的身份执行指定的命令,root的密码是否就毫无意义呢?我们去执行一下sudo ls

如果我们将用户添加到该配置文件中,那用户是否可以执行sudo吗?当然可以,但是该配置文件(白名单)是root文件,我们普通用户无法自己添加该配置文件,要添加该配置文件必须以root的身份添加。所以能够执行sudo的,一定是历史上曾经经过管理员允许的用户,才能执行sudo,我们上面之所以能执行sudo是因为将sudo touch命令添加到该配置文件

2.Linux权限管理

首先了解一个概念,权限一定是限制人的,比如优酷会员,买了会员就可以看一些付费的电视剧。 对应的操作对象,一定要有对应的满足人的需求的属性。比如:优酷就专门看电视剧,csnd专门学习。

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

  • 文件和文件目录的所有者:u---User
  • 文件和文件目录的所有者所在的组的用户:g---Group
  • 其它用户:o---Others 

为什么会存在一个所属组

        假设当张三这个拥有者写了一份非常优秀的代码,他的领导是属于其他普通用户,领导觉得张三的代码非常好,想看一下,于是张三想打开了权限,让其他用户可以看到,但是同为竞争者的李四也是其他普通用户也就能看到,于是张三拥有者就和领导这个普通用户搭建了一个所属组,该组的所属者为张三,将其组内的内容对领导这个普通用户设置可见,只能让领导这个普通用户看到。

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

a) 文件类型
  • d:文件夹 -:普通文件
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件
b)基本权限
  • i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • iv.“—”表示不具有该项权限

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

a)字符表示方法
Linux表示说明Linux表示说明
r--只读-w-仅可写
--x仅可执行rw-可读可写
-wx可写可执行r-w可读可执行
rwx可读可写可执行---无权限
b)8进制数值表示方法 
权限符号(读写执行)八进制二进制
r4100
w2010
x1001
rw6110
rx5101
wx3011
rwx7111
---0000

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

a)chmod

功能:设置文件的访问权限

格式:chmod [参数] 权限 文件名

常用选项:

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

修改权限:chmod ugoa+=rwx FILE

验证有无权限,对比是什么?

当我们没有权限的时候,就不能以该方式访问该文件,直接被拒绝访问。有对应的权限才能做对应的事。对于可执行来说,不一定拥有可执行的权限就可以执行该文件。

当我们去掉拥有者的可执行权限,whb用户就不能执行文件了,可是我们发现所属组拥有可执行权限,而且所属组的用户还是whb用户,此时whb用户以所属组的身份去执行为什么不能执行此文件呢?

这是因为一个用户在去访问这文件的时候,Linux系统默认当前的用户的身份是拥有者,只会去看拥有者的权限,而且Linux系统的这种匹配只会匹配一次,匹配到了拥有者就不能再次匹配到所属组了。

此时拥有者就切换为了gaobo这个用户,但是此时登录的还是whb,此时Linux系统根据当前的用户whb就去匹配到了所属组,从而也就可以执行这个文件了。

当我们切换到gaobo这个普通用户,此时Linux系统又会再次匹配,此时匹配的就是拥有者,此时就没有可执行的权限。        

我们再切换为whb用户,此时我们对file.txt文件删除所有权限

然后我们切换超级用户root,此时root归属于other,root此时依然没有任何权限

上面图片观察到,尽管root没有权限,但是依然能够访问到该文件,说明权限对超级用户root形同虚设。

同时根据8进制数值表示法,我还可以用8进制进行权限修改。

b)chown

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名

我们修改一个文件的权限,将文件的拥有者权限给别人,需要获取这个人的同意吗?很明显,如果你给别人的是一份非常烂的代码,别人肯定不会成为这个文件的拥有者。但是在Linux下我们不能商量,也没办法得到别人的允许,就算得到了别人的允许,我们也给不了拥有者身份,此时只能通过sudo进行指令提权。

同时我们也可以切换成root身份,进行拥有者身份的变化。

c)chgrp

功能:修改文件或目录的所属组

格式:chgrp [参数] 用户组名 文件名

常用选项:-R 递归修改文件或目录的所属组

该指令和上面的chown用法一样,因为我们当前为root,所以可以直接修改。修改拥有者和所属组的同时other也在改变,所以Linux也有修改other身份的指令。

我们可以同时修改拥有者和所属组,用户之间以:分隔-。

d)umask

解释:定制一个文件被创建的时候的默认权限,从起始权限中去掉(不是减法)在umask中出现的权限!

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

格式:umask 权限值

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

验证一下普通用户创建的普通文件权限是664

通过公式:mask & ~umask即可求出实际创建的出来的文件权限

3.file指令

我们可以同时修改拥有者和所属组,用户之间以:分隔-。

第一个字符,表示文件类型。在Windows下,我们同样也具有文件类型,通常是通过后缀名标识,文件类型用来判定文件属于哪一个类别,可以用哪些软件操作。但是Linux的文件类型不通过后缀区分(不代表Linux不用后缀)

我们首先看一下有哪些文件类型

块设备文件 -> 磁盘:支持随机访问

字符设备文件 ->键盘显示器:不支持随机访问

链接文件:类似于Windows下的快捷方式

我们上面删除了链接文件但是可执行程序还在,所以Windows下我们想删除一个软件删除桌面的那个快捷方式不算删除,必须要去删除源文件。

管道文件 -> 传递信息

Linux的文件类型不通过后缀区分。

Linux的文件类型不通过后缀区分,但是不代表Linux指令gcc等其他指令不用后缀。对于Linux文件类型后缀,虽然Linux不通过它识别文件类型,但是我们依然推荐使用后缀去标识文件!因为工具需要,同时后缀也方便用户观看。

功能说明:辨识文件类型。

语法:file [选项] 文件或目录... 

常用选项:

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -z 尝试去解读压缩文件的内容。

使用 sudo分配权限

(1)修改/etc/sudoers 文件分配文件

# chmod 740 /etc/sudoers
# vi /etc/sudoer

格式:接受权限的用户登陆的主机 =(执行命令的用户) 命令

(2)使用 sudo 调用授权的命令

$ sudo –u 用户名 命令

实例:

$ sudo -u root /usr/sbin/useradd u2

4.目录的权限

  • 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
  • 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件属性内容.
  • 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
  • 这些权限对于超级用户root是没有限制的.

于是, 问题来了~~

换句话来讲, 就是只要用户whb具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个root用户是否有这个文件的写权限. 这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉?

这就相当于我李四的房子给你张三住,张三要出差一段时间,让李四不要动他东西,李四自己的房子不能动吗?肯定能动,你张三创建的文件在我李四的目录下,我对我自己的目录有写权限,我自己目录下的文件我自己不能删!!!总结:一个文件能否被删除,并不取决于文件本身,而取决于文件所处的目录的拥有者是否具有写权限。

那我们可以去掉other的w权限吗?很明显,不能,虽然w权限不能让别人删除文件,但是我们自己也写不了文件,我们自己也是普通用户,对于root来说,我们也是other。

为了解决这个不科学的问题, Linux引入了粘滞位的概念

5.粘滞位

粘滞位:给目录中的other设置的一个权限位,具有x权限的意义,同时进一步对目录的权限进行特殊限定。

[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除

6.关于权限的总结

  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限
  • 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

本章结束啦!下章见,拜拜。

相关文章:

【Linux权限:系统中的数字锁与安全之门】

1.Linux下的用户 Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情。超级用户的命令提示符是“#”,普通用户的命令…...

笔记本电脑的麦克风没有声音

笔记本电脑的麦克风没有声音是一个常见的问题,可能是由于以下几个原因导致的: 第一,麦克风没有启用或者被禁用了。在Windows系统中,右键单击任务栏上的音量图标,选择“录音设备”,在弹出窗口中找到麦克风&a…...

20道简单的投资数学逻辑

20道简单的投资数学逻辑 (非常好,强烈推荐,其中第3、第11的案例太经典了,是我反复给金融研究生讲授分析的案例) 1、关于收益率 假如你有100万,收益100%后资产达到200万,如果接下来亏损50%&am…...

【Spring】事务实现原理

在使用事务的时候需要添加EnableTransactionManagement注解来开启事务,Spring事务底层是通过AOP来实现的,所以启用事务后,同样会向容器中注入一个代理对象创建器,AOP使用的是AnnotationAwareAspectJAutoProxyCreator,事…...

人工智能基础_机器学习024_梯度下降进阶_L1正则可视化图形---人工智能工作笔记0064

然后我们就来用代码实现一下L1正则的可视化,我们来看看 首先导入 import numpy as np 数学计算 import matplotlib.pyplot as plt 画图用的 然后我们把L1正则的公式写出来 可以看到L1的正则 其实就是w1和w2的绝对值相加对吧 然后这里我们写一个公式: f(x,y) = |x|+|y| …...

媒体聚焦丨四维图新旗下杰发科技王璐:设计决定芯片质量

编者按:新四化、软件定义汽车使汽车芯片成为了最新的半导体增长极,催生了汽车芯片的数量呈倍速增长,汽车芯片功能越来越复杂,迭代速度也越来越快。汽车芯片厂商从最初的设计开始,就要按照车规级芯片的要求对芯片进行全…...

动态规划基础篇(LeetCode每日一题计划)

爬楼梯 求所有爬楼梯的方案 方法一&#xff1a;f(x)f(x-1)f(x-2) class Solution {public int climbStairs(int n) {int p0,q0,r1;for(int i0;i<n;i){pq;qr;rpq;}return r;} } 方法二&#xff1a;动态规划 class Solution { public:int climbStairs(int n) {int dp[46]…...

智慧商业:探索分布式云技术为企业创造商业价值,减少成本,提升生产力的秘诀!

我们可以试想一下&#xff0c;如果没有云计算&#xff0c;商业将会是什么样子&#xff1f; 对于这个问题的答案&#xff0c;许多人会认为它可能依旧是一个以实体为主行业。 云计算和多云战略的出现为在线购物带来了革命性的变化。 然而&#xff0c;如今多云所固有的复杂性仍然…...

Anaconda安装gdal

安装gdal 安装gdal&#xff0c;真是一波三折哇。pip、conda、c编译了等等&#xff0c;网上各种大佬的解决方法都试了试。咱就是说&#xff0c;都不行&#xff0c;很扯淡。甚至 使用conda install gdal 都显示安装成功了&#xff0c;但是 from osgeo import gdal&#xff1b; i…...

vite基础学习笔记:14.路由跳转(二)携带query参数

说明&#xff1a;自学做的笔记和记录&#xff0c;如有错误请指正 1. 路由跳转&#xff08;携带query参数&#xff09; &#xff08;1&#xff09;第一层路由&#xff08;点击卡片路由跳转至新页面-携带query参数&#xff09; 知识点&#xff1a; query传参对应的是path和qu…...

立体相机标定

相机成像过程中涉及的4个坐标系&#xff1a; 1、世界坐标系&#xff1a;由用户定义的三维世界坐标系&#xff0c;描述物体和相机在真实世界中的位置&#xff0c;原点可以任意选择。 2、相机坐标系&#xff1a;以相机的光心为坐标原点&#xff0c;X轴和Y轴平行于图像坐标系的X轴…...

mixin混合类的接口实现

mixin混合类的接口实现 应用 &#xff1a;CreateModelMixin,ListModelMixin,RetrieveModelMixin,DestroyModelMixin,UpdateModelMixin 简化工程代码。 from rest_framework.generics import GenericAPIView from rest_framework.mixins import CreateModelMixin,ListModelMixi…...

前端小技巧: TS实现EventBus自定义事件

关于EventBus事件总线 事件总线&#xff0c;实现 on, once, emit, off on, once 是注册函数&#xff0c;存储起来emit时找到对应的函数&#xff0c;执行off找到对应的函数&#xff0c;从对象中删除 注意 区分on和onceon绑定的事件可连续执行&#xff0c;除非offonce绑定的函数…...

Django之三板斧的使用,全局配置文件介绍,request对象方法,pycharm链接数据库,Django链接数据库,ORM的增删改查

【1】三板斧(3个方法)的使用 Httpresponse() 括号内写什么字符串&#xff0c;返回的就是什么字符串返回的是字符串 render(request&#xff0c; 静态文件 ) request是固定的静态文件是写在templates文件夹里面的&#xff0c;如&#xff0c;HTML文件 redirect( 重定向的地址 ) 重…...

医学影像系统源码(MRI、CT三维重建)

一、MRI概述 核磁共振成像&#xff08;英语&#xff1a;Nuclear Magnetic Resonance Imaging&#xff0c;简称NMRI&#xff09;&#xff0c;又称自旋成像&#xff08;英语&#xff1a;spin imaging&#xff09;&#xff0c;也称磁共振成像&#xff08;Magnetic Resonance Imag…...

【uniapp】仿微信通讯录列表实现

效果图 代码实现 <view class"main-container"><!-- 成员列表 --><scroll-viewclass"member-list":style"computedHeight":scroll-y"true":enable-back-to-top"true":scroll-with-animation"true"…...

[MT8766][Android12] 增加应用安装白名单或者黑名单

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: MT8766 版本: Android 12 kernel: msm-4.19 问题描述 在项目开发的时候&#xff0c;经常有一些客户&#xff0c;要求系统安装应用的时候需要进行验签&#xff1b;也就是系统默认不允许任何应用安装&#…...

游戏公司数据分析师必备知识(持续补充中...)

1.如何撰写专题报告&#xff1f; ①原则 只有一个主题&#xff1a;即使不讲ppt&#xff0c;业务方也能看得懂行文通俗简单易懂&#xff1a;学习产品经理平常是如何写报告的明确的数据结论和落地项先行&#xff1a;跟业务方多沟通数据结论&#xff0c;让他们给出落地项 ②结构…...

intellj 开发软件插件

IDEA&#xff1a; .ignore Alibaba Java Coding Guidelines(XenoAmess TPM) Chinese (Simplified) Language Pack / 中文语言包 CodeGlance Pro Gitee Grep Console Json Formatter Maven Helper Nyan Progress Bar One Dark theme Python Rainbow Brackets Resource Bundle Ed…...

leetCode 493 翻转对

给定一个数组 nums &#xff0c;如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。你需要返回给定数组中的重要翻转对的数量。 未完待续~...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...