为什么需要用户与权限管理?

在Linux系统中,用户和权限管理是保障系统安全、合理分配资源的核心机制。想象一下,如果所有程序都以同一个身份运行,一旦某个程序被攻击,整个系统可能面临风险。而权限管理就像给不同用户分配不同的“钥匙”,让他们只能打开自己有权限的“门”,既保证资源合理使用,又防止误操作或恶意破坏。

一、用户与组的基本概念

1.1 用户与组的关系

  • 用户(User):每个使用系统的人或程序都对应一个用户,比如你用root管理系统,用www-data运行网站服务。
  • 组(Group):多个用户可以组成一个组,方便统一管理权限。例如,开发团队的成员可以加入同一组,共享文件权限。

比喻:用户是“个人”,组是“家庭”,一个用户可以属于多个组(主组+附加组),但只有一个主组。

1.2 UID与GID

  • UID(用户ID):每个用户有唯一的数字ID,root的UID固定为0,普通用户从1000开始(如Ubuntu)。
  • GID(组ID):每个组也有唯一数字ID,主组ID与用户ID一致。

二、用户管理基础

2.1 创建/删除用户

  • 创建用户useradd 用户名(需root权限)
  • 示例:useradd -m zhangsan-m表示自动创建家目录)
  • 设置密码passwd 用户名
  • 删除用户userdel -r 用户名-r删除家目录)

2.2 切换用户

  • 临时切换身份su - 用户名(加-表示切换环境变量,如sudo su -直接切换到root)
  • sudo提权:普通用户用sudo 命令执行管理员操作(无需切换root)
  • 示例:sudo apt update(Ubuntu)或yum update(CentOS)
  • 提示:需先将用户加入sudo组(usermod -aG sudo 用户名

三、文件权限详解

3.1 权限的含义(rwx)

文件权限用3组字符表示,每组对应用户(u)组(g)其他(o)的权限,格式为rwxrwxrwx
- r(读):4(二进制100),可查看文件内容(如cat
- w(写):2(二进制010),可修改/删除文件(需谨慎)
- x(执行):1(二进制001),可运行程序(文件)或进入目录(目录)

关键区别:目录的x权限是“进入目录”,而非“运行目录”;文件的x权限是“执行程序”。

3.2 权限表示方法

数字权限(简洁直观)

  • 直接用数字组合表示权限,格式为所有者权限+组权限+其他权限
  • 例:755 = 所有者rwx(7)+ 组r-x(5)+ 其他r-x(5)
  • 例:644 = 所有者rw-(6)+ 组r--(4)+ 其他r--(4)

符号权限(灵活精确)

u/g/o/a(用户/组/其他/所有)+ +/-/=(添加/移除/设置)+ r/w/x表示:
- 例:chmod u+x file.txt(给文件所有者添加执行权限)
- 例:chmod go-w directory(移除组和其他用户的写权限)

3.3 设置权限命令

  • 修改权限chmod [权限类型] 权限 文件
  • 数字:chmod 755 test.sh(所有用户可执行,所有者读写执行)
  • 符号:chmod u+r,g+w test.txt(用户+读,组+写)
  • 修改所有者/组
  • chown 新所有者:新组 文件(如chown root:www-data app.log
  • chgrp 新组 文件(仅修改组,需root权限)

四、目录权限的特殊规则

  • 目录权限优先级:进入目录需x权限,查看目录内容需r权限,创建/删除文件需w权限。
  • 例:目录data权限700(仅所有者可进入),目录public权限755(所有用户可进入)

五、特殊权限(高级)

5.1 SUID/SGID/SBIT

  • SUID(Set UID):让二进制程序临时拥有所有者权限(如passwd命令)
  • 设置:chmod u+s program(仅对可执行文件有效)
  • SGID(Set GID):让文件/目录的新内容继承组权限(如团队共享目录)
  • 设置:chmod g+s directory(目录下新建文件默认继承目录组)
  • SBIT(Sticky Bit):防止普通用户删除其他用户的文件(如/tmp目录)
  • 设置:chmod o+t directory

六、权限继承与默认权限

6.1 umask(默认权限掩码)

  • 作用:控制新建文件/目录的默认权限(如新建文件默认不执行,目录默认允许进入)
  • 查看umask(默认022,表示新建文件默认权限644,目录755
  • 修改:临时生效umask 002(永久生效需在/etc/profile~/.bashrc中配置)

七、常见问题与最佳实践

  1. 忘记密码root用户可通过passwd 用户名重置密码,普通用户需su -切换到root执行。
  2. 最小权限原则:仅给用户分配必要权限(如www-data仅需访问网站目录)。
  3. 避免root日常操作:用普通用户+sudo,防止误操作(如删除系统文件)。
  4. 定期检查权限find / -perm -600(查找高危权限文件,600表示仅所有者可读写)。

通过以上内容,你应该能初步掌握Linux用户与权限管理的核心逻辑。后续可结合实际场景(如搭建Web服务器、部署程序)加深理解,重点注意“权限对文件/目录的不同影响”和“数字权限与符号权限的转换”。

小夜