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

目录

前言

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
用码道免费领 1 个月 Token
cpp
运行
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
//+:增加权限

//-:移除权限

//=:直接设置为该权限
用码道免费领 1 个月 Token
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
用码道免费领 1 个月 Token
cpp
运行
谁可以修改权限:文件的属主可以修改自己文件权限;root可以修改任意文件权限;普通用户不能修改别人的文件。

Part4.2. chown / chgrp 修改拥有者、所属组
普通用户不能随意把自己文件送给别人,修改属主属组需要root权限。

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

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

//只修改所属组
sudo chgrp group test.txt
用码道免费领 1 个月 Token
cpp
运行
Part5. umask权限掩码
新建文件、目录不会直接使用原始起始权限,会经过umask掩码运算得到最终权限。

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

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

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

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

umask作用

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

umask操作命令

//查看当前掩码
umask

//修改掩码,4位八进制
umask 0002
用码道免费领 1 个月 Token
cpp
运行
直接umask修改仅对当前Shell会话生效;永久生效,需要写入.bashrc等Shell配置文件。

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

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

上一篇 创建LVM分区
下一篇 MySQL SQL 调优完整指南