【Linux修炼进程之权限篇】探讨Linux权限问题

【Linux修炼】——权限问题

目录

一:认识Linux下用户的分类

1.1:如何添加新用户【使用root用户创建添加】

1.2:su指令用法

二:Linux下权限是什么?

2.1:权限所认证的是身份(人+身份角色)

2.2:权限和事物(文件)的“属性”有关

2.3:谈权限所熟知的过程

三:文件权限值的表示方法

3.1:权限字符表示法

3.2:权限八进制数值表示法

四:对于权限的修改问题

4.1:修改权限的相关指令

4.1.1:chmod指令

4.1.2:chgrp指令

4.1.3:chown指令

4.2:文件的权限修改

4.2.1:普通文件的权限修改

4.2.2:目录文件的权限修改

五:关于权限的重要问题

5.1:为什么我们创建文件的默认权限是我们所看到的样子?

5.2:多个用户进行文件的共享时如何保证安全性?


一:认识Linux下用户的分类

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

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

1.1:如何添加新用户【使用root用户创建添加】

第一步[建立新用户]:adduser newname(用户姓名,根据自己情况而定)

第二步[给新用户设置密码]:passwd newname

第三步[输入新用户的密码,密码不回显(我们是看不到的)]:New password:******

第四步[再次输入新用户密码]:Retype new password:******

显示有 successfully 即创建新用户成功!

 

 第五步[测试新用户]:su newname

显示当前身份就是 zs 。表明我创建的新用户既可以使用了。

1.2:su指令用法

关于 root 账号与普通账号之间的切换:

语法:su [用户名]

功能:切换用户

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


二:Linux下权限是什么?

权限:对于一件事情是否允许被你做。

注意:指定规则的 root,不受权限的约束!!! 

一个文件中各种数据大致表示情况:

2.1:权限所认证的是身份(人+身份角色)

因为权限所认证的是身份,即人+身份角色。

人:root用户,普通用户

身份角色/权限身份:拥有者(u / User),所属组(g / Group),其他人(o / Other).

人与具体身份有着对应的关系!!

 查看一个文件的拥有者和所属组情况:

那么 other 呢?——登录身份账号,进行文件身份匹配,若都不匹配,则是 other。即匹配过程是一个 if...else if...else 的过程。具体步骤:先匹配身份是否是拥有者,若匹配成功则匹配对应的拥有者权限属性,若不是则继续匹配是否是所属组,若所属组匹配成功就进行该文件所对应的所属组权限属性,若不是则剩下的一律匹配到 other 中,进行对应的other权限属性。

2.2:权限和事物(文件)的“属性”有关

所谓文件属性,一定有可读,可写,可执行三种属性。

读( r ):具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
写( w ):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。
执行( x ):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
“—”:表示不具有该项权限。

该红框框中的十个字符:表示一个文件的文件类型和文件的属性情况

Linux中的文件类型:

  • 以 - 开头:普通文件
  • 以 d 开头:目录文件
  • 以 b 开头:块设备文件
  • 以 c 开头:字符设备文件
  • 以 p 开头:管道文件
  • ....

十个字符中除却第一个字符还剩下的九个字符,其是由三种符号组合:r(可读),w(可写),x(可执行)

后面的九个字符三三为一组,表示三种身份的各自权限。

  • 第一个三【rwx / rw-】:拥有者权限
  • 第二个三【rwx / rw-】:所属组权限
  • 第三个三【r-x / r--】:other 权限 

九个字符中各个字符的位置的含义是确定的!

剩下的九个字符中表示的含义:

  • 第一个字符:拥有者的读权限
  • 第二个字符:拥有者的写权限
  • 第三个字符:拥有者的执行权限
  • 第四个字符:所属组的读权限
  • 第五个字符:所属组的写权限
  • 第六个字符:所属组的执行权限
  • 第七个字符:other 的读权限
  • 第八个字符:other 的写权限
  • 第九个字符:other 的执行权限

每一个位置只有是或者否,具有指定的权限:读权限(r / -) ,写权限(w / -),执行权限(x / -)

2.3:谈权限所熟知的过程

谈权限:

第一步:你是谁?【你的身份】

第二步:文件的所属组,拥有者是谁?【进行匹配】

第三步:拥有者,所属组和 other 分别各自的权限是什么?

实例:

第一步,我们知道我的身份是 alin

第二步,以dir1目录文件为例,该文件的拥有者是 alin,所属组是 alin

第三步,以dir1目录,拥有者权限情况为rwx(可读,可写,可执行),所属组权限情况为rwx(可读,可写,可执行),other 权限情况为r-x(可读,不可写,可执行)。


三:文件权限值的表示方法

3.1:权限字符表示法

我们知道在文件的权限三三为一组时,文件位置的含义都是确定的。每一组的第一个字符都代表的是否可读,是否可写,是否可执行。

即权限的字符表示方法:

3.2:权限八进制数值表示法

接下来以一个表格进一步来描述权限符号与八进制数值的关系。 


四:对于权限的修改问题

对于文件权限的修改,只能是由该文件的拥有者root来修改!

4.1:修改权限的相关指令

4.1.1:chmod指令

功能:设置文件的访问权限
语法格式:chmod [参数] 权限 文件名

具体用法:用户表示符+/-=权限字符

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

用户表示符号:   

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

权限字符:

  • r:可读
  • w:可写
  • x:可执行

4.1.2:chgrp指令

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名

常用选项:

  • -R 递归修改文件或目录的所属组
  • 注意:只能由root账号修改

实例:

不是root账号修改不会成功:

使用root账号修改:

4.1.3:chown指令

功能:修改文件的拥有者,同时也可以一次性修改文件的拥有者和所属组
格式:chown [参数] 用户名 文件名

常用选项:

  • -R 递归修改文件或目录的拥有者
  • 注意:只能由root账号修改

实例:

改变文件的拥有者:

一次性修改文件的拥有者和所属组:chown 用户名:所属组 文件

4.2:文件的权限修改

文件的权限修改主要靠 chmod指令

4.2.1:普通文件的权限修改

对于普通文件的rwx:

  • r:具有读取该文件内容的权限
  • w:具有修改文件内容的权限
  • x:具有执行文件的权限

以上述几个普通文件为例:

因为现在我的身份是 alin,可查看这些文件的拥有者是否是 alin 即发现在文件 rt1.txt,rtest.c 文件中alin的身份是other,即在这两个文件中的权限是 r-- [仅可读]。在rtest.exe可执行文件中权限是 r-x[可读可执行];但是在文件 t1.txt,t2.txt,test.c alin的身份是拥有者,即在这三个文件中的权限是rw-[可读可写],在test.exe可执行文件中权限是 rwx[可读可写可执行]。

修改权限:

chmod u-rwx,g-rwx,o-rwx t1.txt:将 t1.txt 的所有权限都关闭【自封该文件】

此时除了root用户,谁也不能操作该文件。

chmod u+rw,g+rw,o+rx t1.txt:操作t1.txt文件,给该文件的拥有者和所属组增加可读可写权限,给文件的 other 增加可读可执行权限。

因为我们的权限可以使用八进制来表示。所以 chmod 000 t1.txt:操作t1.txt文件,将该文件的所有权限都关闭【自封该文件】

chmod 444 t1.txt:操作t1.txt文件,将该文件的拥有者、所属组和 other 设置权限为只可读

当操作没有权限的文件时系统文件肯定会报错的。例如alin在rt1.txt文件中身份是 other,其权限仅是只可读。所以当将信息写入该文件时会报错!

4.2.2:目录文件的权限修改

对于目录文件的rwx:

  • r【可读权限】: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
  • w【可写权限】: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
  • x【可执行权限】: 如果目录没有可执行权限, 则无法cd到目录中.

检测可读权限【 r 】:是否能查看目录中的文件内容.

检测可写权限【 w 】:是否能在目录中创建文件, 在目录中删除文件.

检测可执行权限【 x 】:是否能cd进入到目录中.

五:关于权限的重要问题

5.1:为什么我们创建文件的默认权限是我们所看到的样子?

  • 为什么普通文件:664【rw- rw- r--】
  • 为什么目录文件:775【rwx rwx r-x】

解决法:

首先Linux会默认给普通文件的起始权限是666【rw- rw- rw- / 110 110 110】,默认给目录文件的起始权限是777【rwx rwx rwx / 111 111 111】。

但是Linux系统中有一个 umask 权限掩码这一情况。所谓权限掩码,就是凡在 umask中出现的权限,不会在最终的文件权限中出现!

umask 指令

功能:查看或修改文件掩码

格式:umask 权限值

说明:超级用户默认掩码值为0022,普通用户默认为0002

实例:

  • umask                //查看
  • umask 0555       //设置

=>

文件的最终权限 = 起始权限 & (~umask)

=>

修改 umask 默认权限值:

若使得创建的文件都只能写,不能读,不能被执行【-w- -w- -w- / 010 010 010】,对其取反:101 101 101 / 555。所以此时将umask = 0555即可

该问题被称之为 起始权限问题.

重点理解在 umask.

5.2:多个用户进行文件的共享时如何保证安全性?

        普通用户自己的家目录权限是700,即我在我的家目录创建的文件别人看不到。但是有时候我们多个用户想进行文件数据的共享。

那么在根目录下创建一个文件【只能使用root账号创建】,所有权限都放开:chmod 777 shared_file

在多个用户共享一个文件下,一个用户写的文件,另一个用户也能看见。

但是有一个问题:在多个用户共享一个文件下,一个用户写的文件,另一个用户竟然能删掉???

这使得文件的安全行不可靠。

那么如何解决呢?

=>一个文件能否被删除,并不由文件本身决定,而是由这个文件所处的目录决定。那么如何规避用户与用户之间的安全行呢?

最好的方法就是:粘滞位[ t ]        (即,在共享目录下,我们可以创建文件,但不可删除文件 chmod o+t shared_file)

粘滞位:给目录设置,一般是大家可以进行操作的共享目录,在该目录中各用户进行各自的增删改查。

粘滞位实例:

在shared_file目录文件中,alin用户创建一个文件。

另一个用户tmp_user想要删除alin创建的文件

发现只能查看而删除不成功!此时安全性就大大的提高了。

。有了粘滞位,则只允许文件的拥有者或者root能删这个文件,其他人一律不允许,t 是一种特殊的 x 可执行权限
所以,一个文件能否被删除,取决于该文件所处的目录权限。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【WPF】04 Http消息处理类

这里引入微软官方提供的HttpClient类来实现我们的目的。 首先,介绍一下官方HttpClient类的内容。 HttpClient 类 定义 命名空间: System.Net.Http 程序集: System.Net.Http.dll Source: HttpClient.cs 提供一个类,用于从 URI 标识的资源发送 HTTP 请…

dbt doc 生成文档命令示例应用

DBT提供了强大的命令行工具,它使数据分析师和工程师能够更有效地转换仓库中的数据。dbt的一个关键特性是能够为数据模型生成文档,这就是dbt docs命令发挥作用的地方。本教程将指导您完成使用dbt生成和提供项目文档的过程。 dbt doc 命令 dbt docs命令有…

Gitxray:一款基于GitHub REST API的网络安全工具

关于Gitxray Gitxray是一款基于GitHub REST API的网络安全工具,支持利用公共 GitHub REST API 进行OSINT、信息安全取证和安全检测等任务。 Gitxray(Git X-Ray 的缩写)是一款多功能安全工具,专为 GitHub 存储库而设计。它可以用于…

STM32CUBEIDE的使用【三】RTC

于正点原子潘多拉开发板&#xff0c;使用stm32官方免费软件进行开发 CubeMx 配置 使用CubeMx 配置RTC 勾选RTC 设置日期和时间 配置LCD的引脚用来显示 STM32CUBEIDE 在usbd_cdc_if.c中重定向printf函数用于打印 #include <stdarg.h>void usb_printf(const char *f…

第十六章 RabbitMQ延迟消息之延迟插件优化

目录 一、引言 二、优化方案 三、核心代码实现 3.1. 生产者代码 3.2. 消息处理器 3.3. 自定义多延迟消息封装类 3.4. 订单实体类 3.5. 消费者代码 四、运行效果 一、引言 上一章节我们提到&#xff0c;直接使用延迟插件&#xff0c;创建一个延迟指定时间的消息&…

【C++算法】双指针

目录 一、快乐数&#xff1a; 二、有效三角形的个数&#xff1a; 三、盛最多水的容器&#xff1a; 四、复写0&#xff1a; 五、三数之和&#xff1a; 总结&#xff1a; 一、快乐数&#xff1a; 题目出处&#xff1a; 202. 快乐数 - 力扣&#xff08;LeetCode&#xff09…

ROS2 通信三大件之动作 -- Action

通信最后一个&#xff0c;也是不太容易理解的方式action&#xff0c;复杂且重要 1、创建action数据结构 创建工作空间和模块就不多说了 在模块 src/action_moudle/action/Counter.action 下创建文件 Counter.action int32 target # Goal: 目标 --- int32 current_value…

智能健康顾问:基于SpringBoot的系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

Qt:图片文字转base64程序

目录 一.Base64 1.编码原理 2.应用场景 3.优点 4.限制 5.变种 二.文字与Base64互转 1.ui设计 2.文字转Base64 3.Base64转文字 三.图片与Base64互转 1.ui设计 2.选择图片与图片路径 3.图片转Base64 4.Base64转图片 四.清空设置 五.效果 六.代码 base64conver…

PDF编辑不求人!4款高效工具,内容修改从此变得简单又快捷

咱们现在生活在一个数字时代&#xff0c;PDF文件可不就是工作、学习还有日常生活中经常要用的东西嘛。但遇到那些需要改动的PDF文件&#xff0c;是不是就觉得有点头疼啊&#xff1f; 因为传统的PDF文件真的不好编辑&#xff0c;这确实挺烦人的。不过呢&#xff0c;我今天要给你…

【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第三十九章 Linux Misc驱动

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

SpringBoot下的智能健康推荐引擎

3系统分析 3.1可行性分析 通过对本基于智能推荐的卫生健康系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本基于智能推荐的卫生健康系统采用SSM框架&#…

24秋面试笔记

文章目录 一、专业技能1.1 具备扎实的Java基础&#xff0c;熟练掌握面向对象编码规范、集合、反射以及Java8特性等。1.1.1 Java基础1.1.2 集合1.1.3 Java8新特性 1.2 熟悉常用的数据结构(链表、栈、队列、二叉树等)&#xff0c;熟练使用排序、动态规划、DPS等算法。1.2.1 数据结…

CountUp.js 实现数字增长动画 Vue

效果&#xff1a; 官网介绍 1. 安装 npm install --save countup.js2. 基本使用 // template <span ref"number1Ref"></span>// script const number1Ref ref<HTMLElement>() onMounted(() > {new CountUp(number1Ref.value!, 9999999).sta…

Centos7 搭建单机elasticsearch

以下是在 CentOS 7 上安装 Elasticsearch 7.17.7 的完整步骤&#xff1a;&#xff08;数据默认保存在/var/lib/elasticsearch下&#xff0c;自行更改&#xff09; 一、装 Java 环境 Elasticsearch 是用 Java 编写的&#xff0c;所以需要先安装 Java 运行环境。 检查系统中是…

弘景光电:以创新为翼,翱翔光学科技新蓝海

在科技日新月异的今天&#xff0c;光学镜头及模组作为智能设备的核心组件&#xff0c;其重要性日益凸显。广东弘景光电科技股份有限公司&#xff08;以下简称“弘景光电”&#xff09;正是在这一领域中&#xff0c;凭借其卓越的研发实力和市场洞察力&#xff0c;即将在创业板上…

001 Qt_从零开始创建项目

文章目录 前言什么是QtQt的优点Qt的应用场景创建项目小结 前言 本文是Qt专栏的第一篇文章&#xff0c;该文将会向你介绍如何创建一个Qt项目 什么是Qt Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全…

英特尔新旗舰 CPU 将运行更凉爽、更高效,适合 PC 游戏

英特尔终于解决了台式机 CPU 发热和耗电的问题。英特尔的新旗舰 Core Ultra 200S 系列处理器将于 10 月 24 日上市&#xff0c;该系列专注于每瓦性能&#xff0c;比之前的第 14 代芯片运行更凉爽、更高效。这些代号为 Arrow Lake S 的处理器也是英特尔首款内置 NPU&#xff08;…

Unity3D 观察者模式

Unity3D 泛型事件系统 观察者模式 观察者模式是一种行为设计模式&#xff0c;通过订阅机制&#xff0c;可以让对象触发事件时&#xff0c;通知多个其他对象。 在游戏逻辑中&#xff0c;UI 界面通常会监听一些事件&#xff0c;当数据层发生变化时&#xff0c;通过触发事件&am…

LabVIEW提高开发效率技巧----状态保存与恢复

在LabVIEW开发中&#xff0c;保存和恢复程序运行时的状态是一个关键技巧&#xff0c;特别是在涉及需要暂停或恢复操作的应用中。通过使用 Flatten To String 和 Unflatten From String 函数&#xff0c;开发人员可以将程序当前的状态转换为字符串并保存&#xff0c;再在需要时恢…