【Linux】 权限管理(知识梳理 + 面试题)
Linux 权限管理完整详解
一、Linux 权限的概念
1.1 权限诞生背景
Linux 是多用户分时操作系统,允许多个用户同时登录、操作系统资源。为了防止用户随意修改、删除他人文件,隔离资源、保障系统安全,内核引入权限访问控制机制。
Windows 采用 ACL 访问控制列表;
Linux 基础模型采用经典UGO(User/Group/Other)权限模型。
1.2 UGO 三类身份
使用
ls -l查看文件时,每一个文件 / 目录都会绑定三类访问者身份:-rw-r--r-- 1 ubuntu ubuntu 120 Jul 22 10:00 test.txt
- u (user,属主 / 所有者):文件创建者、拥有者,权限优先级最高;
- g (group,属组):归属用户组内的所有成员;
- o (other,其他用户):既不是属主、也不在属组内的所有人;
- a(all):简写,代表 u+g+o 全部三类人。
1.3 三种基础权限 r w x
权限字符 含义 八进制值 r(read) 读权限 4 w(write) 写权限 2 x(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 八进制数字表示法(最常用)
规则:
r=4,w=2,x=1,同一段内权限数值相加。 示例拆解:rwxr-xr--
- u:rwx = 4+2+1 = 7
- g:r-x = 4+0+1 = 5
- o:r-- = 4+0+0 = 4 最终权限数字:
754常见标准权限(生产通用规范)
权限数字 字符权限 使用场景 644 rw-r--r-- 普通文本文件、配置文件(默认文件权限) 755 rwxr-xr-x 可执行程序、普通目录(默认目录权限) 600 rw------- 密钥、隐私配置文件(仅属主读写) 700 rwx------ 私人目录,禁止任何人访问 777 rwxrwxrwx 不推荐!所有人完全控制,极度不安全 补充:数字权限本质是二进制掩码 rwx = 111 (2) =7;rw-=110=6;r--=100=4
三、文件访问权限的相关设置方法
核心两条命令:
chmod(修改权限)、chown(修改属主、属组)3.1 chmod:修改文件 / 目录权限两种语法:符号模式、数字模式
① 符号模式(直观,增量修改)
chmod [身份][操作][权限] 文件 身份:u/g/o/a 操作:+ 添加权限 - 移除权限 = 直接设置权限 权限:r/w/xchmod u+x test.sh # 给属主增加执行权限 chmod g-w test.txt # 删除属组写权限 chmod o=r test.txt # 强制设置其他人只有读权限 chmod a+w 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/work
3.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 什么是 sudo
sudo = 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 x;
- rwx 语义区分文件和目录,目录 x 权限是进入目录的前提;
- 文件能否删除 → 看父目录 w 权限,不是文件自身权限;
chmod改权限,chown改归属;- 数字权限是八进制掩码,r=4 w=2 x=1;
- 遵循最小权限原则:不给多余权限,避免 777。
容易混淆命令区分
ls -l:查看权限、属主、属组chmod:修改 rwx 权限chown:修改文件所有者、用户组file:识别文件真实类型
八、粘滞位 Sticky Bit
Linux 除基础 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 o+t 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:执行脚本 / 二进制程序
✅ 目录 r:ls 列出目录内文件名 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 o+t dir
7.su和sudo的区别?答:
su:需要 root 密码,完整切换 root 身份,权限无限制;
sudo:使用自己账号密码,管理员可以限制能执行哪些 root 命令,无需泄露 root 密码,并且操作会记录日志。
8.修改
/etc/sudoers为什么推荐使用visudo?答:
visudo 会自动检查配置语法;如果配置写错,阻止保存,防止 sudo 整体失效;
直接 vim 编辑出错会导致 sudo 瘫痪。
9.file 命令的功能?Linux 文件后缀名是否决定文件类型?
答:
file 命令:识别文件真实类型(文本、可执行程序、脚本等);
Linux不靠后缀识别文件类型,后缀只是方便人阅读。
二、计算题(笔试必考)
权限字符串
rw-r--r--转换成八进制权限? 答:644umask=022,新建目录和新建文件默认权限? 答:目录 755,文件 644
命令:给脚本 test.sh 的属主添加执行权限(不改动其他权限) 答:
chmod u+x 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 配置中,命令尽量写绝对路径,防止安全风险。(√)
