在本文中,我们将探讨正确组织 Linux 用户的重要性。我们将描述访问权限,从如何创建和配置用户开始,到如何授予对特定文件和文件夹的访问权限结束。我们还将讨论一些重要的安全工具,例如 sudo 和 SELinux,它们有助于保护系统免受不必要的活动的影响。
Linux 中用户管理和访问权限的重要性
在 Linux 世界中,用户管理和访问权限至关重要。不妨将 Linux 想象成一栋大型公寓,每个用户都是租户,每个文件都是一个房间。用户管理就像是为每个租户分配一把唯一的钥匙,而访问权限则相当于他们在自己的房间里可以执行的操作。
用户创建时,会被分配一个名称和一个唯一标识符(UID),就像公寓的专属钥匙一样。用户还会加入一个群组,与其他租户联系在一起。群组就像一个俱乐部,成员之间共享共同的权限。
文件访问权限分为三类:所有者(用户)、用户组和其他用户。每个键(用户)在每个类别中都可以拥有独特的读取、写入和执行权限。例如,文件所有者可能拥有读取和写入权限,用户组可能只有读取权限,而其他用户则没有任何权限。
Linux 系统中使用的sudo和SELinux等安全策略值得特别关注。sudo 是一个特殊命令,它允许普通用户临时使用超级用户(root)权限来执行通常只有管理员才能执行的特定任务。这有助于防止意外错误或滥用超级用户权限。使用sudo时,用户通常需要输入密码以确认身份。之后,他们可以根据sudoers文件中设置的规则,以超级用户(root)权限执行命令。
SELinux是 Linux 操作系统的一层额外安全防护。它监控系统中可以使用的程序和文件,并限制对它们的访问,以防止入侵和攻击。这通过阻止黑客攻击或恶意行为,提高了服务器的安全性。
创建和管理用户
如何在 Linux 中创建用户
Linux 用户通常使用useradd命令创建。例如,要创建一个名为“username”的用户,您需要输入:
useradd username
如何设置 Linux 用户密码
用户创建后,其帐户未设置密码保护。要为新用户设置密码,请使用passwd命令:
passwd username
其中用户名是要设置密码的用户的名称。
如何在 Linux 中查看用户列表
要在 Linux 系统中使用终端中的单个命令查看用户列表,可以使用cut命令:
cut -d: -f1 /etc/passwd
该命令读取/etc/passwd文件的内容,该文件包含有关所有用户的信息。
要获取有关特定用户的信息,可以使用以下命令:
id username
这将显示用户的UID、GID和组。
删除 Linux 用户
要删除用户,请使用userdel命令:
userdel username
但是,此命令不会删除用户主目录中的文件。要删除它们,可以使用-r选项:
userdel -r username
这将删除用户名及其主目录及其内的所有文件。
修改 Linux 用户
要修改用户信息,请使用usermod命令。该工具使用以下语法:
usermod argument user
该实用程序的帮助中显示了可能的参数的完整列表:
例如,要更改用户的主目录,您可以使用以下命令:
usermod -d /new/path/to/directory username
在 Linux 中创建和管理用户组
Linux 中的用户组允许管理员将具有类似访问权限的用户分组。这有利于访问权限的管理,并通过允许在组级别设置权限(而不是为每个用户单独设置权限)来增强系统安全性。作为示例,我们将考虑具有用户管理员的开发人员组。
如何在 Linux 中创建用户组
要创建新组,请使用groupadd命令并传入新组的名称:
sudo groupadd group_name
在我们的示例中,命令如下所示:
sudo groupadd developers
如何在 Linux 中删除用户组
要删除组,请使用groupdel命令:
sudo groupdel group_name
因此,命令:
sudo groupdel developers
将删除名为developers 的组。
将用户添加到组
要将用户添加到特定组,请使用usermod命令:
sudo usermod -aG group_name user_name
例如:
sudo usermod -aG developers admin
此命令会将名为admin 的用户添加到developers组。
从组中删除用户
要从组中移除用户,请使用deluser命令:
sudo deluser user_name group_name
将用户admin从开发者组中移除的命令:
sudo deluser admin developers
在 Linux 中查看组列表
要查看系统中所有组的列表,请使用cat命令并结合/etc/group文件:
cat /etc/group
此命令将显示系统中所有组的列表。
检查用户组成员身份
执行操作后,您可以使用 groups 命令检查用户属于哪些组:
groups user_name
至此,我们了解了 Linux 中管理用户组的基础知识。现在,让我们进入下一阶段 - 检查文件和目录的访问权限分配。此过程允许确定用户或组可以对特定文件和目录执行哪些操作,确保有效的安全管理和对系统资源的访问。
分配文件和目录的访问权限
访问权限的符号表示
正如我们已经了解到的,Linux 中有 3 类用户:所有者(用户)、组和其他用户。每一类用户都可能拥有对文件或目录的特定访问权限:
- 读取(Read - r):允许查看文件或目录的内容。
- 写入(Write - w):提供在目录内修改文件或创建新文件的功能。对于目录,这还允许从中删除文件。
- 执行(Execute - x):允许执行文件(如果它是可执行文件)或进入目录(如果它是目录)。
在 Linux 系列系统中,访问权限由 10 个字符组成的字符串表示。第一个字符表示文件类型(常规文件、目录等),其余九个字符是三组字符,每组三个字符,分别表示用户组。为了便于理解,我们来看一个例子。
访问权限-rwxr-xr-- 的含义:
- 第一个字符 (-) 表示文件类型(在本例中为常规文件)。
- 所有者的三个字符(rwx)表明所有者具有读、写和执行权限。
- 组的三个字符(rx)表示组成员仅具有读取和执行权限。
- 三个字符为其他(r--)表示其他用户只能读取该文件。
访问权限使用chmod命令设置,语法如下:
chmod [options] mode file(s)
地点:
- [选项] - 附加参数,例如 -R 用于递归更改目录及其子目录中的访问权限。
- 模式 - 一个特殊字符串,指定更改哪些访问权限以及更改对象。模式可以用符号 (r、w、x) 和位 (0 或 1) 指定。也可以使用模式的数值(我们稍后会讨论它们)
- 文件——应用更改的文件或目录。
这个实用程序是一个非常强大的工具,所以我们只看几个基本命令作为示例。
更改文件的访问权限,使所有者具有读写权限,组仅具有读取权限,而其他用户无权:
chmod u=rw,g=r,o= filename
设置所有用户对文件的读写访问权限:
chmod a+rw filename
递归更改目录中所有文件和子目录的访问权限:
chmod -R u+rwx directory
访问权限的数字表示
在数字表示中,每个用户类别(所有者、组、其他)都有其编号,这些数字的组合设置了最终的访问权限。与符号表示类似,这三种权限中的每一种都有其值,但在数字表示中:
- 读取(读取)-值 4
- 写入(写入)-值 2
- 执行(执行)-值1
数值也用于确定用户类型:
- 文件所有者(用户)- 第一位数字
- 所有者的群组(group)- 第二位数字
- 其他用户(others)-第三位数字
因此,文件访问权限的完整数字表示由三位数字组成,每位数字代表特定用户类别的权限值的总和。这比使用 10 个字符的符号表示更方便。在这种情况下,管理看起来如下:
chmod XYZ file
其中X、Y和Z分别是代表所有者、组和其他用户的访问权限的数字。
例如,要授予所有者完全访问权限(读取、写入和执行),而组和其他用户仅授予读取和执行权限,可以使用以下命令:
chmod 755 file
让我们考虑其他例子:
chmod 700 file
只有所有者才有读取、写入和执行的权限,而组和其他用户没有访问权限。
chmod 644 file
所有者具有读写权限,而组和其他用户仅具有读取权限。
chmod 751 file
所有者具有全部权限,组具有读取和执行权限,其他用户仅具有执行权限。
正如我们前面提到的,该工具具有非常广泛的功能。在某些情况下,“帮助”部分中提供的选项不够用:
请注意最后一行。使用此命令可以打开关于该工具的更详细文档。您还可以访问该实用程序的官方维基百科页面,在那里可以找到有关 Chmod 的详细信息。
结语
Linux 用户及其管理对于操作系统的安全性和稳定运行至关重要。在本文中,我们强调了 Linux 中有效的用户和访问权限管理的重要性,涵盖了用户的创建和管理、与用户组的合作以及分配文件和目录的访问权限。