在 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 选项可以抑制大多数错误,但如果您指定了无效的用户名,则会出现一条错误消息。
结论
请记住,终端是区分大小写的,因此如果您不小心在文件或目录名称中输入了大写字母,您的命令将无法按预期运行。
有了本指南,您将可以更轻松地更改文件和目录的组和所有者。