【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进制数值表示方法
权限符号(读写执行) | 八进制 | 二进制 |
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 5 | 101 |
wx | 3 | 011 |
rwx | 7 | 111 |
--- | 0 | 000 |
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每日一题计划)
爬楼梯 求所有爬楼梯的方案 方法一: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;} } 方法二:动态规划 class Solution { public:int climbStairs(int n) {int dp[46]…...
智慧商业:探索分布式云技术为企业创造商业价值,减少成本,提升生产力的秘诀!
我们可以试想一下,如果没有云计算,商业将会是什么样子? 对于这个问题的答案,许多人会认为它可能依旧是一个以实体为主行业。 云计算和多云战略的出现为在线购物带来了革命性的变化。 然而,如今多云所固有的复杂性仍然…...
Anaconda安装gdal
安装gdal 安装gdal,真是一波三折哇。pip、conda、c编译了等等,网上各种大佬的解决方法都试了试。咱就是说,都不行,很扯淡。甚至 使用conda install gdal 都显示安装成功了,但是 from osgeo import gdal; i…...

vite基础学习笔记:14.路由跳转(二)携带query参数
说明:自学做的笔记和记录,如有错误请指正 1. 路由跳转(携带query参数) (1)第一层路由(点击卡片路由跳转至新页面-携带query参数) 知识点: query传参对应的是path和qu…...

立体相机标定
相机成像过程中涉及的4个坐标系: 1、世界坐标系:由用户定义的三维世界坐标系,描述物体和相机在真实世界中的位置,原点可以任意选择。 2、相机坐标系:以相机的光心为坐标原点,X轴和Y轴平行于图像坐标系的X轴…...
mixin混合类的接口实现
mixin混合类的接口实现 应用 :CreateModelMixin,ListModelMixin,RetrieveModelMixin,DestroyModelMixin,UpdateModelMixin 简化工程代码。 from rest_framework.generics import GenericAPIView from rest_framework.mixins import CreateModelMixin,ListModelMixi…...
前端小技巧: TS实现EventBus自定义事件
关于EventBus事件总线 事件总线,实现 on, once, emit, off on, once 是注册函数,存储起来emit时找到对应的函数,执行off找到对应的函数,从对象中删除 注意 区分on和onceon绑定的事件可连续执行,除非offonce绑定的函数…...

Django之三板斧的使用,全局配置文件介绍,request对象方法,pycharm链接数据库,Django链接数据库,ORM的增删改查
【1】三板斧(3个方法)的使用 Httpresponse() 括号内写什么字符串,返回的就是什么字符串返回的是字符串 render(request, 静态文件 ) request是固定的静态文件是写在templates文件夹里面的,如,HTML文件 redirect( 重定向的地址 ) 重…...

医学影像系统源码(MRI、CT三维重建)
一、MRI概述 核磁共振成像(英语:Nuclear Magnetic Resonance Imaging,简称NMRI),又称自旋成像(英语:spin imaging),也称磁共振成像(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 问题描述 在项目开发的时候,经常有一些客户,要求系统安装应用的时候需要进行验签;也就是系统默认不允许任何应用安装&#…...

游戏公司数据分析师必备知识(持续补充中...)
1.如何撰写专题报告? ①原则 只有一个主题:即使不讲ppt,业务方也能看得懂行文通俗简单易懂:学习产品经理平常是如何写报告的明确的数据结论和落地项先行:跟业务方多沟通数据结论,让他们给出落地项 ②结构…...
intellj 开发软件插件
IDEA: .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 ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。你需要返回给定数组中的重要翻转对的数量。 未完待续~...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...