Linux——权限的理解

Linux——权限的理解


文章目录

  • Linux——权限的理解
  • 一、shell命令以及运行原理
  • 二、Linux权限的概念
    • 切换用户
    • 对指令提权
  • 三、Linux权限管理
    • 1. 文件访问者的分类(人)
    • 2. 文件类型和访问权限(事物属性)
      • 文件类型
      • 基本权限
      • 文件权限值的表示方法
        • 字符表示方法
        • 八进制数值表示方法
    • 3. 文件访问权限的相关设置方法
    • 4. 默认权限以及权限掩码
  • 四、权限相关问题


一、shell命令以及运行原理

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

如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含

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

  • 对比windows GUI:我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)

    shell 对于Linux:有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户
    在这里插入图片描述
    简单来讲,对于操作系统来说,他并不信任或者并不认为我们有这个能力与他直接沟通,所以出现了外壳程序作为一个桥梁来辅助两者之间的沟通,所以外壳存在的意义有两个

    1. 命令行解释(充当中间人沟通)
      内核的设计非常复杂,使用者无法直接向Linux内核进行沟通,也无法直接读懂内核执行完命令的结果所以shell外壳充当"媒婆"这一角色来往于操作者和内核之间
  • 外壳程序将用户输入的指令解释后传递给内核
  • 内核执行命令后得到的结果经外壳处理后传递给用户
    1. 保护内核(充当保安)
      有时用户想要内核执行的命令过于离谱或者使用的指令内核根本做不到那么此指令根本不会"打扰"内核
      它会在shell外壳进行翻译时就被驳回!

    Linux下的shell外壳是bash
    windows下的shell外壳是图形化界面

    二、Linux权限的概念

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

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

    命令:su [用户名]
    功能:切换用户
    例如,要从root用户切换到普通用户user,则使用 su user,要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令

    注:超级用户切换为普通用户不用输密码
    普通用户切换为root或其他普通用户需要密码

    对指令提权

    现实操作中会出现,普通用户想用root账号执行一条命令,但如果切换为root那么太麻烦了
    那么就能进行对指令提权操作

    使用指令: sudo 提权的指令
    值得注意的是使用sudo指令需要被root添加到sudoers白名单

    三、Linux权限管理

    1. 文件访问者的分类(人)

    在Linux操作系统中,有三种“人”

  • 文件和文件目录的所有者:u---User
  • 文件和文件目录的所有者所在的组的用户:g---Group
  • 其它用户:o---Others
  • 2. 文件类型和访问权限(事物属性)

    在这里插入图片描述
    2-4位:代表的是文件所有者的权限
    5-7位:代表的是文件所属组的权限
    8-10位:代表的是others的权限

    文件类型

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

    基本权限

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

    文件权限值的表示方法

    对于三种不同的“人”来说,分别有对应的rwx权限,人与人之间,同一人的权限与权限之间,互不干扰,没有任何关联,这意味着对于上图中的2-9位的权限
    对于任何人的r,要么是r,要么是-
    对于任何人的w,要么是w,要么是-
    对于任何人的x,要么是x,要么是-
    并且rwx之间互不相干

    字符表示方法

    在这里插入图片描述

    八进制数值表示方法

    在这里插入图片描述

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

    命令:chmod
    功能:设置文件的访问权限
    格式:chmod [参数] 权限 文件名
    常用选项

    • R -> 递归修改目录文件的权限
    • 说明:只有文件的拥有者和root才可以改变文件的权限

    chmod命令权限值的格式

    1. 用户表示符+/-=权限字符
  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

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

  •         实例:
  • # chmod u+w /home/abc.txt
  • # chmod o-x /home/abc.txt
  • # chmod a=x /home/abc.txt

  • 2. 三位八进制数字

            实例:
  • # chmod 664 /home/abc.txt
  • # chmod 640 /home/abc.txt


  • 命令:chown
    功能:修改文件的拥有者
    格式:chown [参数] 用户名 文件名
    实例

    • # chown user1 f1
    • # chown -R user1 filegroup1



    命令:chgrp
    功能:修改文件或目录的所属组
    格式:chgrp [参数] 用户组名 文件名
    常用选项:-R 递归修改文件或目录的所属组
    实例

    • chgrp users /abc/f2



    命令:umask
    功能
    查看或修改文件掩码
    新建文件夹默认权限=0666
    新建目录默认权限=0777
    但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响,假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
    格式:umask 权限值
    说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002

    实例

    • # umask 755
    • # umask //查看
    • # umask 044//设置

    4. 默认权限以及权限掩码

    在Linux系统中,创建一个文件与目录
    在这里插入图片描述
    我们会发现以下规律:

  • 目录的默认权限为:7 7 5
  • 普通文件默认权限:6 6 4

  • 文件的默认权限有两个因素决定:
    1. 文件的起始权限
      目录的起始权限为:7 7 7
      普通文件的起始权限为: 6 6 6
    2. 文件的权限掩码
      假设起始权限是mask,则实际创建的出来的文件权限是: mask & ~umask
      而一般机器上默认为002

    所以我们根据规律可以进行以下运算
    对于目录: 777 & ~002 = 775
    对于文件: 666 & ~002 = 664

    所以默认权限是这样算出来的,他被文件的起始权限和umask码共同决定

    四、权限相关问题

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

    需要x权限

    1. 是否允许一个指定用户查看目录的文件列表,需要r
    2. 是否允许一个指定用户在当前目录下新建或删除文件,需要w
    3. 一个文件一定是属于一个目录的,一个文件属性能不能查看,是由目录的权限决定的
    4. cd进入一个目录,需要的只有x权限,如果需要查看目录内的文件列表,则还需要r权限

    一个文件一定是属于一个目录的,一个文件能不能被删除,这个文件本身能决定吗?由谁决定??

    这个文件本身决定不了,所属的目录与对应的账户是否有w权限决定


    如果需要共享文件的情况,由于文件是共享的,所以意味着这个共享文件的目录对于所有人来说都有w权限,因为删除一个文件只需要用户拥有该文件所属的目录的w权限,那么按道理来说该目录的所有人都能删除这个我创建的文件,如何解决这个问题?

    目录的所有者或者root可以对目录设置粘滞位,其他人对目录有w权限也删除不了
    设置粘滞位:chmod + t

    当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
    一、超级管理员删除
    二、该目录的所有者删除
    三、该文件的所有者删除


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

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

相关文章

准备系统运行的先决条件

知识点: 大数据基础环境准备 重 点: SSH免密码连接 安装配置JDK 安装配置Scala 项目开发测试环境为分布式集群环境,在当前项目中使用多台基于CentOS 64bit 的虚拟机来模拟生产环境。在生产环境中建议使用高性能物理主机或云主机搭建集…

el根据需求合并列

将 列分为 3 3 1 的格式 以下是vue代码&#xff1a; <el-table:data"dataSource":border"true":header-cell-style"{ font-weight: normal, text-align: center }":cell-style"{ text-align: center }"size"mini"style…

枚举赋值及强制转换问题

对枚举进行字符赋值&#xff0c;需要进行强制类型转换之后&#xff0c;才能得到想要的值&#xff0c;如下 typedef enum data {DIRECTION_X X,DIRECTION_Y Y,DIRECTION_Z Z,DIRECTION_T T }NumData;int main() {NumData numdata DIRECTION_Y;count <<"num is&…

消息服务--Kafka的简介和使用

消息服务--Kafka的简介和使用 前言异步解耦削峰缓存1、消息队列2、kafka工作原理3、springBoot KafKa整合3.1 添加插件3.2 kafKa的自动配置类3.21 配置kafka地址3.22 如果需要发送对象配置kafka值的序列化器3.3 测试发送消息3.31 在发送测试消息的时候由于是开发环境中会遇到的…

Vue+OpenLayers7入门到实战:OpenLayers7点聚合(聚散点)功能,地图缩小显示聚集数量,点击聚集点散开和地图放大后显示要素图片

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7入门到实战 前言 本章介绍如何使用OpenLayers7在地图上实现地图点聚合(聚散点)功能,实现地图缩小显示聚集数量,点击聚集点和地图放大后显示要素对应icon图片的功能。 二、依赖和使用 "ol": "7.5.2"…

计算机找不到msvcr120.dll的五种修复方法,轻松搞定msvcr120.dll丢失问题

当计算机系统中msvcr120.dll文件丢失时&#xff0c;可能会引发一系列运行问题和故障现象。msvcr120.dll是Microsoft Visual C Redistributable Package的一部分&#xff0c;对于许多Windows应用程序的正常运行至关重要。由于msvcr120.dll是许多软件在运行过程中依赖的重要动态链…

Pytest+Selenium UI自动化测试实战实例(全)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 今天来说说pytest吧&#xff0c;经过几周的时间学习&#xff0c…

AI给开发经验3-5年的程序员的一些建议

Q: 你是一名CTO&#xff0c;请你给开发经验3-5年的程序员一些职业和生活方面的建议&#xff0c;1500字。 A: 作为一名有着丰富经验的CTO&#xff0c;我深知程序员在职业道路上的成长并非一帆风顺。针对开发经验在3-5年的程序员&#xff0c;我想从职业和生活两个方面&#xff0…

免费下载Corel Video Studio 2024-轻松创建令人惊叹的视频!

免费下载Corel Video Studio 2024-轻松创建令人惊叹的视频&#xff01; Corel Video Studio 2024免费下载Keygen 你厌倦了在视频编辑软件上花大钱吗&#xff1f;别再看了&#xff01;我们为您提供了完美的解决方案——Corel Video Studio 2024。最棒的部分是什么&#xff1f;…

webhook详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 webhook简介 在当今高度连接的网络世界中,没有什么可以孤立地发挥最佳作用。完成一项任务(几乎)总是需要多个实体的参与。电子商务应用程序需要与支付系统通信,支付…

数论<1>——数论基础

这期博客是一个数论入门介绍&#xff0c;dalao们可以自动忽略。 Part 1:素数(质数) 说到数论&#xff0c;小学奥数里也有。我最先想到的就是质数了。素数就是一个只能被1和它自己整除的数。判断的方法也很简单&#xff0c;可以扫一遍就结束了&#xff0c;但是没必要。由于一个…

剑指offer JZ23链表中环的入口节点 C++

1、题目描述 2、在VS2019上运行 #include <iostream>using namespace std;struct ListNode {int val;ListNode* next;ListNode(int x) : val(x), next(NULL) {} };class Solution { public:// 判断链表是否有环&#xff0c;返回相遇的地方ListNode* hasCycle(ListNode* …

Unity 采用自定义通道ShaderGraph实现FullScreen的窗户雨滴效果

效果如下 ShaderGraph实现 N21 随机化 DragLayer分层 将DragLayer分成四层&#xff0c;分别调整每层的缩放和大小 Shader实现的链接&#xff08;Unity 雨水滴到屏幕效果&#xff09; 我也是参考这个实现Shader Graph

markdown页面宽度放宽

变成以上样式 ------------------------------------------------ 然后最后一行加上 #write{ max-width: 90%; } /* 调整源码正文宽度 */ #typora-source .CodeMirror-lines { max-width: 90%; } /* 调整输出 PDF 文件宽度 */ media print { #write{ max-w…

python 基础知识点(蓝桥杯python科目个人复习计划61)

今日复习内容&#xff1a;想到什么复习什么 因为比赛用到的编辑器是IDLE&#xff0c;所以从现在开始&#xff0c;我就不用pycharm了。 例题1&#xff1a; 从1到2020的所有数字中&#xff0c;有多少个2&#xff1f; 这个题是一个填空题&#xff0c;我用的方法是先在编辑器上…

Unity ShaderGraph实现地面积水效果

先看看效果 右侧参数&#xff0c;能够控制水高&#xff0c;波纹的速度等&#xff0c;但是这个效果需要修改高度图和凹凸图&#xff0c;毕竟有些模型并不是平面&#xff0c;对于具有斜面的模型就需要修改贴图。 ShaderGraph如下

【Java Web】秒懂CSS样式!

目录 一、CSS的使用 二、CSS引用方式 三、CSS三大选择器 四、CSS浮动 五、CSS定位 六、CSS盒子模型 一、CSS的使用 css层叠样式表能够对网页中标签元素位置的排版进行像素级别的精确控制&#xff0c;支持几乎所有的字体和字号样式&#xff0c;拥有对网页对象和模型的样式…

一 windso10 笔记本刷linux cent os7.9系统

1:准备材料 16G以上U盘, 笔记本一台 镜像选了阿里云镜像:centos-7-isos-x86_64安装包下载_开源镜像站-阿里云 软件:链接&#xff1a;https://pan.baidu.com/s/13WDp2bBU1Pdx4gRDfmBetg 提取码&#xff1a;09s3 2:把镜像写入U盘,本人已经写入好了,选择镜像,点开始就是,确定等…

基于php的用户登录实现(v2版)(持续迭代)

目录 版本说明 数据库连接 登录页面&#xff1a;login.html 登录处理实现&#xff1a;login.php 用户欢迎页面&#xff1a;welcome.php 密码修改页面&#xff1a;change_password.html 修改执行&#xff1a;change_password.php 用户注册页面&#xff1a;register.html …

WebGPU vs. 像素流

在构建 Bzar 之前&#xff0c;我们讨论过我们的技术栈是基于在云上渲染内容的像素流&#xff0c;还是基于使用设备自身计算能力的本地渲染技术。 由于这种选择会极大地影响项目的成本、可扩展性和用户体验&#xff0c;因此在开始编写一行代码之前&#xff0c;从一开始就采取正确…