Linux 是一个多用户多任务的操作系统。正确地设置文件权限和管理用户是保障系统安全与资源分配效率的关键。本节将带你深入了解 Linux 的文件权限结构、权限修改方法以及用户和用户组的管理方式。
一、文件权限概述
每个文件或目录都有一组权限,用来控制所有者(owner)、**所属组(group)和其他用户(others)**的访问权限。通过 ls -l
可以查看权限信息:
ls -l filename
输出示例:
-rwxr-xr-- 1 root users 1024 Apr 2 10:30 filename
权限位详解:
字段 | 含义 |
---|---|
第一位 | 文件类型(- 普通文件,d 目录,l 链接等) |
接下来 9 位 | 权限标志,分为所有者、组、其他用户,每 3 位表示 r 读、w 写、x 执行权限 |
例如:rwxr-xr--
表示:所有者可读写执行,组用户可读执行,其他人只读
二、修改文件权限
1. 使用 chmod
修改权限
-
符号法:
chmod u+x filename # 给所有者加执行权限 chmod g-w filename # 去掉组用户的写权限 chmod o=r filename # 设置其他用户为只读
数字法(最常用):
-
权限数字编码规则:r=4,w=2,x=1
所有者 / 组 / 其他用户分别相加,如:chmod 755 filename # rwxr-xr-x chmod 644 filename # rw-r--r--
2. 使用
chown
修改所有者和组 -
chown newuser filename # 改变文件所有者 chown newuser:newgroup filename # 改变文件所有者和所属组
3. 使用
chgrp
修改组: -
chgrp newgroup filename
三、用户与用户组管理
1. 添加用户
- sudo adduser username
或更基本的:-
sudo useradd username
sudo passwd username # 设置密码 -
2. 删除用户 - sudo deluser username
# 或同时删除主目录和相关文件
sudo userdel -r username -
3. 修改用户信息
-
usermod -l newname oldname # 修改用户名 usermod -g newgroup username # 修改主组 usermod -aG group username # 附加到某组(常用于 sudo 权限)
4. 添加用户组
-
sudo addgroup groupname
-
5. 查看用户信息
-
id username # 查看 UID、GID 和组成员 groups username # 查看用户所在的组
四、特殊权限(SUID, SGID, Sticky Bit)
-
类型 作用 表现 SUID 用户执行文件时使用所有者权限 chmod u+s filename
,显示为s
SGID 用户执行时使用组权限或目录继承组权限 chmod g+s filename
Sticky Bit 目录下文件只能由所有者删除 chmod +t /tmp
,显示为t
五、文件默认权限(umask)
umask # 查看默认权限掩码
umask 022 # 设置默认权限(影响新建文件)
六、sudo 权限管理
-
修改用户为超级用户的一种方式:
-
usermod -aG sudo username
临时使用超级权限执行命令:
-
sudo command
-
七、系统用户文件 -
文件 说明 /etc/passwd
所有用户的基本信息(用户名、UID、GID、主目录、shell 等) /etc/group
所有组的信息 /etc/shadow
用户的加密密码等敏感信息 /etc/sudoers
sudo 权限配置,需使用 visudo
编辑
八、小结
掌握 Linux 文件权限与用户管理是系统安全的基石。合理的权限划分和用户组管理能最大程度降低系统风险,同时也能提升运维效率。