Linux权限详解:从入门到掌握

Linux权限详解:从入门到掌握

在Linux系统中,权限管理是一个核心概念。如果你是初学者,可能会觉得它有些抽象,但只要理解了设计思想,你会发现它既严谨又优雅。本文将带你深入理解Linux权限体系,让你轻松管理文件和目录的访问控制。

一、Linux中的两类用户

Linux系统将用户分为两种:

用户类型 提示符 权限范围
超级用户(root) # 可以在系统中做任何事情,不受限制
普通用户 $ 只能做有限的操作,无法影响系统核心

切换用户命令:su

bash

复制代码
# 从普通用户切换到root(需要输入root密码)
su root

# 从root切换到普通用户
su username

💡 小贴士:日常操作建议使用普通用户,只有在需要系统级配置时才切换到root,这样更安全。


二、文件访问者的三类身份

Linux将访问文件的用户划分为三个角色:

角色 代号 说明
所有者(User) u 创建文件的用户,拥有最高控制权
所属组(Group) g 与所有者同组的用户,用于团队协作
其他人(Others) o 既不是所有者也不在所属组中的用户

这种设计非常巧妙:既保证了文件主人的控制权,又允许灵活的团队共享。


三、文件类型与基本权限

3.1 文件类型(第一个字符)

执行 ls -l 时,第一个字符表示文件类型:

字符 含义 示例
- 普通文件 文本、可执行程序
d 目录 文件夹
l 软链接 类似Windows快捷方式
b 块设备 硬盘、光驱
c 字符设备 屏幕、串口
p 管道文件 进程间通信
s 套接字文件 网络通信

3.2 三种基本权限(后面9个字符)

权限 对文件的意义 对目录的意义 数值
读(r) 可读取文件内容 可浏览目录中的文件列表 4
写(w) 可修改文件内容 可在目录中创建/删除文件 2
执行(x) 可执行该文件(如脚本) 可cd进入该目录 1

⚠️ 重点 :目录的x权限决定能否cd进入,即使你有r权限,没有x也无法进入目录!


四、权限的两种表示方法

4.1 字符表示法

rwxr-xr-- 这样的格式,每三个一组:所有者/所属组/其他人。

4.2 八进制数值表示法

权限组合 数值
--- 0
--x 1
-w- 2
-wx 3
r-- 4
r-x 5
rw- 6
rwx 7

例如:rwxr-xr-- = 7(所有者) + 5(所属组) + 4(其他人) = 754


五、修改权限的命令

5.1 chmod --- 修改权限

字符方式:

bash

复制代码
# 给所有者增加执行权限
chmod u+x file.txt

# 取消所属组的写权限
chmod g-w file.txt

# 设置其他人的权限为只读
chmod o=r file.txt

# 给所有角色添加读权限
chmod a+r file.txt

数值方式(推荐):

bash

复制代码
# 设置权限为 rw-r--r--
chmod 644 file.txt

# 设置权限为 rwxr-x---
chmod 750 script.sh

# 递归修改目录下所有文件
chmod -R 755 myfolder/

5.2 chown --- 修改所有者

bash

复制代码
# 修改文件所有者
chown alice file.txt

# 同时修改所有者和所属组
chown alice:developers file.txt

# 递归修改目录
chown -R alice myfolder/

5.3 chgrp --- 修改所属组

bash

复制代码
# 修改文件所属组
chgrp developers file.txt

# 递归修改
chgrp -R developers myfolder/

六、umask --- 默认权限掩码

当你创建一个文件或目录时,系统会赋予一个默认权限:

  • 普通文件默认:666(rw-rw-rw-)
  • 目录默认:777(rwxrwxrwx)

但实际创建出来的权限会受umask影响。最终权限 = 默认权限 & (~umask)

bash

复制代码
# 查看当前umask
umask
# 输出:0022  (普通用户通常是0002)

# 设置新的umask
umask 027

计算示例(umask=0022):

  • 新建文件:666 & (~022) = 666 & 755 = 644(rw-r--r--)
  • 新建目录:777 & (~022) = 777 & 755 = 755(rwxr-xr-x)

💡 root用户的默认umask通常是0022,普通用户是0002。


七、目录权限的特殊注意事项

目录权限的行为与文件略有不同,这里有一个常见误区:

权限组合 能否cd进入 能否ls列出内容 能否创建/删除文件
r-- (4) ❌ 不能 ❌ 不能 ❌ 不能
r-x (5) ✅ 能 ✅ 能 ❌ 不能
rwx (7) ✅ 能 ✅ 能 ✅ 能

关键结论

  • 进入目录需要x权限
  • 列出目录内容需要r权限
  • 创建/删除文件需要w权限

八、粘滞位(Sticky Bit)--- 解决"删别人文件"的问题

问题场景

如果某个目录对所有人开放了w权限(如/tmp),那么任何用户都可以删除目录中的任何文件,哪怕文件不属于自己。这显然不合理!

解决方案

粘滞位(Sticky Bit)正是为了解决这个问题。设置粘滞位后,目录中的文件只能由以下角色删除

  1. 超级管理员(root)
  2. 目录的所有者
  3. 文件的所有者

设置方法

bash

复制代码
# 给目录添加粘滞位
chmod +t /shared

# 查看效果(权限末尾出现t)
ls -ld /shared
# 输出:drwxrwxrwt. 2 root root 4096 ...

📌 /tmp 目录就是一个经典的粘滞位例子,任何用户都可以在里面创建临时文件,但只能删除自己的。


九、总结速查表

命令 作用 示例
chmod 755 file 设置权限 所有者全权,组和其他人读+执行
chmod u+x file 给所有者加执行 常用在脚本上
chown user:group file 修改所有者和组 转移文件归属
chgrp group file 修改所属组 让团队共享
umask 027 设置默认掩码 新文件默认640
chmod +t dir 设置粘滞位 保护共享目录

最后的话

Linux权限体系的设计思想可以概括为:最小权限原则 --- 每个用户和进程只拥有完成工作所必需的最小权限。理解并善用这套机制,是保障系统安全的基础。

希望这篇文章能帮你建立起对Linux权限的清晰认识。如果有任何疑问,欢迎在评论区留言讨论!






相关推荐
小龙在慢慢变强..8 分钟前
目录结构(FHS 标准)
linux·运维·服务器
2035去旅行10 分钟前
嵌入式开发,如何选择C标准库
linux·arm开发
刘延林.12 分钟前
win11系统下通过 WSL2 安装Ubuntu 24.04 使用RTX 5080 GPU
linux·运维·ubuntu
星恒讯工业路由器24 分钟前
星恒讯工业生产自动化解决方案
运维·物联网·自动化·智能路由器·信息与通信
a8a30230 分钟前
Laravel9.x新特性全解析
运维·spring boot·nginx
beyond阿亮41 分钟前
IEC104 Client Simulator - IEC104 主站/客户端模拟器 仿真器免费使用教程
运维·服务器·网络
(Charon)1 小时前
【C++/Qt】Qt 封装 TCP 客户端底层 Network 类:连接、收发、自动测试与错误处理
服务器·网络·qt·tcp/ip
Agent产品评测局1 小时前
生产排期与MES/ERP系统打通,实操方法详解:2026企业级智能体与超自动化集成实战指南
运维·人工智能·ai·chatgpt·自动化
CodeOfCC1 小时前
Linux 嵌入式arm64安装openclaw
linux·运维·服务器
绿虫光伏运维2 小时前
一文理清光伏运维的内容、常见问题与重要措施
大数据·运维·光伏业务