
1 权限1.1 权限是什么权限本质是能或者不能做什么事情1.2 为什么要有权限1 控制用户行为防止错误发生2 实现多用户隔离安全性高1.3 权限怎么实现及其要求1权限首先限制的是角色(人)。一个人不允许做什么不是因为人限制的而是因为他的身份例如张三是校长所以他可以进校长办公室但是如果李四是校长那么张三就不可以进校长办公室李四才可进所以进校长办公室这个权限不是因为人而决定的而是由他们的身份决定的2权限要求目标有对应的属性。我可以在leetcode上面刷题可以在抖音上面刷视频这是他们的固有属性与功能所以我可以限制你在抖音上刷短视频的时间可以限制你在leetcode上面必须刷多少题但是我不可能限制你在leetcode上面刷短视频的时间在抖音上限制你必须刷多少编程题因为他们压根就没有这些功能这样的权限和限制是没有用的所以权限要求你有相应的属性权限才有意义1.4 总结权限角色目标权限属性2 用户权限2.1 用户分类用户可以分为超级用户(root)普通用户2.2 用户权限的区别超级用户 rootUID0系统唯一最高权限账号所有 Linux 默认存在。不受文件权限、系统资源限制约束几乎能操作系统全部内容。普通用户UID ≥ 1000主流发行版由管理员创建。权限被严格隔离仅能操作自己家目录无法修改系统核心文件2.3 用户切换su/su -指令语法su/su - [用户名]功能su切换用户但是所在目录不变。su - 切换用户但是目录切换为家目录常见选项无2.4 用户指令提权sudo的使用如果普通用户想在根目录下创建文件/目录则必须使用sudo 指令 。因为根目录是系统层级的只允许超级用户增删查改所以你要用sudo进行指令提权。由普通用户使用sudo做的指令系统会自动默认为是超级用户做的所以普通用户用sudo创建文件文件的拥有者 所属组都会被设置为超级用户而不是普通用户注意普通用户如果想要使用sudo则要将普通用户加入到类似白名单里才可以使用否则会报错例注意:因为超级用户权限高于普通用户所以超级用户切换为普通用户的时候不需要密码但是普通用户切换到超级用户需要密码2 文件权限2.1 角色2.1.1 角色的分类角色分为拥有者所属组其他用户2.1.2 角色的理解1 拥有者文件 / 目录的拥有者owner简写 u就是创建该文件的用户账号是三类角色里优先级最高的主体。上图文件属性中红色框起来的就是这个文件的拥有者2 所属组所属组是一批共享同一套文件权限的用户集合文件给组内所有人统一分配一套读写执行权限上图文件属性中红色框起来的就是这个文件的所属组为什么要有所属组所属组的存在是为了对于有更加精细化的权限管理首选要有更加精细化的身份角色如上图所示如果没有所属组那么张三想要将文件开放给他的组长看意味着也会开放出权限让李四看到但是又不想让李四看到所以为了使权力更加精细化所以才产生了所属组3 其他用户对于一个文件/目录既不是拥有者也不在其所属组的用户称为其他用户上图文件属性中红色框起来的就是这个文件的其他用户2.1.3 修改角色chown指令语法:chown [参数] 用户名[:组名] 文件/目录功能:修改文件拥有者(可以随便修改所属组)常见选项:无例:chgrp指令语法:chgrp [参数] 组名 文件/目录功能:修改文件所属组拥有者(可以随便修改所属组)常见选项:无例:2.2 文件权限的目标属性角色对应的目标属性标识全称含义对应对象uuser属主 / 所有者文件 / 文件夹的拥有者ggroup属组文件所属用户组oother其他用户既不是所有者、也不在属组里的所有系统用户aall全部用户等价ugo一次性修改三类人权限这三个角色都对应具有对于的读 写 执行权限即为文件目标属性权限2.2.1 修改方法chmod指令语法:chmod [用户][-][rwx] 文件/目录功能:修改拥有者 所属组 其他用用户的权限常见选项:无例:符号设置(u/g/o/a - rwx):运算符规则追加权限原有权限保留-移除指定权限清空原有权限只赋予指定权限数字设置:将每一个角色的权限都用三个二进制位来表示三位数字顺序u g o每位数字 r (4)w (2)x (1)644文件标准 → urwgror755目录标准 → urwxgrxorx700私密文件 /ssh 目录 → 仅所有者可读写执行以上一般是系统默认的权限为什么默认权限会是我们看到的这样。缺省权限对于普通文件:起始权限是666默认不可执行对于目录文件:起始权限是777但是这些又跟我们实际上看到创建的文件权限不一样这是为什么因为系统会默认存在一个叫做权限掩码的概念:umask最终权限默认权限(-umask)umask的目的是什么希望凡是出现在umask中的权限都不因该出现在最终权限里为什么要有umask为了让文件的默认权限变成可配置的让我们的开发变得更加灵活可控2.2.2文件权限问题1 能改任何人的权限吗?用户只能更改自己创建文件的权限(超级用户除外)2 没有权限怎么办系统会直接拒绝我们访问3 确定权限信息的时候系统会先确认谁?拥有者 所属组 其他?用户权限只会确认一次顺序依次是拥有者 所属组 其他4 超级用户的权限不受约束5 如何理解可执行可执行!文件可以执行因为文件想要执行不仅要有相应的属性而且要有相应的能力例如.c 编译产生的文件可以执行但是.txt的文件就算有可以执行的属性但是还是不可以执行3 目录权限3.1角色标识全称含义对应对象uuser属主 / 所有者文件 / 文件夹的拥有者ggroup属组文件所属用户组oother其他用户既不是所有者、也不在属组里的所有系统用户aall全部用户等价ugo一次性修改三类人权限这里的角色和文件权限的角色是一样的就不做过多的解释3.2 目录权限的目标属性引子:rwx在文件权限中表示读 写 可执行 那么rwx又在目录权限中表示什么呢?3.2.1 r权限作用可以执行ls看到目录里的文件名、子目录名限制只有 r、没有 x → 只能看见名字不能cd进入无法读取文件内容、无法查看文件详情3.2.1 w权限作用在目录内新建、删除、重命名文件 / 子文件夹关键特性 删除文件的权限不看文件本身权限只看文件所在目录的 w 权限哪怕文件是只读只要目录有 w 权限就能删掉这个文件。限制只有 w 没有 x完全无法进入目录w 权限等于失效。3.2.1 x权限(最重要)作用允许cd 目录名进入目录、访问目录内文件的内容、读取文件元数据目录必备权限没有 xr 和 w 基本都无法正常使用。3.3 粘滞位3.3.1引子在Linux开发中团队开发屡见不鲜这时候就需要多文件共享那么我们如何进行的多文件共享的呢一般我们想要多文案共享我们会将共享目录放在 / 目录下因为每个用户的家目录只有自己和超级用户可以进入所以只能将共享文件放进 / 目录下。但是为了所有用户可以访问 创建和删除文件这个共享文件往往会将其他用户的所有目录权限(rwx)打开让那些普通用户可以自由的创建和删除文件但是这样也会出现一个问题文件的删除不是和文件本身的权限有关而是跟目录的w权限有关如果直接放开那么每个用户都可以删除不是自己的文件但是不放开w权限用户又无法创建文件所以Linux系统引入了粘滞位的概念3.3.2 核心作用正常规则只要用户对目录有w 写权限就能删除目录里任意文件哪怕文件不属于自己。 粘滞位作用给共享目录上锁仅三类用户可以删除 / 重命名目录内文件文件本身的所有者目录的所有者root 超级管理员其他用户哪怕目录权限是 777、有完整写权限也删不掉别人的文件。3.3.3 权限标识 t粘滞位显示在权限串other 段的执行位最后一位1 t other 原本有 x 进入权限粘滞位正常生效例如:3.3.4设置粘滞位(使用chmod)1 数字权限特殊权限前缀1 粘滞位后三位是普通 ugo 权限2 符号权限t添加粘滞位-t移除粘滞位