
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
1.3 三种基础权限 r w x
| r(read) | 读权限 | 4 |
| w(write) | 写权限 | 2 |
| x(execute) | 执行权限 | 1 |
⚠️ 重中之重:rwx 对【文件】和【目录】含义完全不同!很多初学者踩坑就在这里,后文单独讲解目录权限。
1.4 ⽂件类型和访问权限(事物属性)
二、文件权限值的两种表示方法
执行 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/x
chmod 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/work
3.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.sh
test.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)执行命令。
核心优势:
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 权限控制,和文件本身读写权限无关。
目录权限搭配经验
七、关于权限的整体总结
核心原则汇总
容易混淆命令区分
- ls -l:查看权限、属主、属组
- chmod:修改 rwx 权限
- chown:修改文件所有者、用户组
- file:识别文件真实类型
八、粘滞位 Sticky Bit
Linux 除基础 rwx 权限外,还有 3 个高级特殊权限:SUID、SGID、Sticky 粘滞位,粘滞位是面试高频考点。
8.1 粘滞位作用
粘滞位只对【目录】生效,对文件无效!
当目录设置粘滞位之后: 目录内的文件,只有两个角色可以删除 / 重命名
8.2 典型场景:系统临时目录 /tmp
ls -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_dir
8.4 权限标识说明
- 目录其他位原本有 x 权限:显示小写 t
- 目录其他位没有 x 权限:显示大写 T(粘滞位设置失效,无实际作用)
拓展补充(拓展阅读)
另外两个特殊权限简单了解:
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 file
chgrp:只修改文件的属组,等价 chown :group file
4.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– 转换成八进制权限? 答:644
umask=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
五、判断题(常见选择题考点)

网硕互联帮助中心





评论前必须登录!
注册