)
Linux 权限管理完整详解一、Linux 权限的概念1.1 权限诞生背景Linux 是多用户分时操作系统允许多个用户同时登录、操作系统资源。为了防止用户随意修改、删除他人文件隔离资源、保障系统安全内核引入权限访问控制机制。Windows 采用 ACL 访问控制列表Linux 基础模型采用经典UGOUser/Group/Other权限模型。1.2 UGO 三类身份使用ls -l查看文件时每一个文件 / 目录都会绑定三类访问者身份-rw-r--r-- 1 ubuntu ubuntu 120 Jul 22 10:00 test.txtu (user属主 / 所有者)文件创建者、拥有者权限优先级最高g (group属组)归属用户组内的所有成员o (other其他用户)既不是属主、也不在属组内的所有人a(all)简写代表 ugo 全部三类人。1.3 三种基础权限 r w x权限字符含义八进制值r(read)读权限4w(write)写权限2x(execute)执行权限1⚠️ 重中之重rwx 对【文件】和【目录】含义完全不同很多初学者踩坑就在这里后文单独讲解目录权限。1.4 ⽂件类型和访问权限事物属性d⽂件夹-普通⽂件l软链接类似Windows的快捷⽅式b块设备⽂件例如硬盘、光驱等p管道⽂件c字符设备⽂件二、文件权限值的两种表示方法执行ls -l看到-rwxr-xr--权限分为字符表示法、数字八进制表示法。2.1 字符符号表示法权限串一共 9 位分为三段每 3 位对应一类身份u g o- rwx r-x r--第 1 段1~3 位属主 u 权限rwx第 2 段4~6 位属组 g 权限r-x第 3 段7~9 位其他人 o 权限r---代表没有该权限2.2 八进制数字表示法最常用规则r4w2x1同一段内权限数值相加。 示例拆解rwxr-xr--urwx 421 7gr-x 401 5or-- 400 4 最终权限数字754常见标准权限生产通用规范权限数字字符权限使用场景644rw-r--r--普通文本文件、配置文件默认文件权限755rwxr-xr-x可执行程序、普通目录默认目录权限600rw-------密钥、隐私配置文件仅属主读写700rwx------私人目录禁止任何人访问777rwxrwxrwx不推荐所有人完全控制极度不安全补充数字权限本质是二进制掩码 rwx 111 (2) 7rw-1106r--1004三、文件访问权限的相关设置方法核心两条命令chmod修改权限、chown修改属主、属组3.1 chmod修改文件 / 目录权限两种语法符号模式、数字模式① 符号模式直观增量修改chmod [身份][操作][权限] 文件 身份u/g/o/a 操作 添加权限 - 移除权限 直接设置权限 权限r/w/xchmod ux test.sh # 给属主增加执行权限 chmod g-w test.txt # 删除属组写权限 chmod or test.txt # 强制设置其他人只有读权限 chmod aw test.txt # 所有人添加写权限② 数字模式简洁直接覆盖所有权限chmod 644 test.txt chmod 755 test_dir递归修改目录权限-R⚠️慎用-R会递归修改目录内部所有文件、子目录权限chmod -R 755 /home/work3.2 chown修改文件【属主、属组】普通用户只能修改自己文件的属组修改属主必须 root 权限 语法# 修改所有者 chown 用户名 文件名 # 修改所有者所属组 chown 用户:组 文件名 # 仅修改属组 chown :组名 文件名chown ubuntu test.txt chown ubuntu:ubuntu test.txt # 递归修改目录归属 chown -R ubuntu:ubuntu /home/work3.3 chgrp仅修改属组语义清晰适合只改组的场景chgrp [选项] 组名 文件名/目录3.4 umask新建文件 / 目录时用来 “屏蔽扣除” 默认权限的掩码umask 称为权限掩码作用是控制系统中新创建文件与目录的默认访问权限。 系统拥有默认最大基准权限umask 指定需要屏蔽去除的权限 新建对象最终权限等于基准权限掩码清除 umask 对应的权限位。 umask 设置仅对之后新建文件生效不会改变已有文件权限四、file 指令file命令不是修改权限命令作用探测文件真实类型区分文本、二进制程序、目录、脚本、压缩包等。ls 只能看文件名后缀Linux不依赖后缀识别文件类型后缀只是方便人类阅读。基础用法file test.txt file /bin/ls file test.shtest.txt: ASCII text /bin/ls: ELF 64-bit LSB shared object, x86-64 test.sh: Bourne-Again shell script, ASCII text executable常用参数-b精简输出不打印文件名-i输出 MIME 类型五、sudo 基础概念5.1 什么是 sudosudo superuser do作用普通用户临时以其他用户身份默认 root执行命令。核心优势不用共享 root 密码可以精准控制允许哪些用户、执行哪些命令所有 sudo 操作会记录日志/var/log/secure或/var/log/auth.log可审计有密码超时机制短时间内重复 sudo 无需重复输密码。5.2 区分 su 和 sudo命令特点风险su - root切换完整 root 环境需要 root 密码拿到完整 root 权限极高拿到密码就能操作所有内容sudo command临时提权使用自己用户的密码权限受配置文件限制可控可以只开六、目录的权限【重难点】❗ 千万不要把文件权限规则套用到目录rwx 含义完全不一样假设目录名为mydir权限对目录的作用r读可以使用ls mydir列出目录内文件名但是无法进入目录、无法查看文件属性缺少 x 权限w写可以在目录内新建文件、删除文件、重命名文件、移动文件⚠️关键点能否删除文件不由文件自身权限决定由【文件所在目录】的 w 权限控制x执行 / 进入允许cd mydir切换进入目录允许访问目录内部文件的 inode 元数据目录想要正常使用几乎必须具备 x 权限经典踩坑案例场景一个文件权限444所有人只读但是文件所在目录权限777结论任何用户依然可以删除这个只读文件。原因删除操作修改的是目录条目受目录 w 权限控制和文件本身读写权限无关。目录权限搭配经验只有 r、没有 x能看到文件名不能 cd 进去不能访问文件基本无实用价值只有 x、没有 r可以直接访问已知完整路径的文件但是不能 ls 列出目录内容正常对外开放目录755(rwxr-xr-x)私人目录700七、关于权限的整体总结核心原则汇总Linux 基础权限模型 UGO三类身份 u g o基础权限 r w xrwx 语义区分文件和目录目录 x 权限是进入目录的前提文件能否删除 → 看父目录 w 权限不是文件自身权限chmod改权限chown改归属数字权限是八进制掩码r4 w2 x1遵循最小权限原则不给多余权限避免 777。容易混淆命令区分ls -l查看权限、属主、属组chmod修改 rwx 权限chown修改文件所有者、用户组file识别文件真实类型八、粘滞位 Sticky BitLinux 除基础 rwx 权限外还有 3 个高级特殊权限SUID、SGID、Sticky 粘滞位粘滞位是面试高频考点。8.1 粘滞位作用粘滞位只对【目录】生效对文件无效当目录设置粘滞位之后 目录内的文件只有两个角色可以删除 / 重命名文件自身的属主root 超级用户 即使其他用户拥有该目录的 w 权限也不能删除别人创建的文件。8.2 典型场景系统临时目录/tmpls -ld /tmp drwxrwxrwt 1 root root ... /tmp末尾权限是t代表开启粘滞位。/tmp 目录权限 777所有人都能创建临时文件但是有粘滞位保护用户只能删除自己创建的临时文件不能删别人的。8.3 粘滞位设置与取消粘滞位八进制前缀1000# 数字方式添加粘滞位 chmod 1777 share_dir # 符号方式添加 chmod ot share_dir # 移除粘滞位 chmod o-t share_dir8.4 权限标识说明目录其他位原本有 x 权限显示小写t目录其他位没有 x 权限显示大写T粘滞位设置失效无实际作用拓展补充拓展阅读另外两个特殊权限简单了解SUID (4000)二进制程序运行时临时拥有程序属主权限如 passwd 命令SGID (2000)目录下新建文件自动继承目录的属组二进制程序运行继承属组Linux 权限专题【高频常见面试题】一、简答基础题最常问1. Linux 中 UGO 分别代表什么答u (user) 文件属主所有者g(group) 文件所属用户组属组o (other) 其他用户a (all) 全部三类用户2.r、w、x 权限对文件和目录作用分别是什么答✅ 文件 r读取文件内容 w修改、覆盖文件内容 x执行脚本 / 二进制程序✅ 目录 rls 列出目录内文件名 w在目录内新建、删除、重命名、移动文件 x允许 cd 进入目录、访问目录内文件目录正常使用必须具备 x 权限3.chmod、chown、chgrp三者区别答chmod修改文件 r/w/x 访问权限chown修改文件属主也可以同时修改属组chown user:group filechgrp只修改文件的属组等价chown :group file4.umask 的作用是什么已经存在的文件修改 umask 会改变权限吗答umask 是权限掩码用来控制新创建文件、目录的默认权限umask 只会影响后续新建的资源不会改变已经存在的文件权限。5.新建文件、新建目录的权限计算基准值是多少答目录基准权限777普通文件基准权限666原因系统不会自动给普通文件赋予执行权限出于安全考虑。6.什么是粘滞位作用是什么典型应用目录答粘滞位仅对目录生效 目录开启粘滞位后就算目录拥有 w 权限用户只能删除自己创建的文件不能删除别人的文件。 典型目录/tmp设置chmod 1777 dir或chmod ot dir7.su和sudo的区别答su需要 root 密码完整切换 root 身份权限无限制sudo使用自己账号密码管理员可以限制能执行哪些 root 命令无需泄露 root 密码并且操作会记录日志。8.修改/etc/sudoers为什么推荐使用visudo答visudo 会自动检查配置语法如果配置写错阻止保存防止 sudo 整体失效直接 vim 编辑出错会导致 sudo 瘫痪。9.file 命令的功能Linux 文件后缀名是否决定文件类型答file 命令识别文件真实类型文本、可执行程序、脚本等Linux不靠后缀识别文件类型后缀只是方便人阅读。二、计算题笔试必考权限字符串rw-r--r--转换成八进制权限 答644umask022新建目录和新建文件默认权限 答目录 755文件 644命令给脚本 test.sh 的属主添加执行权限不改动其他权限 答chmod ux test.sh创建共享目录 share所有人读写但只能删除自己的文件写出命令mkdir share chmod 1777 share三、经典陷阱高频题面试最爱追问1.文件 test.txt 权限444所有人只读所在目录权限 777普通用户能不能删除该文件为什么答可以删除。 能否删除文件由文件所在目录的 w 权限控制和文件自身读写权限无关。 目录开启粘滞位之后则无法删除别人创建的这个文件。2.一个目录只有 r 权限、没有 x 权限会发生什么答可以 ls 看到目录内文件名但是无法 cd 进入目录不能读取内部文件内容。3.sudo -i和sudo -s简单区别答sudo -i模拟登录 root完整加载 root 环境变量切换到 root 家目录sudo -s打开 root shell沿用当前用户环境变量不切换工作目录。4.如何查看当前账号拥有哪些 sudo 权限答sudo -l四、命令实操问答题口头提问递归修改 /www 目录下所有文件属组为 www 答chgrp -R www /www授权用户 lisi 免密执行systemctl restart nginx写出 sudoers 一行配置 答lisi ALL(ALL) NOPASSWD: /usr/bin/systemctl restart nginx五、判断题常见选择题考点chgrp 可以修改文件属主。×目录权限 777代表目录里面所有文件自动拥有 777 权限。×umask 修改后旧文件权限会同步变化。×sudo 配置中命令尽量写绝对路径防止安全风险。√