Linux中的Chown命令(文件所有权)

chown 命令允许您更改给定文件,目录或符号链接的用户和/或组所有权。

在Linux中,所有文件都与一个所有者和一个组相关联,并为文件所有者,组成员和其他人分配了权限访问权限。

在本教程中,我们将向您展示如何使用 chown 通过实际示例进行指挥。

如何使用 chown

在进入如何使用之前 chown 命令,让我们先回顾一下基本语法。

chown 命令表达式采用以下形式:

chown [OPTIONS] USER[:GROUP] FILE(s)

USER 是新所有者的用户名或用户ID(UID)。 GROUP 是新组的名称或组ID(GID)。 FILE(s) 是一个或多个文件,目录或链接的名称。 数字ID的前缀应为 + 符号。

  • USER -如果仅指定用户,则指定的用户将成为给定文件的所有者,组所有权不会更改。
  • USER: -用户名后跟冒号时 :,并且未指定组名,用户将成为文件的所有者,并且文件组的所有权更改为用户的登录组。
  • USER:GROUP -如果同时指定了用户和组(在它们之间没有空格),则文件的用户所有权更改为给定的用户,而组所有权更改为给定的组。
  • :GROUP -如果省略了用户,并且该组以冒号作为前缀 :,只有文件的组所有权更改为给定的组。
  • : 如果只是一个冒号 : 给出,而未指定用户和组,则不会进行任何更改。

默认情况下,成功后, chown 不产生任何输出并返回零。

使用 ls -l 查找谁拥有文件或文件所属的组的命令:

ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
                |       |
                |       +-----------> Group
                +-------------------> Owner

普通用户只有在拥有文件的情况下才能更改文件组,并且只能更改为他们所属的组。 管理用户可以更改所有文件的组所有权。

如何更改文件的所有者

要更改文件的所有者,请使用 chown 命令,后跟新所有者的用户名和目标文件作为参数:

chown USER FILE

例如,以下命令将更改名为的文件的所有权 file1 到一个新的所有者,名为 linuxize

chown linuxize file1

要更改多个文件或目录的所有权,请将它们指定为以空格分隔的列表。 下面的命令更改名为的文件的所有权 file1 和目录 dir1 到一个新的所有者,名为 linuxize

chown linuxize file1 dir1

可以使用数字用户ID(UID)代替用户名。 以下示例将更改名为的文件的所有权 file2 转让给UID为的新所有者 1000

chown 1000 file2

如果数字所有者作为用户名存在,则所有权将转移到用户名。 为避免此前缀,ID使用 +

chown 1000 file2

如何更改文件的所有者和组

要更改文件的所有者和组,请使用 chown 命令后跟新的所有者和组,并用冒号():),且中间没有空格和目标文件。

chown USER:GROUP FILE

以下命令将更改名为的文件的所有权 file1 到一个新的所有者,名为 linuxize 和组 users

chown linuxize:users file1

如果您在冒号后省略组名(:)将文件组更改为指定用户的登录组:

chown linuxize: file1

如何更改文件组

要仅更改文件组,请使用 chown 命令后跟一个冒号(:),新的组名(它们之间没有空格)和目标文件作为参数:

chown :GROUP FILE

以下命令将更改名为的文件的拥有组 file1www-data

chown :www-data file1

可以用来更改文件组所有权的另一个命令是 chgrp

如果不使用递归选项, chown 命令更改符号链接指向的文件的组所有权,而不是符号链接本身。

例如,如果您尝试更改符号链接的所有者和组 symlink1 指向 /var/www/file1chown 将更改符号链接指向的文件或目录的所有权:

chown www-data: symlink1

很有可能您会收到“无法取消引用’symlink1’:权限被拒绝”错误,而不是更改目标所有权。

发生该错误是因为默认情况下,大多数Linux发行版上的符号链接均受保护,并且您无法对目标文件进行操作。 该选项在 /proc/sys/fs/protected_symlinks1 意味着启用和 0 禁用的。 我们建议不要禁用符号链接保护。

要更改符号链接本身的组所有权,请使用 -h 选项:

chown -h www-data symlink1

如何递归更改文件所有权

要递归操作给定目录下的所有文件和目录,请使用 -R--recursive) 选项:

chown -R USER:GROUP DIRECTORY

以下示例将更改目录下所有文件和子目录的所有权 /var/www 目录到新的所有者和名为 www-data

chown -R www-data: /var/www

如果目录包含符号链接,请通过 -h 选项:

chown -hR www-data: /var/www

递归更改目录所有权时可以使用的其他选项是 -H-L

如果参数传递给 chown 命令是指向目录的符号链接, -H 选项将导致命令遍历它。 -L 告诉 chown 遍历每个符号链接到遇到的目录。 通常,不应使用这些选项,因为这可能会破坏系统或造成安全风险。

使用参考文件

--reference=ref_file 选项可让您将给定文件的用户和组所有权更改为与指定参考文件的用户和组所有权相同(ref_file)。 如果参考文件是符号链接 chown 将使用目标文件的用户和组。

chown --reference=REF_FILE FILE

例如,以下命令将分配用户和组的所有权 file1file2

chown --reference=file1 file2

结论#

chown 是用于更改文件的用户和/或组所有权的Linux / UNIX命令行实用程序。

要了解更多有关 chown 命令访问chown手册页或键入 man chown 在您的终端中。

如果您有任何疑问或反馈,请随时发表评论。

船首码头

Sidebar