提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、Linux权限基础:文件类型与权限标识
1.1 文件类型识别机制
1.2 权限字符串解析
二、Linux用户体系:权限管理的基石
2.1 用户分类与特点
2.2 用户管理核心命令
用户切换:
用户创建与删除:
2.3 sudo权限管理
三、文件权限操作:精细控制访问
3.1 权限修改(chmod)
符号模式:
数字模式(八进制):
3.2 所有权修改(chown/chgrp)
四、目录权限与特殊位:高级控制机制
4.1 目录权限的特殊含义
4.2 粘滞位(Sticky Bit):共享目录安全卫士
问题场景:
解决方案:
4.3 SUID/SGID:特殊执行权限
五、权限匹配规则:访问决策流程
5.1 权限检查流程
5.2 典型场景分析
场景1:用户编辑自己文件
场景2:共享目录协作
六、最佳实践与安全建议
6.1 权限设置原则
6.2 目录权限推荐
6.3 故障排查技巧
七、总结
7.1 Linux权限核心要点
7.2 进阶学习方向
提示:以下是本篇文章正文内容,下面案例可供参考
与Windows不同,Linux不依赖文件扩展名判断文件类型,而是通过文件属性首字符标识:
首字符 | 文件类型 | 示例 | 说明 |
---|---|---|---|
- |
普通文件 | -rw-r--r-- |
文本、二进制、图片等 |
d |
目录文件 | drwxr-xr-x |
文件夹 |
l |
符号链接 | lrwxrwxrwx |
快捷方式(软链接) |
c |
字符设备文件 | crw--w---- |
键盘、终端等串行设备 |
b |
块设备文件 | brw-rw---- |
硬盘、U盘等块存储设备 |
p |
管道文件 | prw------- |
进程间通信 |
s |
套接字文件 | srwxrwxrwx |
网络通信 |
查看示例:
$ ls -l -rw-r--r-- 1 root root 17593 Jan 24 09:51 cmd.txt # 普通文件 drwxr-xr-x 2 root root 4096 Jan 24 11:10 dir # 目录文件 lrwxrwxrwx 1 root root 11 Jan 24 11:22 myls -> /usr/bin/ls # 符号链接
权限字符串共10位,结构为:[类型][所有者权限][所属组权限][其他人权限]
drwxr-xr-x 解析: d : 目录文件 rwx : 所有者有读、写、执行权限 r-x : 所属组有读、执行权限(无写) r-x : 其他人有读、执行权限(无写)
用户类型 | 用户ID | 特点 | 操作限制 |
---|---|---|---|
root | 0 | 超级管理员 | 无任何限制 |
系统用户 | 1-999 | 服务运行专用 | 无登录权限 |
普通用户 | 1000+ | 日常操作账户 | 受限操作 |
# 普通用户切换root(需密码) $ su root Password: ****** # root切换普通用户(无需密码) # su username $ su zhangsan # 返回原用户 $ exit
# 创建新用户 sudo adduser lisi # 设置密码 sudo passwd lisi # 删除用户 sudo userdel -r lisi
普通用户临时获取root权限执行命令:
$ sudo apt update # 需要输入当前用户密码
配置sudo权限(编辑/etc/sudoers
):
# 允许zhangsan执行所有命令 zhangsan ALL=(ALL) ALL # 允许web组用户重启nginx服务 %web ALL=(root) /usr/sbin/service nginx restart
重要规则:
使用visudo
命令编辑,避免语法错误
新增用户默认无sudo权限
错误配置可能导致系统无法管理
# 添加执行权限 chmod u+x script.sh # 移除写权限 chmod go-w sensitive.txt # 设置组权限=所有者权限 chmod g=u data.csv
权限标识符:
u
:所有者(user)
g
:所属组(group)
o
:其他人(other)
a
:所有用户(all)
# 设置rw-r--r-- (644) chmod 644 config.ini # 设置rwxr-xr-x (755) chmod 755 app
权限值计算:
读(r) = 4
写(w) = 2
执行(x) = 1
总和:用户权限+组权限+其他权限(如rwxr-x--x = 751)
# 更改文件所有者 sudo chown zhangsan project.txt # 同时更改所有者和所属组 sudo chown zhangsan:devgroup app # 仅更改所属组 sudo chgrp devteam /data/shared
关键限制:
只有root和文件所有者能更改权限
更改所有者必须使用sudo
用户必须属于新组才能被分配
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
r | 读取文件内容 | 查看目录内容(ls) |
w | 修改文件内容 | 创建/删除目录内文件 |
x | 执行程序文件 | 进入目录(cd) |
经典组合:
rw-
:文件的标准读写权限
r-x
:目录的标准浏览权限
--x
:可执行但不可见(特殊场景)
多人共享目录时,默认权限允许任意用户删除他人文件:
$ ls -ld /data/shared drwxrwxrwx 2 root root 4096 Feb 23 14:50 /data/shared
# 设置粘滞位 sudo chmod +t /data/shared # 查看效果 $ ls -ld /data/shared drwxrwxrwt 2 root root 4096 Feb 23 14:55 /data/shared
粘滞位规则:
仅目录可设置粘滞位
设置后目录权限末尾显示t
或T
文件只能被以下角色删除:
文件所有者
目录所有者
root用户
特殊位 | 设置命令 | 效果 | 典型应用 |
---|---|---|---|
SUID | chmod u+s |
以文件所有者身份执行 | /bin/passwd |
SGID | chmod g+s |
以文件所属组身份执行 | 目录继承组权限 |
# 设置SUID(s出现在所有者执行位) chmod u+s /usr/bin/special_app # 设置SGID(s出现在组执行位) chmod g+s /data/shared_dir
-rw-r--r-- 1 zhangsan devteam 0 Feb 25 10:00 report.txt
zhangsan:可读写(rw-)
devteam组:只读(r--)
其他用户:只读(r--)
drwxrws--T 2 root devteam 4096 Feb 25 10:05 /projects
root和devteam组有完全权限
其他人无访问权限
粘滞位防止误删除
最小权限原则:只授予必要权限
敏感文件保护:配置文件设为600
chmod 600 /etc/database.conf
脚本安全:
# 禁止执行不可信脚本 chmod a-x untrusted.sh # 需执行的脚本设为744 chmod 744 valid_script.sh
目录类型 | 推荐权限 | 命令示例 |
---|---|---|
用户家目录 | 700 | chmod 700 ~ |
网站根目录 | 755 | chmod 755 /var/www |
共享协作目录 | 770+SGID | chmod 2770 /team |
临时上传目录 | 1777 | chmod 1777 /uploads |
# 1. 检查当前用户和组 id # 2. 查看文件权限 ls -l path/to/file # 3. 检查父目录权限 namei -l path/to/file # 4. 检查AppArmor/SELinux限制 dmesg | grep avc # 5. 测试sudo执行 sudo -u www-data cat /var/log/app.log
三位一体:所有者、所属组、其他人
权限三元组:读(r)、写(w)、执行(x)
特殊权限位:粘滞位(t)、SUID、SGID
用户体系:root特权与普通用户隔离
ACL访问控制列表:精细权限管理
setfacl -m u:zhangsan:rwx shared_file
SELinux/AppArmor:强制访问控制
文件能力(Capabilities):分割root权限
审计子系统:监控权限使用
掌握Linux权限管理是系统安全的基石。本文深入解析了从基础权限到粘滞位的完整知识体系,通过理解这些机制,你将能构建更安全可靠的Linux环境。