在本教程中,我们将介绍 Linux 中的 chown 命令。 Linux 操作系统被设计为安全的,并且只允许那些具有所需权限的用户访问文件。 每个文件都有特定的所有者,只有这些所有者才能查看或编辑文件。 让我们详细了解一下 chown 命令,并了解可以与系统内文件交互的不同类型的权限和所有者。
Linux 中的文件权限
Linux 中任何给定文件的所有者都分为三种类型:
- 用户: 默认情况下,文件的创建者成为所有者。 创建者还具有读写访问权限。
- 团体: 在 Linux 中,我们还可以创建一组不同的用户。 该组的每个成员都共享相同的权限集。 当我们需要为多个用户分配同一组访问权限时,组很有用。
- 其他: 尚未创建文件的用户。 该用户也不属于有权访问该文件的用户组。
授予用户的权限,控制用户对文件的访问。 Linux 中为用户定义的各种权限是读、写和执行。
- 它允许允许的用户打开和读取文件。 对目录具有“读取”权限的用户可以列出该目录的内容。
- 写: 它允许用户更改文件的内容。 对于目录,用户将能够重命名、添加和移动存储在其中的文件。 假设用户是否仅对文件具有写权限。 该权限允许用户修改文件中的内容。 但是,用户不能从目录中重命名、移动或删除文件。
- 执行: 它允许用户运行程序代码。 在目录的情况下,用户将能够查看其内容。
Linux 中权限是如何表示的
文件权限用三位八进制代码表示:
- r – 读
- w – 写
- X – 执行
八进制 | 二进制 | 符号 |
0 | 0 | — |
1 | 1 | -X |
2 | 10 | -w- |
3 | 11 | -wx |
4 | 100 | r– |
5 | 101 | 接收 |
6 | 110 | rw- |
7 | 111 | rwx |
其他用户可能不需要对文件所有者有用的数据,并且授予他们不必要的访问权限可能会造成数据滥用的漏洞。 因此,Linux 根据用户的数据需求对其用户进行分类,然后将可访问性分配给每个类别。 然后,我们可以在 Linux 中使用 chown 命令更改特定文件/目录的用户类别。
Linux 中 chown 命令的基本语法如下:
chown <options> user:group <filename>
语法中的每个属性都可以理解为:
- 选项 – 这些提供了有关如何执行命令的附加信息和规范(这些是可选的)。
- 用户 – 它是新所有者的用户名或用户 ID。
- 团体 – 它是组名或组 ID
Linux chown 命令使用说明
让我们开始使用我们将为此演示创建的示例文件。 我将这个文件命名为“LinuxForDevices.txt“。
我们使用 ls 命令列出文件及其权限和所有者详细信息。 如您所见,文件的所有者和组所有者是 鼻子 而权限是 读-写-读-写-读.
- 首先 rw- 表示单个用户所有者的权限。 (在这种情况下是读写)
- 第二 rw- 代表组所有者的权限(在这种情况下是读写)
- 最后, r– 表示既没有创建文件也没有明确的访问权限的“其他”用户的权限。 (此文件对此类用户是只读的)
1. 使用 Linux chown 命令更改组
让我们将默认组从“ninad”更改为“sudo”。 这 ”sudo” 组是所有有权访问的用户的组 sudo 特权。
chown ninad:sudo LinuxForDevices.txt
或者,您可以跳过“用户名”部分,只需键入冒号,后跟要更改文件所有者的组名。
chown :sudo LinuxForDevices.txt
2. 在 Linux 中使用 chown 命令更改文件用户
现在我们知道如何使用 chown 命令更改文件组所有者,让我们更改用户。 这真的很简单。 我们只需将命令中的用户名部分更改为所需的用户名。
在这种情况下,我会将文件所有者更改为 根 因此我需要使用 sudo.
sudo chown root:sudo LinuxForDevices.txt
完美的! 如您所见,文件的所有者现在是 root。 但是当前用户仍然可以访问该文件,因为它属于“Sudo”组。
如果您没有在用户名后指定组名,只需键入 <username>:
,组名会自动改成用户的默认登录组,也就是用户名本身。
sudo chown ninad: LinuxForDevices.txt
您可能会注意到,用户组也已更改为 ninad。
3.根据另一个文件更改文件所有者
这 -参考 选项允许我们复制另一个文件对当前文件的所有者。 让我们看一个例子来说明它是如何工作的。 为了演示,我将创建另一个文件并将文件的所有者更改为 根:根。
sudo chown --reference=LinuxForDevices.txt Linux.txt
我们创建了一个名为 Linux.txt 所有者为 root:root。 然后我们参考 LinuxForDevices.txt 需要从中复制所有者的文件。 这将允许我们更改所有者 Linux.txt 是一样的。
4. 带有符号链接的 Linux chown 命令
默认情况下,如果您更改符号链接的所有者详细信息,原始文件的所有者将被更改。 看看下面的演示。
sudo chown root:sudo Linux-symlink
但是,如果您想更改符号链接的所有者而不是原始文件怎么办? 使用 chown -h 选项,您可以仅更改符号链接的所有者,而不能更改原始文件的所有者。
chown -h ninad:sudo Linux-symlink
通过比较本节中的两个屏幕截图,可以很容易地看出差异。
5. 在 Linux 中使用 chown 命令更改多个文件的所有者
一次更改一个文件所有者是一种选择。 但是当有数百个文件时,这不是一个可行的选择。 在这种情况下,您可以使用 Linux 中的默认通配符以及 Linux 中的 chown 命令来处理多个文件。 或者,您也可以单独列出用空格分隔的文件名。
chown <username>:<group> file1 file2 file3
这是一个例子:
chown ninad:sudo * OR chown ninad:sudo Linux.txt LinuxForDevices.txt Linux-symlink
所有文件现在都有一个新的所有者组 sudo.
6.递归更改文件的所有者
为了演示这一点,我将创建一个文件夹层次结构并更改所有文件夹和子文件夹的所有者以及其中的文件。 我在 folder1 中创建了 folder2,并将上面演示中的三个文件移到了该文件夹中。
chown -R ninad: folder1
如您所见,所有文件现在都具有更改的组。 我们在 Linux 中使用 chown 命令执行的新所有者设置已应用于我们初始目录的所有文件夹、子文件夹和文件。
7.根据现有所有者更改文件的权限
Linux 中的 chown 命令提供了一个命令选项 -从 这允许我们更改仅具有指定所有者的文件的所有者。
chown --from=ninad:ninad ninad:sudo folder1/
上述命令会将所有者更改为 ninad:sudo 仅当现有所有者为 ninad:ninad 时。
结论
至此,我想结束我们关于 Linux 中 chown 命令的教程和参考指南。 您可以使用 man 命令了解有关 chown 命令的更多信息,并了解该命令不常用的选项。 我希望本教程可以帮助您很好地学习该命令。
参考:
Journaldev 关于 chown 的文章