介绍
Linux 是一个多用户操作系统。这意味着多个用户可以同时使用同一台 Linux 计算机,每个用户都有自己的私有空间和文件,同时也可以共享一些系统资源。本实验将向你介绍 Linux 中用户管理和文件权限的基础知识,这些概念对于系统管理和安全性至关重要。
Linux 是一个多用户操作系统。这意味着多个用户可以同时使用同一台 Linux 计算机,每个用户都有自己的私有空间和文件,同时也可以共享一些系统资源。本实验将向你介绍 Linux 中用户管理和文件权限的基础知识,这些概念对于系统管理和安全性至关重要。
在 Linux 中,每个用户都有一个唯一的用户名。让我们从识别当前登录的用户开始。
打开终端并输入以下命令:
whoami
whoami
命令是一个简单的工具,用于显示当前用户的用户名。
你应该会看到类似以下的输出:
labex:project/ $ whoami
labex
这表明你当前以用户 "labex" 的身份登录。
现在,让我们创建一个新用户。在 Linux 中,创建新用户需要管理员权限。我们将使用 sudo
命令来获取这些权限。
sudo
是 "Superuser Do" 的缩写。它允许普通用户以超级用户(或 root 用户)的身份执行命令。
在创建新用户之前,让我们先讨论一下主组(primary group)的概念。在 Linux 中,每个用户都属于一个主组,并且可以属于多个辅助组(secondary groups)。主组通常用作用户创建文件的组所有者。
当你使用 adduser
创建新用户时,它会自动为该用户创建一个与用户名相同的主组。这被称为用户私有组(User Private Group, UPG)方案。
输入以下命令以创建一个名为 "jack" 的新用户:
sudo adduser jack
此命令将执行以下操作:
/home/jack
下为 jack 创建一个主目录系统会提示你为 jack 设置密码并提供一些附加信息。你可以设置一个简单的密码(例如 "password"),然后按 Enter 键以使用其他信息的默认值。
创建用户后,让我们确认是否为 jack 创建了主目录,并检查 jack 的主组:
ls /home
id jack
id
命令将显示 jack 的用户 ID(UID)、主组 ID(GID)以及任何辅助组。
在 Linux 中,用户组是一种用于组织多个用户以进行权限管理的方式。每个用户都有一个主组,并且可以属于多个辅助组。让我们探索当前用户所属的组:
id labex
你应该会看到类似以下的输出:
uid=5000(labex) gid=5000(labex) groups=5000(labex),27(sudo),121(ssl-cert),5002(public)
这表明:
labex
的用户 ID(UID)为 5000labex
的主组名为 labex
,组 ID(GID)为 5000labex
属于多个辅助组,包括 sudo
、ssl-cert
和 public
现在,让我们查看系统中的所有组:
cat /etc/group | sort
cat
命令用于显示文件内容,/etc/group
是存储组信息的位置,而 | sort
则按字母顺序对输出进行排序。
要仅查看与 labex
相关的组,请使用:
cat /etc/group | grep -E "labex"
grep
是一个强大的搜索工具。此命令在组文件中搜索包含 "labex" 的行。
让我们创建一个名为 "developers" 的新组,并将新用户 "jack" 添加到该组中:
首先,创建新组:
sudo groupadd developers
现在,将 jack 添加到 developers 组:
sudo usermod -aG developers jack
usermod
命令用于修改用户账户。-aG
选项将用户添加到一个辅助组中。
要验证 jack 现在是否是 developers 组的成员,请使用:
groups jack
你应该会看到 "developers" 列在 jack 的组列表中。
现在我们已经创建了用户 jack
,让我们通过将他添加到 sudo
组来赋予他 sudo 权限。但首先,让我们了解为什么这很重要:
将用户添加到 sudo 组允许他们以超级用户或 root 权限执行命令。这有以下几个好处:
要将 jack 添加到 sudo 组,请使用以下命令:
sudo usermod -aG sudo jack
此命令使用 usermod
来修改用户账户。-aG
选项表示“追加到组”,因此它将 jack 添加到 sudo 组,而不会将他从其他组中移除。
将 jack 添加到 sudo 组后,你可以通过以下命令验证他的组成员身份:
sudo groups jack
你应该会看到 sudo
列在 jack 的组列表中。
通过将 jack 添加到 sudo 组,我们赋予了他执行系统管理任务的能力。然而,重要的是要记住,能力越大,责任越大。拥有 sudo 权限的用户应该是可信的,并且了解其操作的潜在影响,因为他们可能会影响整个系统。
在 Linux 中,文件权限和所有权对系统安全至关重要。让我们探索这些概念并学习如何操作它们。
/home
目录中的当前权限:ls -l /home
你将看到类似以下的输出:
total 8
drwxr-xr-x 2 jack jack 4096 Jul 30 10:00 jack
drwxr-xr-x 5 labex labex 4096 Jul 30 09:55 labex
让我们分解一下这些信息的含义:
d
表示目录,-
表示普通文件)r
表示读取权限,w
表示写入权限,x
表示执行权限touch /home/labex/testfile
ls -l /home/labex/testfile
sudo chown jack:jack /home/labex/testfile
ls -l /home/labex/testfile
touch
命令用于创建一个空文件。最初,文件将由 labex 拥有。然后我们使用 chown
将所有权更改为 jack(用户和组)。
为什么要更改所有权?在 Linux 中,文件所有者对其文件拥有特殊权限。通过更改所有权,我们赋予 jack 对该文件的完全控制权。
sudo chmod 750 /home/labex/testfile
ls -l /home/labex/testfile
chmod
命令用于更改文件的权限。数字 750 是一种简写方式,用于设置权限:
此权限设置意味着:
为什么要设置这些权限?这是一种常见的权限设置,允许所有者完全访问,赋予组有限的访问权限,并限制其他用户的访问。这是可用性和安全性之间的平衡。
理解文件权限和所有权在 Linux 中至关重要。它使你能够控制谁可以读取、修改或执行文件,这是系统安全和用户隐私的基础。随着你继续使用 Linux,你会发现自己经常使用这些命令来管理对文件和目录的访问。
恭喜!你已经完成了 Linux 用户组和文件权限实验。你学会了如何:
这些技能对于在 Linux 环境中管理用户和保护文件至关重要。随着你继续学习 Linux,你会发现这些概念对于系统管理和安全性是必不可少的。