正文
1. 用户与用户组的基本概念
1.1 用户
在 Linux 系统中,用户是系统资源的使用者。每个用户都有一个唯一的用户 ID(UID),系统通过 UID 来识别用户。用户可以分为以下几类:
- 超级用户(root):拥有系统的最高权限,UID 为 0。
- 系统用户:用于运行系统服务或应用程序,UID 通常为 1-999。
- 普通用户:由管理员创建,用于日常操作,UID 通常从 1000 开始。
1.2 用户组
用户组是用户的集合,用于简化权限管理。每个用户组也有一个唯一的组 ID(GID)。用户组可以分为以下几类:
- 主用户组:用户创建时默认加入的组。
- 附加用户组:用户可以加入多个附加用户组,以获得额外的权限。
2. 用户与用户组的管理
2.1 用户管理
2.1.1 创建用户
使用 useradd
命令可以创建新用户。例如,创建一个名为 alice
的用户:
sudo useradd alice
2.1.2 设置用户密码
使用 passwd
命令可以为用户设置密码:
sudo passwd alice
2.1.3 修改用户属性
使用 usermod
命令可以修改用户的属性。例如,将用户 alice
的主目录改为 /home/alice_new
:
sudo usermod -d /home/alice_new alice
2.1.4 删除用户
使用 userdel
命令可以删除用户。例如,删除用户 alice
:
sudo userdel alice
2.2 用户组管理
2.2.1 创建用户组
使用 groupadd
命令可以创建新用户组。例如,创建一个名为 developers
的用户组:
sudo groupadd developers
2.2.2 将用户加入用户组
使用 usermod
命令可以将用户加入用户组。例如,将用户 alice
加入 developers
组:
sudo usermod -aG developers alice
2.2.3 删除用户组
使用 groupdel
命令可以删除用户组。例如,删除用户组 developers
:
sudo groupdel developers
3. 文件权限管理
3.1 文件权限的基本概念
在 Linux 中,每个文件和目录都有权限设置,用于控制用户对文件的访问。权限分为三类:
- 所有者权限:文件所有者的权限。
- 组权限:文件所属用户组的权限。
- 其他用户权限:其他用户的权限。
每类权限又分为三种:
- 读权限(r):允许读取文件内容或列出目录内容。
- 写权限(w):允许修改文件内容或在目录中创建、删除文件。
- 执行权限(x):允许执行文件或进入目录。
3.2 查看文件权限
使用 ls -l
命令可以查看文件的权限。例如:
ls -l file.txt
输出示例:
-rw-r--r-- 1 alice developers 1024 Oct 1 12:34 file.txt
其中,-rw-r--r--
表示文件权限,alice
是文件所有者,developers
是文件所属用户组。
3.3 修改文件权限
使用 chmod
命令可以修改文件权限。例如,将 file.txt
的权限设置为 rw-rw-r--
:
chmod 664 file.txt
或者使用符号模式:
chmod u=rw,g=rw,o=r file.txt
3.4 修改文件所有者和用户组
使用 chown
命令可以修改文件的所有者和用户组。例如,将 file.txt
的所有者改为 bob
,用户组改为 staff
:
sudo chown bob:staff file.txt
4. 特殊权限
4.1 SUID(Set User ID)
SUID 权限允许用户以文件所有者的权限执行文件。例如,/usr/bin/passwd
文件通常具有 SUID 权限,允许普通用户修改自己的密码。
设置 SUID 权限:
chmod u+s file
4.2 SGID(Set Group ID)
SGID 权限允许用户以文件所属用户组的权限执行文件。对于目录,SGID 权限使得在该目录中创建的文件继承目录的用户组。
设置 SGID 权限:
chmod g+s file
4.3 Sticky Bit
Sticky Bit 权限用于目录,允许只有文件所有者才能删除或重命名文件。例如,/tmp
目录通常具有 Sticky Bit 权限。
设置 Sticky Bit 权限:
chmod +t directory
5. ACL(访问控制列表)
5.1 ACL 的基本概念
ACL 提供了更细粒度的权限控制,允许为特定用户或用户组设置权限。
5.2 查看 ACL
使用 getfacl
命令可以查看文件的 ACL。例如:
getfacl file.txt
5.3 设置 ACL
使用 setfacl
命令可以设置文件的 ACL。例如,允许用户 bob
读写 file.txt
:
setfacl -m u:bob:rw file.txt
5.4 删除 ACL
使用 setfacl
命令可以删除文件的 ACL。例如,删除用户 bob
的 ACL 条目:
setfacl -x u:bob file.txt
6. 用户与权限管理的实践
6.1 创建多用户环境
在一个开发团队中,通常需要为每个成员创建独立的用户账户,并将他们加入同一个用户组。例如:
sudo useradd -m -G developers alice
sudo useradd -m -G developers bob
6.2 设置共享目录
为了方便团队成员共享文件,可以创建一个共享目录,并设置适当的权限。例如:
sudo mkdir /shared
sudo chown root:developers /shared
sudo chmod 2775 /shared
其中,2775
表示设置 SGID 权限,并允许用户组读写。
6.3 使用 ACL 进行精细控制
如果需要对特定用户进行更精细的权限控制,可以使用 ACL。例如,允许用户 alice
读写 /shared
目录中的所有文件:
sudo setfacl -R -m u:alice:rw /shared
7. 总结
Linux 的用户与权限管理是系统安全的重要组成部分。通过合理配置用户、用户组、文件权限和 ACL,可以有效控制用户对系统资源的访问,确保系统的安全性和稳定性。掌握这些技能,对于系统管理员和开发人员来说至关重要。
结语
感谢您的阅读!期待您的一键三连!欢迎指正!