目录

前言

Part1. Shell、用户与内核交互

Part1.1. Shell介绍

Part1.2. 用户身份相关

Part2. 权限基础概念

Part2.1. 权限认识

Part2.2. 三类角色

Part3. 文件权限、目录权限

Part4. 修改权限、修改属主属组

Part4.1. chmod 修改权限

Part4.2. chown / chgrp 修改拥有者、所属组

Part5. umask权限掩码

Part6. 结语


前言

  在Linux中对于权限的理解是非常重要的,因此来跟随小编的视角来看看吧。


let's go!!!!!!!!


Part1. Shell、用户与内核交互

Part1.1. Shell介绍

  用户 → shell → 操作系统内核
>>Shell接收用户输入指令,把请求交给内核;内核完成处理,再将结果返回Shell,展示给用户。


  Shell的两个核心作用:

<1> 给人类提供便捷的操作交互接口;

<2> 隔离保护内核,用户不能直接操作内核,全部请求经过Shell转发。


Shell只是外层交互程序Linux内核才是操作系统真正核心


Part1.2. 用户身份相关

<1> root超级管理员:系统最高权限,绝大多数权限规则对其不生效

<2> 普通用户:权限受约束,不能随意修改系统目录。


  用户切换命令

<1> su切换为root不改变当前工作目录

<2> su -:完整登录式切换root,加载root环境变量,工作目录切换至/root


  sudo 提权

普通用户借助sudo可以临时以root身份执行单条命令。

sudo touch test.txt
sudo whoami

sudo输入的密码,是当前普通用户自身密码,不是root密码。 


  不是所有用户都可以使用sudo,系统维护信任白名单文件 /etc/sudoers,只有该名单内的用户才允许sudo,文件仅root可以修改,保障系统安全。


Part2. 权限基础概念

Part2.1. 权限认识

本质:规定什么身份,能够对文件/目录执行什么操作。  权限 = 操作身份 + 文件属性


目的:隔离不同用户,约束用户行为,保护系统资源


访问资源需要同时满足两个条件:

<1> 当前操作身份拥有对应能力

<2> 文件/目录本身配置了对应属性


Linux一切皆文件,基础权限分为三类:

r

w

x 执行


Part2.2. 三类角色

每一个文件/目录都维护三类身份权限:

1. 拥有者(user/u):文件的属主,创建文件的用户

2. 所属组(group/g):属组,一组信任的用户

3. 其他用户(other/o):既不是属主、也不在属组内的全部其余用户。


优先匹配顺序:先匹配拥有者;匹配不上,再匹配所属组;都不匹配,使用other权限。
示例权限字符串:‑rwxr‑xr‑x

前三位:拥有者权限

中间三位:所属组权限

后三位:other其他用户权限


Part3. 文件权限、目录权限

<1> 普通文件的x权限:代表该文件可以被执行

<2> 目录的x权限:代表可以cd进入目录


  目录只有r、没有x:能看到目录下文件名,但是无法读取文件详情


  重要考点:在目录内创建、删除文件,看的是目录本身的w权限,和被操作文件自身w权限无关。
  例:root在我的家目录创建文件,把文件权限改为000。我依旧可以删除这个文件,因为我拥有家目录的w权限。


root几乎不受权限约束,读写大多不受限制,但x执行权限依旧要看文件本身设置。


Part4. 修改权限、修改属主属组

Part4.1. chmod 修改权限

两种写法:符号模式八进制数字模式


符号模式

// u/g/o/a 增加/减少/设置 r w x
chmod u+x,g‑w,o=r test.txt



// a代表all,对三类角色同时操作
chmod a+rwx test.txt
//+:增加权限

//-:移除权限

//=:直接设置为该权限

八进制数字模式

//rwx每一位对应二进制1/0:

//r=4(100),w=2(010),x=1(001)

//rwx = 7,rw‑ =6,r‑‑=4
//u=7 g=5 o=5
chmod 755 test.txt

  谁可以修改权限:文件的属主可以修改自己文件权限root可以修改任意文件权限普通用户不能修改别人的文件。


Part4.2. chown / chgrp 修改拥有者、所属组

普通用户不能随意把自己文件送给别人,修改属主属组需要root权限
 

//修改拥有者
sudo chown user test.txt

//同时修改拥有者+所属组
sudo chown user:group test.txt

//只修改所属组
sudo chgrp group test.txt

Part5. umask权限掩码

新建文件、目录不会直接使用原始起始权限,会经过umask掩码运算得到最终权限


<1> 普通文件起始权限 666,默认不带执行位

<2> 目录起始权限 777,目录必须拥有x才可以进入


最终实际权限 = 起始权限 & (~umask)


逻辑解释:umask中置1的bit,会把对应权限“屏蔽掉”,不会出现在最终权限
例:umask 0022,other的写权限被屏蔽,新建文件other不会拥有w权限


  umask作用

不让新建文件/目录权限完全开放,系统统一控制新建资源的默认权限,提升安全性。


  umask操作命令
 

//查看当前掩码
umask

//修改掩码,4位八进制
umask 0002

直接umask修改仅对当前Shell会话生效;永久生效,需要写入.bashrc等Shell配置文件


Part6. 结语

  这篇文章我们认识到了Linux权限的相关知识,接下来,小编还会带来更多Linux相关的知识,敬请期待~

 最后,祝大家可以:春风得意马蹄疾,一日看尽长安花!

 最后的最后,要是觉得本文还可以的话,可以点点赞,关注小编一波,谢谢大家!~

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐