如果您正在管理具有多个用户的服务器,那么就会有一个杂耍行为。管理谁可以读取和写入目录以及谁可以读取文件需要一些额外的工具。在 Linux 中,这是通过组来完成的。让我们看看如何管理这些,尤其是如何在 Linux 中将用户添加到组中。
Linux 文件权限初学者教程
首先,这些例子都是在Linux 发行版 Ubuntu下测试的。不过,无论您运行的是哪种 Linux,它们都应该能够正常工作。
在 Linux 中管理对文件和目录的访问使用一组权限。如果您查看这些,通过从命令行键入ls -l ,它看起来像这样:
第一个数字通常是空白的,或者对于目录,您会看到一个d。之后,您将看到 3 位数字表示用户权限,3 位表示组权限,3 位表示其他所有人。这些数字(几乎总是字母)代表读(r)、写(w)和执行(x)。请注意,最后一个不仅用于运行程序。没有执行权限,用户根本无法进入目录。
考虑到这一点,我们可以看到上面的示例是一个目录。目录的所有者 ( jeff ) 具有完全访问权限(读取、写入和执行)。目录所属组的成员 ( jeff ) 可以更改到该目录并读取其文件,但不能写入。所有其他用户也是如此,因为最后 3 个权限将其设置为全球可读和全球可执行。
为什么我应该在 Linux 中使用组?
假设您有一个多个用户需要访问的目录。不过,这里的问题是一些用户需要完全的读写权限。其他人,您只想能够在那里读取文件,而不是创建它们。
例如,假设我们有五个用户(jeff、olivia、bruce、stacey和samantha)。其中两个用户jeff和samantha是编辑者,需要能够读取和写入目录中的文件。另一方面,用户olivia、bruce和stacey需要对不同目录的读取权限,以便他们可以读取文件但不能进行更改。
创建您的组和组目录
为此,您需要创建两个组,读者和编辑。假设您已经创建了用户,是时候创建组了。我们将使用addgroup命令来做到这一点。
addgroup readers
addgroup editors
您可以通过发出命令less /etc/group来确认已创建组。
接下来,让我们创建两个目录,reader和editors。这些命令可以解决问题。
sudo mkdir /READERS
sudo mkdir /EDITORS
完成后,就可以设置目录的访问权限了。您将每个目录分配到其相应的组,然后设置权限。
sudo chown -R :readers /READERS
sudo chown -R :editors /EDITORS
这些命令更改每个目录的组所有权。
sudo chmod -R g-w /READERS
sudo chmod -R o-x /READERS
第一个命令中的g告诉 Linux 我们要更改组权限。此命令阻止读者组中的用户写入目录。第二个命令从该目录的其他命令中删除x位(注意-x之前的o)。这可以防止非组成员访问其中的任何文件。
在这些命令之后,只有目录的所有者 (root) 和reader组的成员才能访问/READERS目录中的文件。
接下来,我们将设置/EDITORS目录以允许对组编辑器的成员进行写访问。除了 root 之外,没有其他人可以访问这些文件。
sudo chmod -R g+w /EDITORS
sudo chmod -R o-x /EDITORS
请注意,这一次,第一个命令是将w位添加到目录权限中。这将允许组编辑器写入文件。现在,root 将拥有对/EDITORS目录的完全访问权限, editors组将能够写入其中的文件,其他任何人都无法访问这些文件。
在 Linux 中将用户添加到组
到目前为止,这些命令不会完成太多。这些组是空的,所以我们需要将我们的用户添加到他们各自的组中。首先,我们将用户jeff和samantha添加到editors组。
sudo usermod -a -G editors jeff
sudo usermod -a -G editors samantha
接下来,我们将用户olivia、bruce和stacey添加到读者组。
sudo usermod -a -G readers olivia
sudo usermod -a -G readers bruce
sudo usermod -a -G readers stacey
这就是在 Linux 中将用户添加到组的方法。现在我们的用户可以访问他们需要的文件。您可以通过查看/etc/group文件来检查哪些用户是每个组的成员。它应该看起来与此类似。
Linux 中更高级的访问控制
现在,假设您希望您的 editors 组的成员对目录/DATA具有写入权限。同时,您的编辑者需要对该目录具有完全的读/写权限。这有点棘手,因为 Linux 一次只允许一个组拥有文件或目录的所有权。
幸运的是,有办法。使用访问控制列表 (ACL),您可以授予一个组读取权限和另一组读取/写入权限。下面介绍了如何为读者组的成员提供正确的访问权限。
sudo setfacl -m g:readers:rx -R /DATA
现在,让我们给编辑者读写权限。
sudo setfacl -m g:editors:rwx -R /DATA
使用访问控制列表可以完成更多工作,但这是一个很好的开始。
多个用户在 Linux 中一起玩得很好,但要小心
这演示了如何为多个用户授予对目录的访问权限。但请记住,计算机上的每个用户都可能存在自己的安全风险。设置有关密码强度和安全性的适当策略也很重要。
教育您的用户设置强密码。这些也不必是字母、数字和符号的随机序列。他们也可以使用安全密码,但前提是您的政策允许。您还需要确保每个用户都知道如何更改他们的密码。