5 用户与权限管理之权限和用户组
在上一篇文章中,我们深入探讨了 Linux 系统中的用户管理命令,学习了如何创建、修改和删除用户账号。本篇将集中讨论 Linux 系统中的权限和用户组的概念。理解这些内容对于有效管理系统安全至关重要。
一、Linux 权限概述
在 Linux 系统中,每个文件和目录都有其特定的访问权限,这些权限决定了用户是否能够读取、修改或执行某个文件。Linux 文件权限主要分为三种类型:
- 读取权限:
r
,允许查看文件内容或列出目录内容。 - 写入权限:
w
,允许修改文件内容或添加、删除目录中的文件。 - 执行权限:
x
,允许执行文件或进入目录。
每个文件或目录都有一个与之关联的拥有者(user)和一个用户组(group)。在 Linux 中,权限是基于用户、组和其他用户(others)来管理的。
权限表示法
Linux 使用符号表示权限,通过 ls -l
命令可以查看文件的权限。例如:
1 | ls -l /path/to/file |
输出示例如下:
1 | -rwxr-xr-- 1 alice users 4096 Sep 10 10:00 example.txt |
在这个输出中:
-
表示这是一个文件(d
表示目录)。rwx
表示文件拥有者alice
具有读、写和执行权限。r-x
表示用户组users
具有读和执行权限,但没有写权限。r--
表示其他用户具有读取权限。
权限的八进制表示法
Linux 还允许使用八进制数来设置权限。每个权限都对应一个特定的数字:
- 读取(
r
):4 - 写入(
w
):2 - 执行(
x
):1
因此,权限可以用 0 - 7 的数字表示。例如,权限 rwxr-xr--
对应的八进制数是 751
,计算方式如下:
- 拥有者权限(
rwx
)= 4 + 2 + 1 = 7 - 用户组权限(
r-x
)= 4 + 0 + 1 = 5 - 其他用户权限(
r--
)= 4 + 0 + 0 = 4
修改权限
使用 chmod
命令可以修改文件或目录的权限。例如,要将文件的权限设置为 751
,可以执行:
1 | chmod 751 /path/to/file |
二、用户组的概念
用户组是将多个用户组织在一起的一种方式,以便于管理权限和访问控制。Linux 系统允许创建和使用用户组,以便对一组用户赋予相同的权限。
查看和管理用户组
使用 groups
命令可以查看当前用户所属的所有组:
1 | groups username |
要查看系统中的所有用户组,可以使用 cat /etc/group
命令。
创建用户组
可以使用 groupadd
命令创建用户组。比如,要创建一个名为 developers
的组,可以执行:
1 | sudo groupadd developers |
将用户添加到组中
使用 usermod
命令可以将用户添加到特定组中:
1 | sudo usermod -aG developers alice |
这里,-aG
参数表示将用户添加到附加组中,而不移除其已有的组。
修改组权限
类似于文件权限,用户组也具有权限设置。使用 chown
命令可以更改文件或目录的所属用户组。例如:
1 | sudo chown :developers /path/to/file |
这里的 :
表示修改文件的用户组,而不改变文件的拥有者。
三、权限与用户组的案例
假设我们有一个项目目录 /project
,希望只有 developers
用户组的用户可以读取、写入和执行该目录中的文件,而其他用户无法访问。可以按照以下步骤操作:
创建
project
目录:1
mkdir /project
设置目录的用户组为
developers
:1
sudo chown :developers /project
修改目录权限,使得用户组具有完全访问权限,而其他用户无权限:
1
sudo chmod 770 /project
在这个例子中,770
的含义是:
- 拥有者具有读、写和执行权限(7)
- 用户组具有读、写和执行权限(7)
- 其他用户没有任何权限(0)
这样,只有属于 developers
组的用户才能访问、修改和执行 /project
目录中的文件。
小结
在本篇中,我们详细介绍了 Linux 系统的权限和用户组的基本概念,以及如何使用命令行工具来管理它们。对于系统管理员来说,合理的权限管理能够有效提高系统的安全性。
下篇文章将讨论 sudo
和访问控制的配置与使用,继续提升我们的 Linux 系统管理能力。
5 用户与权限管理之权限和用户组