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),则该目录下的文件只能由
    一、超级管理员删除
    二、该目录的所有者删除
    三、该文件的所有者删除


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

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

相关文章

Linux系统安装及简单操作

目录 一、Linux系统安装 二、Linux系统启动 三、Linux系统本地登录 四、Linux系统操作方式 五、Linux的七种运行级别(runlevel) 六、shell 七、命令 一、Linux系统安装 场景1:直接通过光盘安装到硬件上(方法和Windows安装…

小白跟做江科大51单片机之DS1302可调时钟

原理部分 1.DS1302可调时钟介绍 单片机定时器主要占用CPU时间,掉电不能继续运行 图1 2.原理 图2 内部有寄存器,寄存的时候以时分秒寄存,以通信协议实现数据交互,就可以实现对数据进行访问和读写 3.主要寄存器定义 CE芯片使能…

js对象 静态方法和实例方法

求下面代码的输出结果: 首先先分析一下上面各函数: Person.say function(){console.log("a")} 第一个say()方法是定义在Person函数身上的,我们如果想使用这个方法,可以通过Person().say()来调用 this.say function()…

【Docker7】Docker安全及https安全认证

Docker安全及https安全认证一、Docker 容器与虚拟机的区别1、隔离与共享2、性能与损耗3、不同点 二、Docker 存在的安全问题1、Docker 自身漏洞2、Docker 源码问题 三、Docker 架构缺陷与安全机制1、容器之间的局域网攻击2、DDoS 攻击耗尽资源2.1 什么叫CC攻击?什么…

Python实现汉诺塔演示程序

Python实现汉诺塔演示程序 汉诺塔问题 一个板子上有三根柱子以及一些大小各不相同的圆盘。我们分别把这三根柱子叫做起始柱A、辅助柱B及目标柱C,汉诺塔移动圆盘的规则如下: 把起始柱A上所有的圆盘都移动到C柱,且在移动过程中始终保持圆盘从…

先进电机技术 —— 伺服驱动器与变频器

一、变频器与伺服驱动器发展趋势 在近年来的技术发展中,变频器和伺服驱动器均呈现出显著的先进性提升和技术融合趋势,以下是一些主要的发展方向: ### 变频器的发展趋势: 1. **智能化与网络化**: - 高级变频器集成…

【知识分享】自动化测试首选接口自动化?

在分层测试的“金字塔”模型中,接口测试属于第二层服务集成测试范畴。 相比UI自动化测试而言,接口自动化测试收益更大,且容易实现,维护成本低,有着更高的投入产出比。因此,项目开展自动化测试的首选一般为接…

计算机网络(基础篇)复习笔记——体系结构/协议基础(持续更新中......)

目录 1 计算机网络基础相关技术Rip 路由更新操作 2 体系结构(OSI 7层, TCP/IP4层)应用层运输层网络层IPv4无分类域间路由选择 CIDRIPV6 数据链路层循环冗余校验CRC协议设备 物理层传输媒体信道复用技术宽带接入技术数据通信 3 网络局域网(以太网Ethernet) 4 通信过程编码:信道极…

vue router 解决路由带参数跳转时出现404问题

我的页面是从一个vue页面router跳转到另一个vue页面,并且利用windows.open() 浏览器重新创建一个页签。但是不知道为什么有时候可以有时候又不行,经过反复测试与分析,最终发现是因为有一个参数的值里包含了小数点., 小数点是浏览器合法字符&a…

Pytest测试中的临时目录与文件管理!

在Pytest测试框架中,使用临时目录与文件是一种有效的测试管理方式,它能够确保测试的独立性和可重复性。在本文中,我们将深入探讨如何在Pytest中利用临时目录与文件进行测试,并通过案例演示实际应用。 为什么需要临时目录与文件&a…

#KEIL使用

关于在调试时,有些局部变量值无法在窗口中查看报错“not in scope",是被优化掉了,降低优化等级即可。 参考博客: KeilMDK 开发过程中遇到一些奇怪问题记录_keil遇到了不正当的冲突-CSDN博客

全国保护性耕作/常规耕作农田分类数据集

基于Sentinel-2遥感产品,使用来自文献调研和目视解译产生的保护性/常规耕作样本点,通过交叉验证方法训练随机森林分类器,生成了2016-2020年全国保护性耕作/常规耕作农田分类数据集。分类代码:0值代表非农田,1值表示第一…

“轻松入门Electron:一步步构建梦想中的桌面软件

在数字化的浪潮中,桌面应用依旧占据着其独特而重要的位置,不论是在企业解决方案、专业工具软件还是个性化应用领域中都是如此。随着技术的演进,创建这些应用的过程已经变得更为简单和可行,尤其是随着Electron等框架的出现。Electr…

【异常处理】sbt构建Chisel库时出现extracting structure failed:build status:error的解决办法

文章目录 报错背景:解决思路:①IDEA中配置本地的SBT进行下载②更改下载源为华为的镜像站1. 修改sbtconfig.txt2. 增加repositories文件 ③查看报错信息 总结整理的Scala-Chisel-Chiseltest版本信息对应表 报错背景: 最近在写Chisel时&#x…

K8s-MySQL主从集群

K8s-MySQL主从集群 引言 该案例代码均可从https://github.com/WeiXiao-Hyy/k8s_example 获取,欢迎Star! 需求 一个“主从复制”的MySQL集群有一个主节点Master有多个从节点Slave从节点需要能水平扩展所以写操作只能在主节点上执行读操作可以在所有节点…

Navicat Premium:掌控数据库的强大工具

在当今数字化的时代,数据管理变得越来越重要。无论您是数据库管理员、开发人员还是普通用户,找到一个高效、易用的数据库管理工具是至关重要的。Navicat Premium for Mac/Win 就是这样一款强大的多协议数据库管理工具,它将为您的数据库管理体…

HPE ProLiant MicroServer Gen8 RAID 1 扩容、故障恢复探索

声明:本探索只针对HP Microserver Gen8 Smart Array B120i板载阵列卡组建RAID 1(不是RAID 10),不同阵列卡结果可能会不同,请谨慎操作,本人不对你操作后导致的任何数据丢失或者损失承担任何责任,…

Java SE入门及基础(29)

第三节 访问修饰符 1. 概念 访问修饰符就是控制访问权限的修饰符号 2. 类的访问修饰符 类的访问修饰符只有两种:public 修饰符和默认修饰符(不写修饰符就是默认) public 修饰符修饰类表示类可以公开访问。默认修饰符修饰类表示该类只能…

融资项目——网关微服务

1. 网关的路由转发功能 在前后端分离的项目中&#xff0c;网关服务可以将前端的相关请求转发到相应的后端微服务中。 2. 网关微服务的配置 首先需要创建一个网关微服务&#xff0c;并添加依赖。 <!-- 网关 --><dependency><groupId>org.springframework.cl…

FreeRTOS学习笔记-基于stm32(3)中断管理

一、什么是中断 通俗点讲就是让CPU停止当前在做的事&#xff0c;转而去做更紧急的事。 二、中断优先级分组 这个紧急的事也有一个等级之分&#xff0c;优先级越高越先执行。stm32使用中断优先配置寄存器的高4位&#xff0c;共16级的中断优先等级。 stm32的中断优先等级可以分为…