【Linux】Linux权限—干货详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

一、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 进阶学习方向


提示:以下是本篇文章正文内容,下面案例可供参考

一、Linux权限基础:文件类型与权限标识

1.1 文件类型识别机制

与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  # 符号链接

1.2 权限字符串解析

权限字符串共10位,结构为:[类型][所有者权限][所属组权限][其他人权限]

drwxr-xr-x 解析:
d    : 目录文件
rwx  : 所有者有读、写、执行权限
r-x  : 所属组有读、执行权限(无写)
r-x  : 其他人有读、执行权限(无写)

二、Linux用户体系:权限管理的基石

2.1 用户分类与特点

用户类型 用户ID 特点 操作限制
root 0 超级管理员 无任何限制
系统用户 1-999 服务运行专用 无登录权限
普通用户 1000+ 日常操作账户 受限操作

2.2 用户管理核心命令

用户切换:
# 普通用户切换root(需密码)
$ su root
Password: ******

# root切换普通用户(无需密码)
# su username
$ su zhangsan

# 返回原用户
$ exit
用户创建与删除:
# 创建新用户
sudo adduser lisi

# 设置密码
sudo passwd lisi

# 删除用户
sudo userdel -r lisi

2.3 sudo权限管理

普通用户临时获取root权限执行命令:

$ sudo apt update  # 需要输入当前用户密码

配置sudo权限(编辑/etc/sudoers):

# 允许zhangsan执行所有命令
zhangsan ALL=(ALL) ALL

# 允许web组用户重启nginx服务
%web ALL=(root) /usr/sbin/service nginx restart

重要规则

  1. 使用visudo命令编辑,避免语法错误

  2. 新增用户默认无sudo权限

  3. 错误配置可能导致系统无法管理

三、文件权限操作:精细控制访问

3.1 权限修改(chmod)

符号模式:
# 添加执行权限
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)

3.2 所有权修改(chown/chgrp)

# 更改文件所有者
sudo chown zhangsan project.txt

# 同时更改所有者和所属组
sudo chown zhangsan:devgroup app

# 仅更改所属组
sudo chgrp devteam /data/shared

关键限制

  1. 只有root和文件所有者能更改权限

  2. 更改所有者必须使用sudo

  3. 用户必须属于新组才能被分配

四、目录权限与特殊位:高级控制机制

4.1 目录权限的特殊含义

权限 对文件的影响 对目录的影响
r 读取文件内容 查看目录内容(ls)
w 修改文件内容 创建/删除目录内文件
x 执行程序文件 进入目录(cd)

经典组合

  • rw-:文件的标准读写权限

  • r-x:目录的标准浏览权限

  • --x:可执行但不可见(特殊场景)

4.2 粘滞位(Sticky Bit):共享目录安全卫士

问题场景:

多人共享目录时,默认权限允许任意用户删除他人文件:

$ 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

粘滞位规则

  1. 仅目录可设置粘滞位

  2. 设置后目录权限末尾显示tT

  3. 文件只能被以下角色删除:

    • 文件所有者

    • 目录所有者

    • root用户

4.3 SUID/SGID:特殊执行权限

特殊位 设置命令 效果 典型应用
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

五、权限匹配规则:访问决策流程

5.1 权限检查流程

【Linux】Linux权限—干货详解_第1张图片

5.2 典型场景分析

场景1:用户编辑自己文件
-rw-r--r-- 1 zhangsan devteam 0 Feb 25 10:00 report.txt
  • zhangsan:可读写(rw-)

  • devteam组:只读(r--)

  • 其他用户:只读(r--)

场景2:共享目录协作
drwxrws--T 2 root devteam 4096 Feb 25 10:05 /projects
  • root和devteam组有完全权限

  • 其他人无访问权限

  • 粘滞位防止误删除

六、最佳实践与安全建议

6.1 权限设置原则

  1. 最小权限原则:只授予必要权限

  2. 敏感文件保护:配置文件设为600

    chmod 600 /etc/database.conf
  3. 脚本安全

    # 禁止执行不可信脚本
    chmod a-x untrusted.sh
    
    # 需执行的脚本设为744
    chmod 744 valid_script.sh

6.2 目录权限推荐

目录类型 推荐权限 命令示例
用户家目录 700 chmod 700 ~
网站根目录 755 chmod 755 /var/www
共享协作目录 770+SGID chmod 2770 /team
临时上传目录 1777 chmod 1777 /uploads

6.3 故障排查技巧

# 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

七、总结

7.1 Linux权限核心要点

  1. 三位一体:所有者、所属组、其他人

  2. 权限三元组:读(r)、写(w)、执行(x)

  3. 特殊权限位:粘滞位(t)、SUID、SGID

  4. 用户体系:root特权与普通用户隔离

7.2 进阶学习方向

  1. ACL访问控制列表:精细权限管理

    setfacl -m u:zhangsan:rwx shared_file
  2. SELinux/AppArmor:强制访问控制

  3. 文件能力(Capabilities):分割root权限

  4. 审计子系统:监控权限使用

掌握Linux权限管理是系统安全的基石。本文深入解析了从基础权限到粘滞位的完整知识体系,通过理解这些机制,你将能构建更安全可靠的Linux环境。

你可能感兴趣的:(Linux,linux,运维,服务器)