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权限的清晰认识。如果有任何疑问,欢迎在评论区留言讨论!






相关推荐
Cosolar2 小时前
LlamaIndex索引类型全解析:原理与实战指南
运维·服务器
方便面不加香菜4 小时前
Linux--基础IO(一)
linux·运维·服务器
鼎讯信通6 小时前
风电光缆运维提质增效:G-4000A 光缆故障追踪仪破解风场巡检难题
运维·网络·数据库
三十..7 小时前
MySQL 从入门到高可用架构实战精要
运维·数据库·mysql
跨境数据猎手8 小时前
大数据在电商行业的应用
大数据·运维·爬虫
linyanRPA8 小时前
影刀RPA店群自动化实战:多店铺活动自动报名与促销管理架构设计
运维·自动化·办公自动化·rpa·python脚本·爬虫自动化·店群自动化
mounter6259 小时前
现代 Linux 内存管理的演进与变革:从传统 LRU 到多代架构 MGLRU
linux·服务器·kernel
会Tk矩阵群控的小木9 小时前
安卓群控系统对于游戏工作室实战教程
android·运维·游戏·adb·开源软件·个人开发
赵渝强老师9 小时前
【赵渝强老师】Kubernetes(K8s)中的金丝雀升级
linux·docker·云原生·容器·kubernetes
佛山个人技术开发9 小时前
GitCode SSH连接配置教程
运维·ssh·gitcode