ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux权限初识:目录权限、Umask掩码、粘滞位

Linux权限初识:目录权限、Umask掩码、粘滞位 前言Linux 是典型的多用户多任务操作系统权限机制是系统安全与资源隔离的核心基石。大多数新手学习权限只会死记 rwx 含义却搞不懂文件权限与目录权限的本质区别、不清楚新建文件默认权限从何而来、无法解释为什么 777 共享目录可以随意删除别人文件。本文将带大家搞懂目录权限、umask 掩码和粘滞位。一、Linux权限1-1 Linux权限概念Linux 权限是内核提供的访问控制机制。在多用户的 Linux 系统里它用来限制不同用户对文件、目录能做哪些操作是实现资源隔离、保障系统安全的底层基础。简单一句话概括权限的本质就是系统依据预设规则判断某个用户能否对某个文件执行对应操作。权限 人 文件属性1.“人”人 用户 角色Linux 中的用户分为两种超级用户root和普通用户。超级用户root不是权限约束在Linux中拥有特权级别其命令提示符为“#”。普通用户要受到权限约束在Linux中做有限的事情其命令提示符为“$”。Linux中的角色分为三种拥有者user/owner所属组group和其他other。拥有者user/owner文件 / 目录的创建者默认为资源的归属用户拥有对该资源的主体控制权。所属组group资源归属的用户组组内所有成员共享这一组对应的权限。其他other既不是文件拥有者也不在所属用户组内的所有剩余用户。2.文件在Linux中一切皆文件使得文件与目录成为权限机制的主要客体。文件 文件内容 文件属性文件内容就是我们实际存放的数据文本、代码、二进制数据等文件属性这是权限机制真正检查的地方包含了文件的拥有者、所属组、rwx 权限位、特殊权限粘滞位 / SUID/SGID等元信息。Linux 权限并不检查文件内容权限判定全部读取自文件属性。 我们修改chmod、chown本质就是修改这份文件属性不会改动文件里面存储的数据。3.rwx权限r读、w写、x执行三位基础权限对普通文件和目录的作用完全不一样。1普通文件 rwx管控对象文件内部数据r读取文件内容w修改/覆盖文件内容x将文件作为程序执行。2目录 rwx管控对象目录内部的文件资源而非目录本身r查看目录内文件名ls 浏览。w新增、删除、重命名目录内文件。x进入目录cd、访问内部文件的必备基础权限。1-2 Linux权限表示当我们通过ls -l查看文件信息时我们可以看到了如下的代码自左向右拆开来看第一段 -rw-r--r--权限位去掉开头的类型标识符后剩下 9 位 rw-r--r--每 3 位一组分别对应 的角色为拥有者user、所属组group、其他other。第二段和第三段两个root角色代表的分别为拥有者user和所属组group。二、进入目录所需权限2-1 实验为彻底理解目录权限我们将通过拥有者user所拥有权限实验验证每一种权限的作用。2.1 目录仅没有 r 权限、有 w 和 x 权限chmod 300 text.txt我们能进入目录、能创建/删除/重命名文件、能访问已知文件但完全无法列出目录内容ls结论r决定的是用户是否有权利查看指定目录下的文件属性。2.2 目录仅没有 w 权限、有 r 和 x 权限chmod 500 text.txt我们能进入目录、能列出目录内容、能访问已知文件但无法在目录内创建、删除、重命名任何文件结论w决定特定用户是否有权利在该目录下能否新增删除文件和修改文件名。2.3 目录仅没有 x 权限、有 w 和 r 权限chmod 600 text.txt我们能列出目录的内容但无法进入目录也无法在目录内创建、删除、重命名文件结论x决定用户是否能进入目录当中而w也因为缺x而失效2-2 思考提问若超级用户root在普通用户下的一个目录创建了一个文件并将该文件的所有权限全部关闭普通用户是否就无计可施答案必然是不可以的root用户关闭的仅仅是其所创建文件的权限而普通用户只要拥有目录的wx权限即使是超级用户所创建的文件普通用户也能将该目录下的文件进行删除。三、Umask 遮掩码为什么我们日常新建文件、目录默认权限永远不是 777 或 666这自然是系统 umask 遮掩码控制的结果。3.1 Umask 概念umask 是种权限掩码作用是屏蔽系统默认的多余权限提升系统安全性。注意umask 不是减法是权限位屏蔽按位与。3.2 系统原始最大权限目录默认起始权限777rwxrwxrwx文件默认起始权限666rw-rw-rw-普通文件默认无执行权限3.3 权限计算规则新建目录权限 目录默认起始权限(777) (~umask)新建文件权限 目录默认起始权限(666) (~umask)3.4 实操示例默认 umask 022目录777 - 022 755rwxr-xr-x文件666 - 022 644rw-r--r--总结umask 保证系统新建资源不会默认全局可写是系统默认的安全机制。四、共享目录痛点与粘滞位结合前面所有知识点我们可以还原企业真实场景引出粘滞位的诞生意义。4.1 场景需求普通用户之间不能相互访问只有超级用户才可以访问其他普通用户这样就会导致普通用户想要共享文件时没有相应的途径这时就需要搭建一个公共共享目录所有普通用户都可以上传、创建、修改自己的文件。4.2 原生权限的缺陷为了让所有人能写入目录必须授权 777也就是 other 拥有 wx 权限。根据2-2的思考可得知只要拥有目录的 wx 权限任意用户都能删除别人的文件这样肯定会造成共享目录数据的不安全。此时普通权限体系无法解决的矛盾就需要引出特殊权限粘滞位。4.3 粘滞位核心特性命令chmod ot 目录名粘滞位仅对目录生效对文件无意义仅 other 位的粘滞位有效u/g 位即使设置 t也无任何意义小写 t other 有 x 权限粘滞位生效大写 T other 无 x 权限粘滞位失效核心规则目录开启粘滞位后只有文件所有者、root 可以删除/重命名文件其他用户即便拥有目录 w 权限也无法删除他人文件。4.4 共享目录标准配置mkdir /public chmod 777 /public chmod ot /public最终权限drwxrwxrwt这样子就完美解决共享目录矛盾全员可写入仅可删除自己的文件。
返回列表