目录
[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身份执行单条命令。
cppsudo touch test.txt sudo whoamisudo输入的密码,是当前普通用户自身密码,不是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相关的知识,敬请期待~
最后,祝大家可以:春风得意马蹄疾,一日看尽长安花!最后的最后,要是觉得本文还可以的话,可以点点赞,关注小编一波,谢谢大家!~
