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

【Linux学习笔记】权限

  • 1. 普通用户和root用户权限之间的切换
  • 2. 权限的三个w
    • 2.1. 什么是权限(what)
      • 2.1.1. 用户角色
      • 2.1.2. 文件属性
    • 2.2. 怎么操作权限呢?(how)
      • 2.2.1. ugo+-rwx方案
      • 2.2.2. 八进制方案
      • 2.2.3. 文件权限的初始模样
      • 2.2.4. 进入一个目录,需要什么权限呢?
    • 2.3. 为什么要有权限呢?(why)
  • 3. 粘滞位

1. 普通用户和root用户权限之间的切换

假设我现在是root用户,我想切换到普通用户怎么办?

  • 输入 su - 普通用户名

img

普通用户切换到root用户

  • 输入 su - 或者 su

img

2. 权限的三个w

2.1. 什么是权限(what)

举几个生活中的例子

  1. 手机app上都有会员与非会员的角色身份,那么会员是可以看VIP电影和普通电影的,而非会员只能看普通电影,所以权限到目前为止可以被解释为角色身份的不同。
  2. 每一种手机app都有着相应的功能,例如qq音乐是用来听歌的,优酷视频是用来看视频的,但你不能说qq音乐是用来看视频的,优酷视频是用来听音乐的。或许我这样讲的不太对,那么举个别扭的例子,一张桌子,这张桌子是不是你的,这是一种权限,而这张桌子能不能被吃的,这也是一种权限。
  3. 总结一句话,权限就是“可不可以做” 以及 “可以被谁做”。

那么Linux系统的文件权限也是如此,权限主要就是“用户角色” + 文件属性。

2.1.1. 用户角色

Linux中用户角色分为三种。

  1. 拥有者(owner)
  2. 所属组(group)
  3. 其他人(other)

如何查看一个文件的用户角色呢?下面是示例:

img

其中文件属性里面可以查看用户角色。

img

为什么Linux会有所属组这种用户角色呢?用个例子来阐述下:

有这么一家公司,它允许一个项目可以被2个组同时去做(赛马机制),但是只有1台Linux机器。如果没有所属组的用户角色,那么A组可以看B组的代码,B组可以看A组的代码,这样就会很乱。有了所属组,A组只能看A组的代码,B组只能看B组的代码,防止了恶意抄袭等情况的发生。

2.1.2. 文件属性

下面通过一条指令来看看文件的属性:

img

下面来看前10个字符的具体代表意义:

img

drwxrwxr-x

  1. 10个字符中的第一个字符代表的是文件类型

Linux中文件类型分别有如下几种:

  1. - : 普通文件(源代码,库文件,可执行程序,文档压缩包…)
  2. d :目录文件
  3. c : 字符设备文件(键盘,显示器)
  4. b : 块设备
  5. l : 链接文件
  6. p : 管道文件
  7. s : socket文件

其中可以通过file命令来查看文件类型!

**在Linux系统中是不以文件命名的后缀来表示文件的!**也就是说即使你是txt的后缀,在Linux系统中也是可以直接像exe文件那样执行的。但是,只是Linux系统是这样,对于Linux系统中的工具,例如gcc也还是认文件的后缀的。

  1. 剩下的9个字符

先来说一下Linux中文件的权限,Linux中的文件共有三个权限

  • r(读权限)
  • w(写权限)
  • x(执行)

为了方便记忆,r就是read,w就是write,x就是execute

img

其中 - 代表的就是没有,其他相应字符都对应上面的权限。

对于上面的指令来说,我现在的这个文件

  • 对于拥有者(owner)是可读可写可执行
  • 对于所属组(group)是可读可写可执行
  • 对于其他人(other)是可读不可泄可执行

2.2. 怎么操作权限呢?(how)

2.2.1. ugo±rwx方案

上面说了在Linux中,文件权限就是 用户角色 + 文件属性。

那么操作权限的方向自然就是两个方向了,一个是用户角色,一个是文件属性。

  1. 操作文件属性

命令:chmod _ 用户角色_(+/-)_文件权限 _ 文件名(这里的下划线代表的是空格)

其中用户角色用的是简称:

  • u:拥有者(owner)
  • g:所属组(group)
  • o:其他人(other)

其中 + 符号代表的是加权限, - 符号代表的是减权限。

文件权限也是用的简称:

  • r:读权限(read)
  • w:写权限(write)
  • x:执行(execute)

功能:使用命令后可以增加或者减少相应的权限。

示范:

img

可以一次更改单个用户角色的单个权限,多个权限,也可以更改多个用户角色的单个权限,多个权限。

示范:

img

这里就不展示权限的示范了,有兴趣可以按照上面的叙述自行操作。下面介绍一种操作所有用户角色的命令。

img

这里会有一个疑问,下面直接看例子

img

其中在文件权限中,root是不受权限的约束的,即使一个文件的拥有者不是root,root也可以读写执行。即使一个文件没有读写执行权限,root照样可以读写执行。下面来看示例:

img

  1. 更改用户角色

命令:chown/chgrp_你想要变更的用户名_文件名(下划线代表空格)

功能:chown 可以 将拥有者改为你想要变更的用户,chgrp 可以将所属组改为你想要变更的用户。

示范:

imgimg

我想拥有者和所属组一起更改怎么操作?下面看示范:

img

我这里使用的是root角色,如果是普通用户想把文件给其他用户,要用到sudo指令。

  • 疑问来了! 用户角色有3个,分别是拥有者(owner),所属组(group),其他人(other),但为什么没有修改其他人这个用户角色的命令呢?

在文件权限中,拥有者肯定是一个具体的人,所属组也是一个具体的人,如果你的用户角色都匹配不上拥有者和所属组,那么就说明你是其他人(other)。那这样其他人的数量是很大,这样的情况没必要更改了。

2.2.2. 八进制方案

除了上面的ugo±rwx方案,这里介绍一种更简单的八进制方案。这里的八进制方案需要对进制有一定的了解,如果读者没有这方面的知识,可以先去了解进制。

其实一张图就能明白:

img

指令的示范:

img

2.2.3. 文件权限的初始模样

一个刚被创建的文件的文件权限原来的样子是什么样的呢?

img

提问:为什么文件权限的起始模样会这样的呢?

在Linux中规定,目录文件的起始权限是777,普通文件的其实权限是666。也就是说

  1. 目录文件的起始权限是 111 111 111,分别对应的是拥有者的rwx权限,所属组的rwx权限,其他人的rwx权限
  2. 普通文件的起始权限是 110 110 110,分别对应的是拥有者的rw权限,所属组的rw权限,其他人的rw权限。

但我们新建的文件中的文件权限根本不是上面规定的样子,而是下面这个样子。

  1. 目录文件的起始权限是 775,对应八进制方式是 111 111 101
  2. 普通文件的起始权限是 664,对应八进制方式是 110 110 100

原来在Linux中,有个权限掩码umask,它帮我们规定了一个文件的起始权限。

umask的初始值是0002,第一位可以不用管,后面三位对应的是八进制方案。umask规定:凡是在umask中出现的权限,都必须在起始权限中去掉!!!

0 000 000 010 这个初始值,对应的就是去掉其他人的写权限。可以通过修改umask的值来确定你新建的文件的起始权限。

例如:我把umask设置为 0000

img

那么最终权限是怎么确定的呢?

答案是: 最终权限 = 起始权限 & (~umask)

例如:我把umask设置为 0032

img

img

通过结果比对上面显示的文件权限,确实如此。

那么为什么要把umask取反呢? 是因为umask有的权限,在文件权限上都不要,那么取反之后,再和文件权限相与自然就是把不要的权限剔除了。

2.2.4. 进入一个目录,需要什么权限呢?

试想一下,如果要进入一个目录需要什么权限呢? 读权限? 写权限? 还是执行权限?

直接更改权限看一下:

  1. 更改读权限

img

img

  1. 更改写权限

img

img

  1. 更改执行权限

img

所以进入一个目录文件,需要的权限就是执行权限。

2.3. 为什么要有权限呢?(why)

这个问题,一句话就是便于我们系统的安全管理。

3. 粘滞位

粘滞位是目录权限的一种特殊情况。简单来说就是在一个公共目录下,防止其他用户之间的相互删除。

root的根目录下有一个目录就是带有粘滞位的。

img

具体是什么个情况呢? 下面听我娓娓道来。

  1. 在root的根目录下创建一个权限为777的目录

img

  1. 对于其他人来说,这个目录的权限是rwx,可写可读可执行。现在我有两个用户,pdx1和pdx2来做例子。

img

同样的道理,如果切换用户pdx2,对于pdx1的文件也是如此。

img

那么这个公共目录就很危险了。假如pdx1不爽pdx2,但是两个人又是同事,有些文件就是要放在公共目录下,两人互相之间是看不了文件的,却可以互相删除…

  • 那么此时粘滞位就发挥作用了。

命令 : chmod_+t_目录名

功能:给该目录加上粘滞位

示范:

img

注意,mytmp文件的拥有者是谁就由谁来执行这个命令,否则会被拒绝!

img

总结:粘滞位其实就是目录权限的一种特殊情况,是为了防止用户之间的误操作或者恶意操作。

相关文章:

【Linux学习笔记】权限

1. 普通用户和root用户权限之间的切换2. 权限的三个w2.1. 什么是权限(what)2.1.1. 用户角色2.1.2. 文件属性 2.2. 怎么操作权限呢?(how)2.2.1. ugo-rwx方案2.2.2. 八进制方案2.2.3. 文件权限的初始模样2.2.4. 进入一个…...

Aspose转pdf乱码问题

一、问题描述 ​ 在centos服务器使用aspose.word转换word文件为pdf的时候显示中文乱码(如图),但是在win服务器上使用可以正常转换 二、问题原因 由于linux服务器缺少对应的字库导致文件转换出现乱码的 三、解决方式 1.将window中字体(c:\windows\fonts)放到linux…...

table中的td内部的元素不能与td等高的问题

解决该问题的办法: td标签内部的元素使用table布局&#xff0c;但是需要注意的是td必须设置高度&#xff0c;高度为任意值都可以&#xff0c;虽然设置了高度&#xff0c;但是td依然会被内部内容的高度撑开 <template><table><tr><td><div class&q…...

Layui + Flask | 实现数据表格修改(案例篇)(09)

此案例内容比较多,建议滑到最后点击阅读原文,阅读体验更佳。后续也会录制案例视频,将在本周内上传到同名的 b 站账号。 接下来演示用 flask + layui 搭建一个学员信息管理的案例 这个案例将会利用 flask 做后端,layui table 组件做前端,基于 restful api 完成一个学员信息…...

BCC源码编译和安装

接前一篇文章&#xff1a;BCC源码下载 1. 进入源码根目录 进入到BCC源码根目录。命令及结果如下&#xff1a; $ cd bcc ~/eBPF/BCC/bcc$ ls cmake CONTRIBUTING-SCRIPTS.md docs images libbpf-tools man scripts src CMakeLists.txt …...

linux上gitlab备份与还原

三 Gitlab备份 1.gitlab安装 1.1 添加镜像地址 添加镜像地址的目的是为了提高国内用户软件下载的速度&#xff0c;编辑(新建)文件gitlab-ce.repo&#xff0c;指令&#xff1a; vi /etc/yum.repos.d/gitlab-ce.repo复制 输入&#xff1a; [gitlab-ce] namegitlab-ce # 清华…...

【精华】具身智能:人工智能的下一个浪潮

从符号主义到联结主义&#xff0c;智能体与真实世界的交互得到日益重视。上世纪五十年代的达特茅斯会议之后的一段时期内&#xff0c;对人工智能的研究主要限于符号处理范式&#xff08;符号主义&#xff09;。符号主义的局限性很快在实际应用中暴露出来&#xff0c;并催动了联…...

【线性回归、岭回归、Lasso回归分别预测患者糖尿病病情】数据挖掘实验一

Ⅰ、项目任务要求 任务描述&#xff1a;将“diabetes”糖尿病患者数据集划分为训练集和测试集&#xff0c;利用训练集分别结合线性回归、岭回归、Lasso回归建立预测模型&#xff0c;再利用测试集来预测糖尿病患者病情并验证预测模型的拟合能力。具体任务要求如下&#xff1a; …...

037:vue项目监听页面变化,动态设置iframe元素高度

第037个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…...

探索前端生成二维码技术:简单实用的实现方式

引言 随着智能手机的普及&#xff0c;二维码已经成为了现代生活中不可或缺的一部分。在许多场景下&#xff0c;我们都需要将某些信息或链接以二维码的形式展示出来。本文将介绍一种简单实用的前端生成二维码的技术&#xff0c;并给出具体的代码示例。 二维码生成原理 首先&a…...

python装13的一些写法

一些当你离职后&#xff0c;让老板觉拍大腿的代码 1. any(** in ** for ** in **) 判断某个集合元素&#xff0c;是否包含某个/某些元素 代码&#xff1a; if __name__ __main__:# 判断 list1 中是否包含某个/某些元素list1 [1,2,3,4]a any(x in [5,4] for x in list1) 输…...

黑马JVM总结(十八)

&#xff08;1&#xff09;G1_FullGC的概念辨析 SerialGC&#xff1a;串行的&#xff0c;ParallelGC&#xff1a;并行的 &#xff0c;CMS和G1都是并发的 这几种垃圾回收器的新生代回收机制时相同的&#xff0c;SerialGC和ParalledGC&#xff1a;老年代内存不足触发的叫FullGC…...

Android调用相机拍照,展示拍摄的图片

调用相机&#xff08;隐式调用&#xff09; //自定义一个请求码 这里我设为10010int TAKE_PHOTO_REQUEST 10010;int RESULT_CANCELED 0;//定义取消码//触发监听&#xff0c;调用相机image_camera.setOnClickListener(new View.OnClickListener() {Overridepublic void onCli…...

企业如何找媒体发稿能收录且不被拒稿,媒介盒子无偿分享

媒平台像头条、百家号、微信、微博、搜狐等平台&#xff0c;都支持全自助发稿&#xff0c;拥有庞大的用户群体。也正是因为这些平台的发展&#xff0c;衍生出了一大批自媒体KOL&#xff0c;影响力与传统媒体不相上下甚至更胜。 媒体宣发是企业营销的必要途径之一。软文是成本低…...

利用cms主题构造木马(CVE-2022-26965)

简介 CVE-2022-26965是Pluck CMS 4.7.16版本存在一个远程shell上传执行漏洞。 攻击者可利用此漏洞通过构造恶意的主题包进行上传并执行&#xff0c;未经授权访问服务器&#xff0c;造成潜在的安全隐患。 过程 1.打开环境&#xff0c;查看源码&#xff0c;发现login.php 2.进…...

【MTK】【WFD】手机投屏到投影仪不显示画面

问题分析: 在投屏过程中,有时候会出现WFD sink端回复的video 格式表不正确,sink表示是支持VESA(3fffffff),但是当手机根据协商结果得到最优分辨率并发送给sink端时,sink端看上去没有正常播放,其实实际上应该是不支持的。 比如我们这个问题就是CES表中的0001ffff,最大…...

多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出

多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出 目录 多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向…...

scrapyd-完整细节

安装scrapyd服务 pip install scrapyd 安装scrapyd客户端 pip install scrapyd-client 安装好以后重新开启cmd输入命令 scrapyd 出现以下结果代表安装成功 打开浏览器输入网址&#xff0c;即可打开界面客户端 http://127.0.0.1:6800/ 回车后显示一下ok内容代表部署成功 回到服…...

【iOS逆向与安全】插件开发之某音App直播间自动发666

1.目标 由于看直播的时候主播叫我发 666&#xff0c;支持他&#xff0c;我肯定支持他呀&#xff0c;就一直发&#xff0c;可是后来发现太浪费时间了&#xff0c;能不能做一个直播间自动发 666 呢&#xff1f;于是就花了几分钟做了一个。 2.操作环境 越狱iPhone一台 frida ma…...

AI Studio星河社区生产力实践:基于文心一言快速搭建知识库问答

还在寻找基于文心一言搭建本地知识库问答的方案吗&#xff1f;AI Studio星河社区带你实战演练&#xff08;支持私有化部署&#xff09;&#xff01; 相信对于大语言模型&#xff08;LLM&#xff09;有所涉猎的朋友&#xff0c;对于“老网红”知识库问答不会陌生。自从大模型爆…...

http1和http2的主要区别

主要有四个方面&#xff1a; 二进制分帧多路复用服务器主动推送头部压缩 将前两点结合来说&#xff0c;首先 二进制分帧 帧&#xff1a;HTTP/2 数据通信的最小单位&#xff1b; 消息&#xff1a;HTTP/2 中&#xff0c;例如在请求和响应等操作中&#xff0c;消息由一个或多个…...

一文了解水雨情在线监测站的优势

随着全球气候变化的加剧&#xff0c;水雨情的监测变得越来越重要。水雨情监测站作为现代环境监测系统的重要组成部分&#xff0c;其优势在实现环境智能监控方面得到了充分体现。 实时监测&#xff0c;数据准确 水雨情监测站通过先进的技术设备和智能传感器&#xff0c;能够实时…...

windows11中安装curl

windows11中安装curl 1.下载curl curl 下载地址&#xff1a;curl 2.安装curl 2.1.解压下载的压缩包 解压文件到 C:\Program Files\curl-8.3.0_1-win64-mingw 目录 2.2.配置环境变量 WINS 可打开搜索栏&#xff0c;输入“编辑系统环境变量” 并按回车。 3.可能遇到的问题 3…...

小谈设计模式(5)—开放封闭原则

小谈设计模式&#xff08;5&#xff09;—开放封闭原则 专栏介绍专栏地址专栏介绍 开放封闭原则核心思想关键词概括扩展封闭 解释抽象和接口多态 代码示例代码解释 优缺点优点可扩展性可维护性可复用性高内聚低耦合 缺点抽象设计的复杂性需要预留扩展点可能引入过度设计 总结 专…...

计算机视觉与深度学习-全连接神经网络-训练过程-欠拟合、过拟合和Dropout- [北邮鲁鹏]

目录标题 机器学习的根本问题过拟合overfitting泛化能力差。应对过拟合最优方案次优方案调节模型大小约束模型权重&#xff0c;即权重正则化(常用的有L1、L2正则化)L1 正则化L2 正则化对异常值的敏感性随机失活(Dropout)随机失活的问题 欠拟合 机器学习的根本问题 机器学习的根…...

SwiftUI Swift iOS iPadOS 实现更改 App 图标

Xcode: 14.3.1 更改 App 图标 淘宝&#xff0c;支付宝&#xff0c;有道翻译有时候会随着运营活动去调整图标&#xff0c;比如 双 11。&#xff08;这个很简单&#xff0c;替换一下 AppIcon 就可以了&#xff09;Github App 提供了多套图标可以修改。&#xff08;需要配置 &…...

Java————List

一 、顺序表和链表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c; 常见的线性表&#xff1a;顺序表、链表、栈、队列… 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直…...

uniapp 触底加载

方式一 onReachBottomDistance 缺点&#xff1a;需要整个页面滑动&#xff0c;局部滑动触发不了 { // pages.json // 路由下增加 onReachBottomDistance "path": "detailed/detailed","style": {"navigationBarTitleText": "收…...

大模型赛道如何实现华丽的弯道超车

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前学习C/C、算法、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&…...

CAN总线物理层

本文的目的并不是为了介绍或普及CAN总线相关知识,而是为了了解CAN总线,进而为CAN通信一致性测试做知识储备。 CAN,控制器局域网,全称:Controller Area Network。1986年,由德国Bosch公司为汽车开发的网络技术,主要用于汽车的监测与控制,目的为适应汽车“减少线束的数量…...

html5 mysql 网站开发/网络推广公司方案

嵌入式数据库SQLite的编译、安装和使用下文介绍的内容都是基于 RedHat Linux 9.0 平台的。引言&#xff1a;sqlite简介sqlite是嵌入式SQL数据库引擎SQLite(SQLite Embeddable SQL Database Engine)的一个扩展。SQLite是一个实现嵌入式SQL数据库引擎小型C语言库(C library)&…...

商城网站哪个公司做的好处/民生热点新闻

过去&#xff0c;我们的电脑只限于一个操作系统&#xff0c;如果我们不想从头开始安装另一个操作系统(冒着丢失我们所有宝贵数据的风险)&#xff0c;那么我们无能为力。由于资金限制或物理空间限制&#xff0c;我们并非所有人都能买得起多台电脑&#xff0c;在这种情况下&#…...

宿州企业网站建设/seo岗位职责

前者使用property的点操作符&#xff0c;也就相当于调用了abc对应的set method&#xff0c;和这句是一样的&#xff1a;[self setAbc:nil];而后者没有通过property&#xff0c;直接访问了成员变量&#xff0c;调用了它的release方法。对于set method来说&#xff0c;用synthesi…...

网站怎么建设?/怎么推广网站链接

为什么80%的码农都做不了架构师&#xff1f;>>> 如果你的Linux服务器突然负载暴增&#xff0c;告警短信快发爆你的手机&#xff0c;如何在最短时间内找出Linux性能问题所在&#xff1f;来看Netflix性能工程团队的这篇博文&#xff0c;看它们通过十条命令在一分钟内…...

好的培训网站模板/郑州seo网站管理

我想告诉你Android开发你还在用JAVA吗&#xff1f;现在开始使用新的编程语言了&#xff0c;自从Kotlin成为谷歌官方语言后&#xff0c;你有没有心动呢&#xff1f; 我想告诉你一个名为Kotlin的新编程语言并且阐述为什么你应该考虑下一个项目中使用它。我以前非常喜欢使用JAVA,但…...

网站信息内容建设管理/网页设计模板网站

在这里处理一点上传脚本.我正在尝试检查上传的图像是否真的是图像,而不仅仅是重命名的PHP文件.发布脚本后,我可以打印数组foreach ($_FILES[images][name] as $key > $value){print_r(getimagesize($_FILES[images][tmp_name][$key]));这很好,所以它不会返回false.但即使我上…...