【知识讲解】 Linux权限相关知识讲解


目录

前言

[Part1. Shell、用户与内核交互](#Part1. Shell、用户与内核交互)

[Part1.1. Shell介绍](#Part1.1. Shell介绍)

[Part1.2. 用户身份相关](#Part1.2. 用户身份相关)

[Part2. 权限基础概念](#Part2. 权限基础概念)

[Part2.1. 权限认识](#Part2.1. 权限认识)

[Part2.2. 三类角色](#Part2.2. 三类角色)

[Part3. 文件权限、目录权限](#Part3. 文件权限、目录权限)

[Part4. 修改权限、修改属主属组](#Part4. 修改权限、修改属主属组)

[Part4.1. chmod 修改权限](#Part4.1. chmod 修改权限)

[Part4.2. chown / chgrp 修改拥有者、所属组](#Part4.2. chown / chgrp 修改拥有者、所属组)

[Part5. umask权限掩码](#Part5. umask权限掩码)

[Part6. 结语](#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身份执行单条命令。

cpp 复制代码
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 修改权限

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


符号模式

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



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

//-:移除权限

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

八进制数字模式

cpp 复制代码
//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权限。

cpp 复制代码
//修改拥有者
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操作命令

cpp 复制代码
//查看当前掩码
umask

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

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


Part6. 结语

这篇文章我们认识到了Linux权限的相关知识,接下来,小编还会带来更多Linux相关的知识,敬请期待~
最后,祝大家可以:春风得意马蹄疾,一日看尽长安花!

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

相关推荐
桑榆4166 小时前
双系统(Windows + Ubuntu)安装流程
linux·windows·ubuntu
ltl13 小时前
实时 OS 巡礼:VxWorks、QNX、Zephyr 与 PREEMPT_RT
linux
我是谁??13 小时前
Ubuntu22.04更换清华源
linux·运维·服务器
Shell运维手记14 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
测试运维日常笔记15 小时前
Linux系统安装配置TigerVNC服务器完整指南
linux·运维·服务器
雾时之林16 小时前
Linux----cron定时服务
linux·运维·服务器
wengqidaifeng18 小时前
1.从“会敲命令”到理解 Linux:15 个基础指令、文件树与命令执行的本质
linux·运维·服务器·ubuntu
奔跑的架构师20 小时前
[A-49]ARMv9/v8-PSCI接口规范与工作流程简介
android·linux·arm开发·arm
(╹◡╹)20 小时前
11.RK3588本地大模型内存评估优化
java·linux·前端