怎样在 Linux 中使用 chown 命令:示例和快速提示

在 Linux 上,每个文件都有一个所有者和一个组。 他们被相应地授予访问权限。

使用 chown 命令,您可以更改文件或目录的所有者和组。 配置文件和文件夹权限对于文件的安全性至关重要。

在本简短指南中,我们将介绍使用 chown 更改权限所需了解的所有信息。 我们在 Ubuntu 18.04.2 中使用 chown 版本 8.28。 我们还提供了一些例子。

您将需要一台可以访问终端的 Linux 机器。 你需要有超级用户权限(这样你就可以使用 sudo 命令)更改任何文件的所有权。

Linux Chown 命令的语法

与许多其他命令一样,chown 命令的语法分为几个部分。 它的帮助文件使命令的语法清晰:

chown [OPTIONS] 用户[:GROUP] 文件

如您所见,您可以使用带选项的命令,但这并不总是必要的,具体取决于您要执行的操作。

这 [USER] 部分必须指明您要创建的新所有者的数字用户 ID 或用户名。

当您需要更改文件的组时,语法中会使用冒号。 然后您必须写下您要向哪个新组提供所有权。

最后,您必须在语法的 FILE 部分写入目标文件。

检查文件的所有权

在使用 chown 命令之前,您可能需要确定文件的原始组或所有者。

这样做就像导航到目录或文件并运行一样简单:

ls -l

更改文件的所有者

您可能会猜到您需要在 chown 命令中指定新所有者和文件,如下所示:

chown 新用户文件

假设我们有一个用户“jane”和一个文件“example” 要赋予 jane 所有权,您需要:

周杰伦 example

如果要更改目录的所有者,可以使用相同的格式。

请记住,您不一定需要指定用户名; 您还可以使用用户 ID 更改所有权。 这就是它的样子:

chown 1005 example

在使用 UID 之前,请确保没有用户将 UID 设置为他们的用户名。 该命令优先考虑用户名。 因此,如果一个用户将用户名设置为另一个用户的 UID,则第一个用户将成为该文件的新所有者。

您可以运行 id -u USERNAME 来查找任何用户的 UID。

更改多个文件的所有权

当您需要更改多个文件的所有权时,只需在命令的最后部分列出文件名即可。 请注意,名称之间需要有一个空格。

假设我们需要授予 Jane 访问文件 example2 和 example3 的权限。 您将编写以下命令:

chown jane 示例 2 示例 3

您还可以在同一命令中列出文件名和目录名,并一次性更改它们的所有权:

chown jane example2 目录 1

更改文件的组

chown 命令允许您在不更改所有者的情况下更改文件或目录的组。 因此,它提供与 chgrp 命令相同的结果。

如您所料,用于更改组的 chown 命令涉及冒号、组名和文件名:

chown:组名文件

假设您要更改 example2 文件的组。 你会写:

chown :group5 示例 2

您可以列出多个目录或文件以一次性更改组。 此外,可以使用组 ID 代替组名。 冒号必须仍然存在于命令中。

更改组和所有者

更改组 文件的所有者,您将按以下格式运行 chown 命令:

chown 用户:组文件

假设您想将 example3 的所有者更改为“lara”并将所有权授予 group5。 你会写:

chown lara:group5 示例 3

将组更改为特定用户的登录组

如果在使用 chown 命令时没有指定组,它会自动将所有者的登录组分配给目录/文件。

要将文件或目录的组更改为特定用户的登录组,您可以使用:

chown 用户:FILE

此命令会将组更改为 jane 的登录组:

chown jane: 示例 3

将组和所有权从一个文件转移到另一个文件

除了允许您分配新的所有者和组之外,chown 命令还允许您使用参考文件的所有者和组。

将其关闭与使用 –reference 选项一样简单。 它将复制文件的设置并将其分配给另一个。 语法如下所示:

chown –reference=参考文件文件

验证文件或目录的当前所有者和组

您可以将 –from 选项与命令一起使用,以在更改文件之前查找文件的当前组和所有者。 检查和更改的语法是:

chown –from=CurrentUser:CurrentGroup NewUser:NewGroup FILE

继续上面显示的示例,这里是您将怎样更改 example2 文件的组和所有者:

chown –from=jane:group5 lara:group6 example2

仅验证所有者

–from 选项还允许您只验证当前所有者。 涉及的语法是:

chown –from=当前用户新用户文件

一个 example 这是:

chown –from=lara jane 例子2

仅验证组

如您所料,您可以使用 chown 命令在更改组之前仅验证该组。 –from 选项仍然需要使用。

语法是:

chown –from:当前组:新组文件

接我们之前的 example,您可以验证 group6 是新组并将其更改回 group5,如下所示:

chown –from=:group6 :group5 文件

递归更改文件所有权

您可以使用 chown 命令为目录内的所有文件和子目录分配新的所有权。 您需要做的就是使用 -R 选项,如以下语法所示:

chown -R 用户:组路径或目录名

我们可以更改 directory1 的用户和组及其内容 example 像这样:

chown -R lara:group6 Dir1

更改符号链接的所有者

您可以使用 -h 选项更改符号链接的所有者。 如果不使用该选项,链接文件的所有者会改变,而符号链接的所有者和组将保持不变。

更改符号链接的所有者和组的语法如下所示:

chown -h 用户:组 SymbolicLink

显示chown命令的进程详情

默认情况下,Linux 终端不显示 chown 进程的详细信息。 但是,您可以通过两个选项深入了解:

-v 选项将在不更改所有者的情况下显示进程的详细信息。 另一方面,-c 选项仅在目标文件的所有者或组更改时显示详细信息。

所以,如果你运行:

chown -v 简示例 2

终端将给出输出:

example2 的所有权保留为 jane

但是,如果您在上述命令中使用了 -c 选项,则不会出现任何消​​息,因为组或所有者是相同的。

-v 选项与递归选项 -R 结合使用特别有用。 它将显示目录内所做的所有更改。

抑制 chown 错误

当您使用 chown 命令时,有时会弹出错误消息。 但是您可以使用 -f 选项来防止这些消息出现。

您必须注意,虽然 -f 选项可以抑制大多数错误,但如果您指定了无效的用户名,则会出现一条错误消息。

结论

请记住,终端是区分大小写的,因此如果您不小心在文件或目录名称中输入了大写字母,您的命令将无法按预期运行。

有了本指南,您将可以更轻松地更改文件和目录的组和所有者。