【linux-Day5】Linux权限

news2024/9/28 3:30:30

【linux-Day5】Linux权限

  • linux用户
    • 用户分类
    • su:用户之间进行切换
    • exit/ctrl+d:退出当前账户/回退到上一个登录账户
  • 权限和文件
    • sudo:暂时提高用户对指令操作的权限
    • Linux权限=身份+目标文件属性
    • 文件的权限表示
    • 修改文件的权限
      • chmod:设置文件的读/写/执行权限
      • chown:修改文件的拥有者、所属组
      • chgrp:修改文件的所属组
  • 权限和目录
    • Linux用户之间是互相“隔离”的
    • chmod +t:粘滞位
  • 缺省权限
    • 权限掩码
    • umask:查看或修改权限掩码

linux用户

用户分类

linux中用户分为两类,分别是root用户和普通用户。它们分别对应超级账号和普通账号。

它们的区别是root用户权限高,可以在Linux系统下做任何事情1;普通用户权限低,且受root用户管控。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

Linux多用户之间是相互隔离的->linux允许多账号同时登录。

su:用户之间进行切换

总结su的用法:

从普通用户,切换到root用户,有以下两种方式:

  1. su - -> 输入root账户密码:从当前用户切换到root账户的根目录下
    在这里插入图片描述
  2. su -> 输入root账户密码:从当前用户切换到root账户,权限变了,路径没变。
    在这里插入图片描述

用root账户切换成普通账户:root的权限很大,不用输入密码可以任意切换。

  1. su 普通用户名:从root用户切换成普通用户。

在普通账户之间切换:

  1. su B -> 输入B的密码:从普通用户A切换到普通用户B。

exit/ctrl+d:退出当前账户/回退到上一个登录账户

exit或者xshell热键ctrl+d:退出当前账户、回退到上一个登录账户。

权限和文件

在Linux中,所有的文件其实只安装了一份,所有账户共同使用。但是能否操作一个文件,由每个用户拥有的权限决定。

sudo:暂时提高用户对指令操作的权限

如果在普通账户下,不想切换到root账户,只想拥有root账户的权限—>可以通过sudo指令实现,sudo:用来进行指令的短暂提权

总结sudo的用法:

  1. sudo 命令1 —> 输入当前账户的密码:在当前账户下以root身份执行命令1。
    在这里插入图片描述
  2. sudo -i :从当前用户切换到root账户的根目录下
    在这里插入图片描述

操作后,
发现报错信息:huabing is not in the sudoers file. This incident will be reported.

分析报错原因:
这是因为使用sudo命令还有一个前提,linux系统中有一份类似于白名单的文件sudoers,在sudoers文件中记录着一份 允许暂时获得root账户权限的普通账户名单。sudoers文件的操作权限只有root账户。

总结解决办法:
如果普通账户A想要通过sudo命令获得root权限,需要先让root用户在sudoers名单中添加账户A。
在Ubuntu系统中,ubuntu虽然是系统默认普通用户,但是ubuntu是在sudoers文件的白名单中的。

sudo的功能是暂时提高用户操作的权限,其实sudoers白名单正是暂时的体现。

Linux权限=身份+目标文件属性

权限:规定用户能或不能做什么事情。

权限可以控制用户的行为,防止错误的发生。

权限限制的是 账户的身份。
对于操作一份文件来说,所有的用户都必须确认两层身份,一是,该账户是root账户还是普通账户,二是,该账户是这份文件的拥有者,所属组,还是other。通过这两层身份限制每个账户对文件进行某个具体操作。

哪个账户创建了文件,该账户就是文件的拥有者;
拥有者把自己的权限给A账户,A账户就是文件的所属组,所属组也叫拥有者同组。
一个账户既不是文件的拥有者,也不是文件的所属者,该账户就是文件的other。

在文件属性中查看文件的拥有者和所属组:
在这里插入图片描述

Linux下一切皆文件,获取权限的目的是操作文件,操作文件无非三种情况:读、写、执行。所以,第一,目标文件必须支持读/写/被执行的属性,第二,用户有对文件进行读/写/执行的权限。 具备以上两点,有对应权限的用户才能对目标文件成功进行读/写/执行操作。
可执行权限 != 可执行。

所以Linux权限=身份+目标文件属性

对于一份文件来说,用户的两层身份决定该用户有没有操作它的权限,目标文件有无对应属性决定权限是否有效。

文件的权限表示

  1. 对文件的操作就三点:读、写、执行。在Linux中,r表示读,w表示写,x表示执行。

  2. ll指令获取到文件的详细信息后,每个信息对应的属性如下:
    在这里插入图片描述

    • 文件类型:

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

    • 文件类型后紧跟着的九位是文件的权限值。
      在这里插入图片描述
      前三位代表拥有者的权限,中间三位代表所属组的权限,后三位代表other的权限
      在前三位中,第一位只有两种情况—>r或----->分别表示允许拥有者读该文件或不许拥有者读该文件;
      第二位也只有两种情况—>w或-–>分别表示允许拥有者写该文件或不许拥有者写该文件;
      第三位也只有两种情况—>x或-—>分别表示允许拥有者执行该文件或不许拥有者执行该文件;
      中间三位代表所属组的权限,同理;后三位代表other的权限,同理。

      • 例如,描述文件text.txt的权限信息:
        在这里插入图片描述
        text.txt的拥有者是root,root能对text.txt进行读、写操作,不能执行;text.txt的所属组是ubuntu,ubuntu只能进行读文件内容;非root账户也只能对text.txt文件进行读操作。
  3. 除了通过组合r、w、x、-四个字符表示文件的权限值,权限信息还可以用八进制和二进制表示。

    • 用二进制表示权限:
      也是三位数,第一位代表读,第二位代表写,第三位代表执行,每个位数上只有1和0两个选择,是1表示可读/可写/可执行,是0表示不可读/不可写/不可执行。

    • 把二进制转化成八进制---->八进制数也能表示权限值。

    • 总结:文件权限的三种表示方法
      在这里插入图片描述
      例如:在这里插入图片描述
      text.txt的权限信息可以表示为:rw- r-- r--或者110 100 100或者6 4 4

修改文件的权限

  1. 只有文件的拥有者和root才可以改变文件的权限。
  2. 修改权限----->
    • 设置文件的拥有者、所属者;
    • 设置拥有者、所属组、other对文件的操作权限。
  3. 用户A要访问文件a,系统会先确认,用户A是不是拥有者,是,根据拥有者的权限再访问文件a;不是,继续确认用户A是不是所属组,是,根据所属组的权限访问文件a;不是,继续确认用户A是不是other,是,根据other的权限访问文件a。
  4. 用户没有权限,系统会直接拒绝用户访问。

chmod:设置文件的读/写/执行权限

chmod是拥有者权限、root权限。

总结chmod的用法:

  1. chmod 设置符号权限值 文件1:修改文件1的操作权限。
    设置符号权限值:
    u/g/o/a/:拥有者/所属组(拥有者同组)/其他用户/所有用户。
    +/-/=:增加/取消/赋予指定用户权限。
    r/w/x:权限值。
    例如:
    chmod o+wr text.txt:
    在这里插入图片描述chmod o+wr,g-r text.txt:这样也行。

  2. chmod 设置八进制权限值 文件1:修改文件1的操作权限
    例如:chmod 777 文件1:设置所有账户都能对文件1进行读、写、执行。
    在这里插入图片描述

chown:修改文件的拥有者、所属组

修改文件的拥有者和所属组—>需要先切换到root用户然后再改或者先获取root的权限然后再改

总结chown的用法:

  1. chown 账户A 文件1:把文件1的拥有者更改为账户A。
    在这里插入图片描述

  2. chown 账户A:账户B 文件1:把文件1的拥有者和所属组分别更改为账户A,账户B。
    在这里插入图片描述

chgrp:修改文件的所属组

只有root权限能使用这个命令。

总结chgrp的用法:
chgrp 账户A 文件1:把文件1的所属者更改为账户A。
在这里插入图片描述

权限和目录

对于目录来说,
r表示用户可以用ls等指令查看目录中的内容。
w表示用户可以在目录中创建、删除文件。
x表示用户可以进入该目录。

如果用户对目录没有x权限,即使有rw权限,也没用。
如果用户对目录有x权限,但是没有r权限,即使能执行ls指令,但是没结果。

只有上面这点和文件不一样,其他没有区别。

Linux用户之间是互相“隔离”的

Linux用户之间是如何实现互相“隔离”的?
每次创建一个新用户A,Linux系统会默认在/home路径下创建一个A命名的目录,此时,/home/A就是A用户的家目录。家目录不会对other身份的用户开放rwx权限,即使对所属组开放了一定权限,但所属组默认和拥有者一致。
在这里插入图片描述

所以:除root外的任何用户,无法进入其他用户的家目录---->Linux用户之间实现了互相“隔离”。

chmod +t:粘滞位

假设:
目录A里存储了文件B,

  • 文件B的拥有者是用户b,
  • 目录A的拥有者是其他用户---->目录A的拥有者允许:用户a和用户b都能进入目录A(x),并对其中的文件进行删除操作(w)。

此时,用户b设置用户a不能对文件B进行任何操作。

这时候会出现一种情况:用户a虽然不能读/写/执行文件B,但是它能直接删除文件B。

在Linux系统中,一个文件能否被删除,与文件本身无关,与文件所处的目录权限有关

  1. 如果你不想让别人读/写/执行/删除你的文件,最重要的操作是要把文件放到你的目录底下且该目录不对外开放x权限。
    Linux对每个用户的家目录就是这样做的。其他用户对家目录没有x权限,都进不来家目录,更别提其他操作。
    在这里插入图片描述

  2. 如果你必须要把文件放到公共目录下供大家一起使用(大家有目录的xw权限),但是只能你和目录拥有者有删除权限,Linux系统对此也提供了其他解决办法:让root用户或目录拥有者对目录执行chmod +t命令—>即给目录设置粘滞位。

补充chmod的用法:

chmod +t 目录:该目录下的文件只能由超级管理员删除、 该目录的所有者删除 、该文件的所有者删除。

例如:
root用户创建的公共目录demo:对所有用户开放rwx权限–>所有用户可进入demo目录进行删除,创建,查看文件操作。
头插demo目录下有一个ubuntu用户创建的test.txt文件。
在这里插入图片描述
进入目录的所有人可删除test.txt文件。
demo目录的拥有者或者超级账户对demo目录执行粘滞位操作后,demo下的所有文件只能由超级管理员删除、 demo目录的所有者删除 、对应文件的所有者删除。
在这里插入图片描述
在这里插入图片描述

缺省权限

权限掩码

新建一个普通文件,起始权限是666,默认不带可执行(可执行文件带可执行);新建一个目录,起始权限是777,默认带x。

在这里插入图片描述
一波操作发现:理论和实际不符合啊。

分析原因:
实际刚创建出来的文件/目录权限等于默认权限值 & ~umask的后三位。

umask是权限掩码,它由四个八进制数构成,但参与计算的只有它的后三位。
权限掩码位于Linux系统中,有默认值,可通过指令查看或修改。

比如:新建一个普通文件,默认权限666,系统的权限掩码值是0002,此时该文件的实际权限为666&(~002)=664。

umask的作用是什么:
权限掩码也叫权限屏蔽码。它的作用是,umask的后三位中出现的权限,不希望在文件/目录的最终权限中出现。
比如:新建一个普通文件,默认权限666,系统的权限掩码值是0002,文件的实际权限是664。002代表的权限是只允许other对文件进行写操作,则实际权限中则不允许other对文件进行写操作。
通过umask可以控制文件/目录最终的操作权限。

Linux系统为什么要什么设计umsk:
新建文件/目录的默认权限是由操作系统决定的,无法在创建前进行修改。但是不同的用户对文件/目录的初始权限可能有差异,umask的存在让不同用户自己通过配置,满足自己的需要。

umask:查看或修改权限掩码

总结umask指令的用法:

  1. umask:查看权限掩码
  2. umask 三位八进制数:修改权限掩码
    用户对umask的修改是临时的。系统默认umask值存在于系统的配置文件中。


  1. root用户的权限就是没有权限!只有一点要注意:当卸载程序的时候,程序是打开状态,这个时候root账户也必须先把程序关闭再卸载。 ↩︎

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

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

相关文章

高级自动化测试常见面试题(Web、App、接口)

一、Web自动化测试 1.Selenium中hidden或者是display = none的元素是否可以定位到? 不能,可以写JavaScript将标签中的hidden先改为0,再定位元素 2.Selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以…

黄子恒的传奇故事

从社会小白到传奇人物,需要经过怎样的历练过程?每一份成功与辉煌都并非偶然,只有经过千百次的锤炼,才能如钢铁般更硬更强。我们的主人公——黄子恒,正是通过不断奋斗逆袭,蜕变成如今的演讲家,用…

Arduino中读取陀螺仪MPU6050六轴数据——三个加速度、三个角速度

1、工程创建 创建和添加I2C、MPU6050的.CPP、.h文件。 (1)功能和测试 (2)主程序代码 #include "MsTimer2.h" #include "KalmanFilter.h" #include "I2Cdev.h" #include "MPU6050.h" //…

kubernetes K8S 结合 Istio 实现流量治理

目录 1.Istio介绍? 1.1 Istio是什么? 1.2 Istio流量管理 1.2.1 熔断 1.2.2 超时 1.2.3 重试 2.Istio架构 3.istio组件详解 3.1 Pilot 3.2 Envoy 3.3 Citadel 3.4 Galley 3.5 Ingressgateway 3.5 egressgateway 扩展、k8s1.23及1.23以下版…

双卫星终端首发!遨游通讯织密天地一体应急通信网

2024年9月,全球通信行业的目光再次聚焦于北京,2024年中国国际信息通信展览会如期而至。展会次日,遨游通讯展台前热闹非凡,观众们纷纷驻足体验,对5G防爆手机、防爆车载台、PDT多模终端、DMR多模终端、卫星通信终端、单北…

【CAS框架自定义登录异常提示-固定时间内限制登录失败次数提醒】

CAS框架自定义登录异常提示 CAS框架自定义登录异常提示cas自定义异常自定义异常的步骤-三步走1定义自定义异常类2配置文件配置3逻辑代码中抛出自定义异常总结 自定义异常显示失败问题查找 自定义异常带msg参数不显示问题处理最后 CAS框架自定义登录异常提示 本地CAS框架异常提…

MySQL数据库进阶知识(四)《视图、存储过程、触发器》

学习目标: 掌握数据库视图基础知识 掌握数据库存储过程原理 掌握数据库触发器相关知识 学习内容: 一. 视图 介绍 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询…

Acwing 最小生成树

最小生成树 最小生成树:由n个节点,和n-1条边构成的无向图被称为G的一棵生成树,在G的所有生成树中,边的权值之和最小的生成树,被称为G的最小生成树。(换句话说就是用最小的代价把n个点都连起来) Prim 算法…

大疆会搞微单相机吗,直接和索尼、佳能、尼康竞争?

网传信息,不知道大疆后续是否真会考虑这块的业务。 在消费类电子的cmos领域,类似豪威、格科、斯特威等国产公司,已经有了一些突破。不过在高端的单反、微单领域,日本还是处于绝对的垄断地位。 2023年,全球cmos市场占有…

操作系统复习3 malloc如何分配内存

malloc分配内存 malloc是c语言的库函数,不支持重载 malloc的返回值是void*类型需要强制转换 malloc申请完的内存需要用free来进行释放内存 malloc申请空间失败会返回值为空 malloc申请的是虚拟内存地址,只有这块内存被访问时,才能发生映…

基于quill2.0的富文本编辑器,Fluent Editor,支持表格,图片,表情等

官网&#xff1a;Fluent Editor | 基于 Quill 2.0 的富文本编辑器 安装 npm i opentiny/fluent-editor quill 使用案例 <template><div class"publish-form-container"><!-- TODO --><div ref"quillEditorRef" class"quill…

comfyui 工作流生成图片使用history接口获取返回时 outputs为空 问题请教,希望有大佬可以帮忙解答一下

comfyui github地址&#xff1a; GitHub - comfyanonymous/ComfyUI: The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface.The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface.…

flush cache line dirty bytes

结论&#xff1a; ARM :To mark these lines, each line of the cache has an associated dirty bit (or bits) 所以这个依赖硬件实现&#xff0c;可能只刷出dirty bytes of cache line to memory.有的硬件只有一个dirty bit&#xff0c;所以会刷出整条cache line x86没有找…

1--苍穹外卖-SpringBoot项目介绍及环境搭建 详解

目录 软件开发整体流程 软件开发流程 角色分工 软件环境 苍穹外卖项目介绍 项目介绍 产品原型 技术选型 开发环境搭建 前端环境搭建 后端环境搭建 完善登录功能 导入接口文档 Swagger 介绍 使用方式 常用注解 软件开发整体流程 软件开发流程 需求分析&#x…

Supabase 入门指南

Supabase 是一个开源替代品&#xff0c;用于 Firebase 提供的后端服务。它基于 PostgreSQL&#xff0c;提供实时数据库、身份验证、存储等功能。本文将深入探讨 Supabase 的主要功能&#xff0c;并结合不同场景给出代码实例。 1. 创建 Supabase 项目 首先&#xff0c;访问 S…

Cannon-es物理引擎中物体动力控制的深度探索

本文目录 前言1、cannon-es给物体施加力1.1 前置代码1.2 效果1.3 给小球施加力1. applyForce效果 2. applyImpulse效果 3. applyLocalImpulse效果 4. applyTorque效果 区别总结 前言 在三维物理引擎的世界里&#xff0c;Cannon-ES以其轻量级和高效能著称&#xff0c;为开发者提…

寿司检测系统源码分享

寿司检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

zabbix“专家坐诊”第257期问答

问题一 Q&#xff1a;zabbix5.0监控项里的键值&#xff0c;怎么设置变量值&#xff1f;{#ABC} {$ABC} 都识别不到变量。 A&#xff1a;可以参考一下这个。 问题二 Q&#xff1a;我想问一下用odbc创建监控项&#xff0c;生成了json格式&#xff0c;如何创建一个触发器去判断里面…

精准控制交易亏损:掌握关键止损点设置技巧

前段时间&#xff0c;咱们探讨了开仓的策略&#xff0c;那今天就需要来聊聊止损的技巧了。一个好的开始很重要&#xff0c;但知道何时止损也是同样关键。市场波动大&#xff0c;机会稍纵即逝。当趋势变得不明确时&#xff0c;止损可以帮助我们管理风险&#xff0c;防止损失加剧…

Spring Cloud Gateway 之动态uri 自定义过滤器

背景&#xff1a;第三方公司 请求本公司入参和出参一样的同一个接口&#xff0c;根据业务类型不一样需要不同业务微服务处理 &#xff0c;和第三方公司协商在请求头中加入业务类型方便我公司在网关成分发请求。 1&#xff1a;在spring cloud gateway yml 中加入路由 重点是 -…