对权限的理解和使用

news2024/11/17 23:43:07

目录

    一:用户权限:

      ★su命令

      ★sudo命令

    二:文件权限

    ★文件的类型+权限

       ★文件夹的权限的使用

             ▲文件夹的可读权限:

             ▲文件夹的可写权限:

             ▲文件夹的可执行权限:

      ★权限的修改操作

            ▲chmod命令

      ★对于文件的用户分组的修改

               ▲chown命令

       ▲chgrp命令

       ★权限掩码以及umask指令

      ★粘滞位的使用场景及使用方法

    在Linux当中我们经常会遇到命令执行不允许的情况,通常会产生如下的报错:

  我们想要读取一个文件,但是却无法执行。会显示Permission denied。这就是因为权限所造成的影响。权限分为两大类:每个用户所具有的权限,以及事物所具有的权限(多指文件的权限)。只要弄清了这两部分我们以上的现象就会了然于胸。

    一:用户权限:

  当我们在使用Linux的时候经常会出现一种情况,权限不允许。如下:

  无论是上面的无法删除文件还是下面的无法指定一定的操作都是权限不允许造成的。而下面的无法执行相应的操作就是我们用户权限不足造成的。

  根据我们的生活经验都可以知道:一个集体要想发扬光大一定要有一个领导者,这个领导者有一定的权力,可以做到有的人无法做到的事情。比如说饭店的厨房里经常会提示非工作人员禁止入内。这就是一种权限的体现。(只有工作人员才允许进入)

  而在Linux当中也是这样,为了操作系统以及其他用户的安全,系统会对于用户选择性的否决一些要求。因此就有了权限不允许的情况。

  用户的身份可以分为两大类:

      1.普通用户

      2.超级管理员用户(root)

  其中普通用户就是我们使用adduser指定在root用户当中添加的新的用户,而超级管理员用户就是那个权限超级大的领导者。root用户的权限很大,几乎可以做到所有普通用户无法执行的命令。

  我们可以通过特定的指令使得这两种用户可以任意切换身份以达到我们想要的效果。

      ★su命令

   因为正常情况下的普通用户权限很低,所以我们想要执行一些命令的时候需要切换到root用户的状态下执行。这个时候就用到了 su 命令。

  我们在命令行输入了su命令之后会让我们输入root用户的密码,输入正确之后就成功切换到了我们的root用户了。当我们使用完root用户之后我们可以通过exit指令退出root用户,或者通过ctrl+D快捷键快速退出root用户返回之前的普通用户。

      ★sudo命令

  当然我们还可以给我们的普通用户提升权限,以达到root用户的执行效果,这个时候就需要使用到了sudo命令。但是在执行sudo指令之前需要将用户信息配置进入我们新人的用户文件当中,如果没有配置就会产生我们这张图片的报错。

  对于相关文件的配置我们将会在vim章节详细的进行讲解。

    二:文件权限

  上面我们说到了由于权限不足产生的报错分为两种:

    1.用户权限不足无法执行指定命令而产生的报错

    2.文件权限不允许无法执行相应的操作而产生的报错

  在介绍完用户权限之后我们再来介绍一下由于文件权限。

  我们先通过一张图片来大致认识一下文件的相关信息:

  通过指令显示文件详细的相关信息的时候我们会发现未知的内容大致分为以上三部分。其中最后一部分容易理解:不就是文件创建的时间吗?那么前面的部分呢?我们一一进行讲解。

    ★文件的类型+权限

  ​​​

 第一部分一共有10个奇奇怪怪的字符。其中第一个字符表示文件的类型。就像是我们之前介绍过的 - 表示的是一个文件,d表示一个文件夹。文件还分为很多种,如:

     d:文件夹                -:普通文件              l:软链接(类似Windows的快捷方式)                           b:块设备文件(例如硬盘、光驱等)  p:管道文件 c:字符设备文件(例如屏幕等串口设备)       s:套接口文件

  我们在本次博客需要详细进行讲解的就是文件夹和文件相关的权限。

  知道了第一个字符表示的含义之后我们再来学习后面九个字符所表示的特定的含义。

  根据生活尝试我们可以知道一个文件通常具有可读和可写的属性。具有可读属性的文件我们可以读取文件的内容,具有可写属性的文件我们可以向其中写入指定的内容。

  我们上面出现的后面的九个字符每三个分为一组,其中的 r 和 w 就表示的是文件是否具备可读和可写的属性。- 表示的是不具备当前属性。

  同样是我们之前所提到过的,在Linux当中一切事物皆文件,还记得我们之前使用gcc编写代码的时候系统会自动生成一个可执行程序吗?他其实也是一个文件。当我们的文件具有可执行的属性的时候就会有第三个字符 x 用来表是我们的文件可以作为一个可执行程序进行运行。效果如下:

  我们这三种权限就是文件本身所具有的权限。这三个权限可以同时存在。

  前面我们说到过后面九个字符需要分为三组,这又是什么原因呢?

  其实这样的分组就和我们后面的第二大类相关了。

  同样的权限分为的三部分其实是对应后面的用户分类的三部分的。对于一个文件,我们经常会有一些想要保密的东西在里面,这个时候我们可以使用权限分类。第一类表示文件的创建者,一般权限都很高,可以执行对文件的很多操作。第二类表示文件的所属组,通常情况下用于我们想要赋予特殊权限的一类用户。举一个简单的例子:当你工作的时候一定会有小组工作,每一个小组的合作都是可以互相看到的,这样可以帮助我们更好的完成工作。但是我们在工作的时候又会有竞争对手,我们不想让我们的创意被竞争对手抄袭所以就不想让他们看到。因此我们就有了所属组和其他用户。

  其中所属组代表的就是可以合作的人员,其他用户代表的就是我们的竞争对手。我们可以通过对这两者可读可写操作权限的修改达到我们想要的目的。

       ★文件夹的权限的使用

  文件夹的权限其实大致是和我们文件的权限是相同的都是分为可读,可写,以及可执行,这三部分。但是又会有人感到很好奇:可读可写容易理解,但是文件夹的可执行是什么东西呢?以及当我们的文件夹不具有可读和可写以及可执行会带来什么效果呢?

             ▲文件夹的可读权限:

   文件夹的可读权限其实很容易理解,我们文件夹当中可以存放各种各样的内容。比如说一个新的文件夹以及文件等等。可读权限就是让我们可以读取这个文件夹当中到底存在哪些内容。如果没有可读权限,那么我们进入一个文件夹就无法使用 ls 命令查看其中的文件有哪些了。效果如下:

  如上面的场景所展示的那样:当文件不具备可读权限的时候,我们可以通过cd进入文件夹当中,但是不能在文件夹当中使用 ls 命令查看都有哪些文件。

             ▲文件夹的可写权限:

  顾名思义,当一个文件夹不具备可写权限的时候,我们不可以在其中创建新的文件以及新的文件夹,也不可以在其中删除任意的文件。如下:

  在该文件夹当中无论是创建还是删除文件或者文件夹的操作都会被驳回,产生Permission denied的提示。

             ▲文件夹的可执行权限:

  文件夹的可执行权限看似让人很疑惑,但是其实很好理解。对于一个文件夹我们最常使用的一个操作 cd 还没有解释。无论是可读权限还是可写权限都对是否能够进入文件夹没有任何影响。所以我们很容易联想到,我们的 x 可执行权限应该和是否可以正常进入文件夹有关。

  通过测试也确实如此。当我们的文件夹不具有可执行权限的时候,我们就无法通过 cd 指令进入该文件夹。但是我们可以尝试是否可以向该文件夹写入一些文件或者读取文件夹当中的文件。

  我们会发现,当我们的文件夹不具有可执行权限的时候虽然我们的系统提示我们不能读取文件,但是我们依旧读出了文件夹当中的文件有哪些(test)。但是我们如果想要创建文件在该文件夹当中的时候就必须进入到该文件夹当中,因为不具有可执行权限会被当场驳回。

  我们可以通过手动调节权限的设置以达到我们想要的目标效果。

      ★权限的修改操作

  在认识完文件权限的种类以及作用之后,我们再来学习一下怎么修改文件或者文件夹的权限。

            ▲chmod命令

  想要修改一个文件的权限我们可以使用chmod命令执行我们的修改操作。使用方法如下:

  我们可以通过加减的操作对权限执行修改。其中u表示user也就是我们文件的所有者拥有的权限,group也就表示我们所属组的权限,o也就是other表示的是其他分组所具有的权限。

  上图中我们为user,group,other加上了所有的权限。同样的我们还可以减去指定的权限,让所有用户失去文件的可执行权限:

  同样的我们还可以使用比较简单的方式修改权限。因为我们指定权限的位置永远是不变的,第一位永远表示的是可读权限,第二个位置永远表示的是可写权限,第三个位置永远表示的是可执行权限。所以我们就可以使用0或1表示是否具有该权限。可以通过一个十进制数字表示这三个二进制位的情况。例如:

  就这样我们可以使用7个数字表示我们所有的权限的状态,所以我们权限的赋值操作也可以写成:

直接使用三个数字表示三组用户的权限信息即可。

      ★对于文件的用户分组的修改

               ▲chown命令

  在上面我们提到了用户的分组情况,用户的分组一共分为三类,第一类表示的是文件的创建用户,第二类表示的是文件的所属组,第三类表示其他。在查看文件的属性的时候我们也可以观察得到:

  但是怎样修改创建用户和所属组呢?

  对于创建用户我们可以使用chown命令进行修改,ch代表change。own表示拥有者。但是我们需要注意的是在对文件的用户进行管理的时候我们需要具有一定的权限,否则将无法进行修改。(一般是root用户才可以进行修改,或者配置过后的执行sudo命令的普通用户)

       ▲chgrp命令

  同样的想要修改文件的所属组用户也需要特定的指令,需要使用到chgrp指令进行调节,使用方法和注意事项和chown命令相同。

  但是一个一个更改会有点麻烦,所以要想同时修改文件的所属用户和所属组应该怎么办呢?这个时候还是需要使用chown命令,我们只需要使用 :将我们创建用户和所属组的信息分隔开来就好了。

       ★权限掩码以及umask指令

  在我们创建一个文件或者文件夹的时候我们都会发现,文件或者文件夹都会有一个默认的属性。一般文件的默认属性都是666,表示出了不具有可执行属性外具有任何可读或者可写的属性。文件夹的默认属性为777,因为我们通常会在文件夹当中进行一定的读写以及进入等操作。但是经过测试我们会发现,事实上并不是这样的。我们创建一个文件和文件夹的默认属性为:

  这又是为什么呢?这是因为我们的系统为了用户的安全会自动设置一个权限掩码,一般的权限掩码都会对其他分组中的用户进行一定程度上的限制,以保证用户信息的安全。我们可以通过umask命令进行观察系统当中的权限掩码:

  如上图所示:我们系统当中的权限掩码就为0002,一般的权限掩码都是三位,每一个数字表示的都是一个八进制数字。我们可以将第一个0想象成为八进制数字的前导数。所以实质上我们的权限掩码也可以写成:000 000 010 的形式。我们需要将原本文件的默认属性和我们的权限掩码进行一定的操作才可以得到我们想要的默认的文件的权限。

  我们需要先将权限掩码按位取反,之后在和原本的权限进行按位与的操作。执行操作如下:

  同理我们可以根据相同的操作得到我们文件夹最终所应具有的权限775。

  同样的为了更好的使用权限掩码,我们还可以手动对权限掩码进行修改。我们只需要在umask命令后面加上我们想要修改的权限掩码即可。

  虽然我们可以手动修改权限掩码,但是我们最好使用系统中给出的权限掩码,否则会产生很多不必要的麻烦,等到我们需要的时候再对其进行修改即可。

      ★粘滞位的使用场景及使用方法

  当我们在工作的时候肯定会需要很多人都共同进行一个项目的编写,也会需要多人对同一个文件进行读取或者修改的操作。但是服务器上面的每一个用户都是相对独立的,不允许相互访问。

  在服务器上的所有的用户,对于其他的用户没有可读可写和可执行的权限,其他用户无法进行访问。因此,我们想要完成合作就需要创建一个用于共享的文件夹,可以在这个文件夹当中写入指定的内容或者修改相关的文件。

  但是我们阅读权限会发现,我们这个文件夹对于所属组以及其他用户的权限都不可写,这样怎么才可以实现共享呢?我好不容易有了一个项目的思路,但是却写不尽文件当中!这个时候我们就需要调整权限,将 w 权限放开。

  当我们放开文件夹的写权限的时候我们就可以向文件夹当中写入数据了。但是这样真的安全吗?会不会有人恶意删除我们好不容易写好的文件呢?我们可以尝试一下:

  我们会发现一个很奇怪的现象:其他用户不需要经过我们的允许就可以任意的删除我们创建的文件,这就带来了很大的安全隐患。但是我们不想让人家删除的话就只能将文件夹的 w 权限删除,一旦删除又没办法进行文件的修改了。所以为了解决这个问题在Linux当中又引入了一个粘滞位的概念。

  通常情况下粘滞位是作用于文件夹当中的,我们可以将文件夹的x权限修改成为 t 。当我们文件夹的x权限修改成为 t 之后,在该文件夹当中的文件就只可以被我们文件的所有者删除,其他用户都不可以进行删除,这样就解决了我们上面所出现的问题了。

  就像上面图片中所展示的那样,我们将文件夹的权限设置为粘滞位之后重新创建文件,其他用户则无法将我们创建的用户删除。很大程度上保证了我们信息的安全。

   此上就是我们权限的所有的内容了,但是需要提一点:所有的权限限制对于root用户都不管用,假如一个用户是root用户就可以无视文件或者系统的其他权限,直接进行任意的修改操作。

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

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

相关文章

C++:deque的概念以及stack和queue的模拟实现

文章目录 stack的模拟实现dequequeue的模拟实现 本篇主要总结的是stack和queue的模拟实现以及deque的原理 stack的模拟实现 和前面的模拟实现相同,首先要看官方实现的功能 这里引入了Container的概念,从字面意思来看,也就是说,在…

pdf转换成word,这里有几个不错的方法

pdf转换成word怎么转?大家都知道,在电脑进行各种文件格式转换中,PDF转换为Word文档的需求量应该是最大的。在我们的日常工作中,经常需要将PDF转换为Word格式。为什么要将pdf文件转换成word,相信大家也都应该知道的&…

图解 | 这就是网络

你是一台电脑,你的名字叫 A 很久很久之前,你不与任何其他电脑相连接,孤苦伶仃。 直到有一天,你希望与另一台电脑 B 建立通信,于是你们各开了一个网口,用一根网线连接了起来。 用一根网线连接起来怎么就能&q…

二叉树链式结构基础

一、前中后序遍历 1、前序遍历:前序遍历是采用 根 - 左子树 - 右子树 的顺序遍历二叉树。 也就是把整棵树分为一个个子问题,每个结点都可以看作 根、左子树、右子树 三个部分 (左右子树可以为空,就是单节点,根为空就表示探索完成&…

自动化测试需知的4项测试工具!

一般来说学自动化会建议大家先学selenium,因为最早的时候,自动化就代表selenium,进入测试行业就开始做接口测试,而且现在基本每个公司都需要接口测试。今天就和大家聊一下接口测试的工具。 一、Robot Framework 机器人框架。之所…

利用证书给pdf文件添加数字签名

文章目录 给pdf文件签名文件准备构建印章获取证书方法一 阿里云申请证书方法二 自建证书 利用证书给pdf签名在指定位置签名在指定坐标签名在指定签名域签名 给pdf文件签名 如何给pdf文件签名,这样pdf文件就具有不可修改性,具有鉴权、完整性、不可抵赖。…

【操作系统笔记】内存寻址

物理寻址 主存(内存) 计算机主存也可以称为物理内存,内存可以看成由若干个连续字节大小的单元组成的数组每个字节都有一个唯一的物理地址(Physical Address)CPU访问内存前,先拿到内存地址,然后…

通讯网关软件005——利用CommGate X2OPC实现OPC客户端访问MS SQL服务器

本文推荐利用CommGate X2OPC实现OPC客户端访问MS SQL服务器获取数据。CommGate X2OPC是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示,上位机通过OPC Client软件来获取MS SQL数据库的数据。 …

Qt扩展-KDDockWidgets 简介及配置

Qt扩展-KDDockWidgets 简介及配置] 一、概述二、编译 KDDockWidgets 库1. Cmake Gui 中选择源文件和编译后的路径2. 点击Config,配置好编译器3. 点击Generate4. 在存放编译的文件夹输入如下命令开始编译 三、qmake 配置 一、概述 kdockwidgets是一个由KDAB组织编写…

基于GBDT+Tkinter+穷举法按排队时间预测最优路径的智能导航推荐系统——机器学习算法应用(含Python工程源码)+数据集(三)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境Pycharm 环境Scikit-learnt 模块实现1. 数据预处理2. 客流预测3. 百度地图API调用4. GUI界面设计1)手绘地图导入2)下拉菜单设计3)复选框设计4)最短路径结果输出界面…

睿趣科技:抖音开一家网店大概什么时候回本

随着移动互联网的迅猛发展,社交媒体平台如抖音成为了商家推广产品和服务的热门渠道之一。许多人都希望能够通过在抖音上宣传自己的产品,甚至考虑开一家网店,但回本的时间是一个关键问题。本文将探讨抖音开一家网店大概什么时候回本的问题。 首…

calloc

目录 前提须知: 函数介绍: 原型如下: 申请空间: 判断是否申请成功: 释放空间: calloc与malloc的相同之处与不同之处: 相同之处: 不同之处: 举例: ca…

API接口知识小结及电商数据平台商品详情接口请求案例

应用程序接口API(Application Programming Interface),是提供特定业务输出能力、连接不同系统的一种约定。这里包括外部系统与提供服务的系统(中后台系统)或后台不同系统之间的交互点。包括外部接口、内部接口&#xf…

无涯教程-JavaScript - SUMXMY2函数

描述 SUMXMY2函数返回两个数组中相应值的差的平方和。 语法 SUMXMY2 (array_x, array_y)争论 Argument描述Required/OptionalArray_xThe first array or range of values.RequiredArray_yThe second array or range of values.Required Notes 参数应为数字或名称,数组或包…

Vite前端构建工具详解

Vite前端构建工具 Vite 是一款新兴的前端构建工具,它的出现带来了前端开发体验的革命性变化。本文将介绍 Vite 的基本概念和核心特性,并通过代码实例来演示其强大功能。 什么是 Vite? Vite 是由 Evan You(Vue.js 的创始人&#x…

掌握进度管理基本指南,保证项目不延期

项目管理中的进度管理是规划、制定、控制和监控项目时间表的过程,确保任务和活动按时完成。 假设你是一名项目经理,带着团队组织一场备受瞩目的音乐节。精确的时间安排是关键。你需要确保演出者准时到达并按计划表演,所有供应商都准备就绪&a…

「干货」洁净室悬浮粒子计数器全部常见型号参数汇总

我们的人体工程学设计轻巧的Lighthouse手持式3016-IAQ是市场上先进的手持式粒子计数器,其质量浓度模式的密度约为μg/ m3。Lighthouse手持式粒子计数器最多可提供6个粒径同时计数的通道,可在快速,易于阅读的彩色触摸屏上显示累积和差分粒子计…

推荐一个可以采集众多国内外电商网站数据的工具

淘宝API 接入地址 item_get 获得淘宝商品详情item_get_pro 获得淘宝商品详情高级版item_review 获得淘宝商品评论item_fee 获得淘宝商品快递费用item_password 获得淘口令真实urlitem_list_updown 批量获得淘宝商品上下架时间seller_info 获得淘宝店铺详情item_search 按关键…

做题杂记222

文章目录 题1题2题3题4 一些较简单的题目。里面有些小点,稍不留意跑起来也挺费时。 题1 leak 题目描述: #!/usr/bin/env python # -*- coding: utf-8 -*- from Crypto.Util.number import * from secret import FLAGm bytes_to_long(FLAG)def getpq(n…

新消费降温,良品铺子还能走多远?

如果时间倒退到多年前,杨红春应该不会料到现在良品铺子的境遇。 从2006年创立至今,前半段良品铺子经历了品牌升级,从线下发展到平台电商、社交电商,做APP客户端进行全渠道的营销,把一家曾入不敷出的小店,养…