【Linux2】Linux的权限

思维导图


学习内容

       在介绍完一些基本指令后,我们需要进行对权限以后一个全新的认识,比如文件的权限、目录的权限等等……


学习内容

通过上面的学习目标,我们可以列出要学习的内容:

  1. shell命令以及运行原理
  2. Linux权限的概念
  3. Linux权限管理
  4. 一些修改权限的指令:chmod,chgrp等
  5. 粘滞位

一、shell命令以及运行原理

       Linux严格意义上说的是一个操作系统,我们称之为“核心”,但我们一般用户是不会进行直接使用kernal。而是通过kernal的外壳程序,也就是shell,来进行与核心进行沟通。

从技术角度,shell的最简单定义:命令解释器,主要包含:

  • 将使用者的命令翻译给核心处理
  • 同时,将核心的处理结果翻译给使用者

通过对比windows和Linux:

  • windows GUI:我们操作windows不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作
  • shell对于LInux:有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

二、Linux权限的概念(权限 = 人 + 事物属性)

Linux下有两种用户:超级用户和普通用户。

  • 超级用户:可以在Linux系统下做任何事情,不受限制
  • 普通用户:在Linux下做有限的事情
  • 超级用户的命令提示符是’#‘,普通用户的命令提示符是’¥‘.

命令:su [用户名]

功能:切换用户

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

三、Linux权限管理

3.1 文件访问者的分类

角色分为三类:拥有者、所属组和other。

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

Linux拥有组的概念,主要是在多人协作的时候,可以更好地进行权限管理。

3.2 文件类型和访问属性

3.2.1 文件类型

d:文件夹

-:普通文件

l:软连接(类似于windows的快捷方式)

b:块设备文件(例如硬盘、光驱等)

p:管道文件

c:字符设备文件(例如显示器等串口设备)

s:套接口文件

3.2.2 基本权限

  1. 读:r:read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  2. 写:w:write对文件而言,具有修改文件内容的权限;对目录来说,具有删除移动目录中文件的权限
  3. 可执行:x:execute对文件而言,具有执行文件的权限;对于目录来说,具有进入目录的权限
  4. -:表示不具有该项权限

3.3 文件权限值的表示方法

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

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

a)chmod
功能: 设置文件的访问权限
格式: chmod [ 参数 ] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和 root 才可以改变文件的权限
chmod
① 用户表示符 +/-= 权限字符
+: 向权限范围增加权限代号所表示的权限
-: 向权限范围取消权限代号所表示的权限
=: 向权限范围赋予权限代号所表示的权限
用户符号:  
u :拥有者
g :拥有者同组用
o :其它用户
a :所有用户
b)chown
功能 :修改文件的拥有者
格式 chown [ 参数 ] 用户名 文件名
实例:
c)chgrp
功能 :修改文件或目录的所属组
格式 chgrp [ 参数 ] 用户组名 文件名
常用选项 -R 递归修改文件或目录的所属组
d)umask
功能
查看或修改文件掩码
新建文件夹默认权限 =0666
新建目录默认权限 =0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到
umask 的影响。假设默认权限是 mask ,则实际创建的出来的文件权限是 : mask & ~umask
格式 umask 权限值
说明 :将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022 ,普通用
户默认为 0002
实例
file 指令:
功能说明 :辨识文件类型。
语法 file [ 选项 ] 文件或目录 ... 
常用选项
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。
使用 sudo 分配权限
1 )修改 /etc/sudoers 文件分配文件
格式:接受权限的用户登陆的主机 = (执行命令的用户) 命令
2 )使用 sudo 调用授权的命令
实例:
目录的权限
可执行权限 : 如果目录没有可执行权限 , 则无法 cd 到目录中 .
# umask 755
# umask // 查看
# umask 044// 设置
# chmod 740 /etc/sudoers
# vi /etc/sudoer
sudo –u 用户名 命令
sudo -u root /usr/sbin/useradd u2

四、目录的权限

  1. 可执行权限:如果目录中没有可执行权限,则无法cd到目录中;
  2. 可读权限:如果目录中没有可读权限,则无法用ls等命令查看目录中的文件内容;
  3. 可写权限:如果目录中没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件。

在这里有一个奇怪的问题:删除一个文件和目标文件有关系吗??

答案:没有关系,只与其所在的目录有关。引出下面的粘滞位。 

五、粘滞位

       我们通过一个例子来引入粘滞位:如果我们想在Linux中,有多个用户建立一个共享文件,来被大家访问,应该怎么办?

        首先,这个文件不能在各自的家目录中创建,我们只能在系统中的非系统家目录下建立。但是有一种情况,就是这个非系统的家目录对其他用户也是具有一些权限的,所以,其他用户也是可以进行删除移动我们创建的文件,那应该怎么办呢???

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

  1. 超级管理员删除
  2. 该目录的所有者删除
  3. 该文件的所有者删除

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

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

相关文章

【Blockchain】GameFi | NFT

Blockchain GameFiGameFi顶级项目TheSandbox:Decentraland:Axie Infinity: NFTNFT是如何工作的同质化和非同质化区块链协议NFT铸币 GameFi GameFi是游戏和金融的组合,它涉及区块链游戏,对玩家提供经济激励&#xff0c…

失物招领(源码+文档)

失物招领(小程序、ios、安卓都可部署) 文件包含内容程序简要说明含有功能项目截图客户端首页注册界面发布动态我的详细登录修改资料发布动态 管理端后台登录用户管理分类管理内容管理 文件包含内容 1、搭建视频 2、流程图 3、开题报告 4、数据库 5、参考…

听说小程序可以转换APP?

直接上传送门: 多端框架概述 多端框架概述 多端框架概述 Donut 多端框架是支持使用小程序技术和工具开发移动应用的框架,开发者可以一次编码,分别编译为小程序和 Android 以及 iOS 应用,实现多端开发;能帮助企业有效降…

Delphi10.2调用diocp开发的HTTP服务器,网址带中文参数用了UTF8Decode还是乱码的问题解决

由于项目需要,最近用 Delphi.10.2精简版404M的开发工具 维护了一个 网关程序,这个网关程序采用的是 HTTP服务器。核心是调用了 diocp这个开源项目,听说是支持高并发。接受到的数据用UTF8Decode处理后还是中文还是乱码。。。。。 http://127.…

施耐德 PLC 控制系统 产品 + 软件总体介绍 2020

参考 2020.7 官方说明视频:https://www.bilibili.com/video/BV1Mi4y1G7Qc/ 总体说明 施耐德作为工业控制界巨头(公认的几大巨头:西门子、AB、施耐德),PLC 控制器产品线很庞大,涵盖了高中低的完整产品线&…

webpack打包模块

webpack打包模块 一.webpack简介二.Webpack 修改入口和出口三.Webpack 自动生成 html 文件四.Webpack-打包 css 代码五.优化-提取 css 代码六.优化压缩过程七.Webpack-打包图片 一.webpack简介 1.Webpack 是一个静态模块打包工具,从入口构建依赖图,打包…

嵌入式C语言--GPT通用定时器

嵌入式C语言–GPT通用定时器 嵌入式C语言--GPT通用定时器 嵌入式C语言--GPT通用定时器一. GPT基本概念二. GPT的作用三. GPT通道的四个状态四. Continuous/One-Shot模式3.1)Continuous模式3.2)One-Shot模式 一. GPT基本概念 GPT即General Purpose Timer…

vue-列表渲染

在vue中 提供了 v-if v-else v-else-if v-show v-if v-if指令用于条件性渲染地渲染一块内容.这块内容只会在指令的表达式返回真值时会被渲染 实例: <template><h3>条件渲染</h3><div v-if"flag">看</div></template> <s…

吴恩达2022机器学习专项课程(一) 4.4 学习率

问题预览/关键词 学习率太小有什么影响&#xff1f;学习率太大有什么影响&#xff1f;如果成本函数达到局部最小值&#xff0c;使用梯度下降还能继续最小化吗&#xff1f;为什么学习率固定&#xff0c;而最小化成本函数的步幅却越来越缓&#xff1f;如何选择合适的学习率&…

算法学习——LeetCode力扣图论篇3(127. 单词接龙、463. 岛屿的周长、684. 冗余连接、685. 冗余连接 II)

算法学习——LeetCode力扣图论篇3 127. 单词接龙 127. 单词接龙 - 力扣&#xff08;LeetCode&#xff09; 描述 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> … -> sk&#xff1a; 每一对相…

【苹果MAC】苹果电脑 LOGI罗技鼠标设置左右切换全屏页面快捷键

首先键盘设置->键盘快捷键 调度中心 设置 f1 f2 为移动一个空间&#xff08;就可以快捷移动了&#xff09; 想要鼠标直接控制&#xff0c;就需要下载官方驱动&#xff0c;来设置按键快捷键&#xff0c;触发 F1 F2 安装 LOGI OPTIONS Logi Options 是一款功能强大且便于使用…

Spring Boot单元测试全指南:使用Mockito和AssertJ

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

Verilog语法回顾--用户定义原语

目录 用户定义原语 UDP定义 UDP状态表 状态表符号 组合UDP 电平敏感UDP 沿敏感时序UDP 参考《Verilog 编程艺术》魏家明著 用户定义原语 用户定义原语&#xff08;User-defined primitive&#xff0c;UDP&#xff09;是一种模拟硬件技术&#xff0c;可以通过设计新的原…

人工智能产业应用--具身智能

五、下一个浪潮 (一) 跳出缸中脑——虚实结合 在探索人工智能的边界时&#xff0c;“跳出缸中脑——虚实结合”这一概念提出了一个引人深思的视角&#xff0c;尤其是在具身智能的领域。具身智能是一种思想&#xff0c;强调智能体通过与其环境的直接物理互动来实现智能行为。然…

【JavaScript编程】ArrayBuffer转JSON

将ArrayBuffer转换为JSON是一个复杂的过程&#xff0c;因为它涉及到从二进制数据到文本数据的转换。 步骤如下&#xff1a; 将ArrayBuffer转换为字节数组&#xff1a;你可以使用Uint8Array或其他TypedArray视图来读取ArrayBuffer中的数据。 解码字节数组&#xff1a;使用Text…

QT-左框选项卡软件界面框架

QT-左框选项卡软件界面框架 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 #include <QTextBrowser> #include <QLabel> #include <QPushButton> #include <QSpacerItem> #include <QToolButton> #include <QDebug> #i…

在 QML 中,ComboBox 是一种常用的用户界面控件,通常用于提供一个下拉式的选择框,允许用户从预定义的选项列表中选择一个值

ComboBox 详解&#xff1a; 以下是 ComboBox 的一些重要属性和特性&#xff1a; model: 用于指定 ComboBox 中的选项列表&#xff0c;可以是一个数组、列表、模型或者其他可迭代的数据结构。 editable: 用于指定是否允许用户编辑 ComboBox 中的文本输入框&#xff0c;以便输入…

【MyBatis】MyBatis的介绍和基本使用

目录 一、数据库操作框架的历程 1.1 JDBC 1.2 DBUtils 1.3 Hibernate 1.4 Spring JDBC&#xff1a;JDBCTemplate 1.5 Spring Data JPA 二、什么是MyBatis&#xff1f; 2.1 传统JDBC与MyBatis相比的弊病 2.2 MyBatis中的组件 2.3 MyBatis的体系结构 三、快速搭建MyBa…

Linux的中间件

我们先补充点关于awk的内容 awk的用法其实很广。 $0 表示整条记录 变量&#xff1a; NF 一行中有多少个字段&#xff08;表示字段数&#xff09; NR &#xff1a; 代表当前记录的序号&#xff0c;从1开始计数。每读取一条记录&#xff0c;NR的值就会自动增加1。&#xff08;…

鸿蒙TypeScript入门学习第5天:【TypeScript 运算符】

1、TypeScript 运算符 运算符用于执行程序代码运算&#xff0c;会针对一个以上操作数项目来进行运算。 考虑以下计算&#xff1a; 7 5 12复制以上实例中 7、5 和 12 是操作数。 运算符 用于加值。 运算符 用于赋值。 TypeScript 主要包含以下几种运算&#xff1a; 算…