为什么需要用户与权限管理?¶
在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中配置)
七、常见问题与最佳实践¶
- 忘记密码:
root用户可通过passwd 用户名重置密码,普通用户需su -切换到root执行。 - 最小权限原则:仅给用户分配必要权限(如
www-data仅需访问网站目录)。 - 避免root日常操作:用普通用户+
sudo,防止误操作(如删除系统文件)。 - 定期检查权限:
find / -perm -600(查找高危权限文件,600表示仅所有者可读写)。
通过以上内容,你应该能初步掌握Linux用户与权限管理的核心逻辑。后续可结合实际场景(如搭建Web服务器、部署程序)加深理解,重点注意“权限对文件/目录的不同影响”和“数字权限与符号权限的转换”。