Linux/Unix 中 Chown 命令的使用及示例17 Mar 2025 | 6 分钟阅读 Linux chown 命令用于更改文件、目录或符号链接的所有权,可以是 用户 或 组。chown 是 change owner(更改所有者)的缩写。在 Linux 中,每个文件都关联着一个所有者或组。 Linux 系统可能拥有多个用户。每个用户都有唯一的名称和用户 ID。如果系统中只有一个用户,则该用户将是每个文件的所有者。 Linux 系统可能拥有多个用户。每个用户都有唯一的名称和用户 ID。如果系统中只有一个用户,则该用户将是每个文件的所有者。 用户可以被列入不同的组。组允许我们在组级别设置权限,而不是在单个级别设置权限。 系统中的文件所有权只能由超级用户更改或编辑。用户即使拥有文件,也不能放弃文件所有权。只有组成员才能将文件的组 ID 修改为该组。chown 命令作为独立软件包提供给 Microsoft Windows,是 UnxUtils(GNU 类 Unix 基本实用程序的本地 Win32 移植集合)的一部分。此外,此命令已包含在 IBM i OS 中。 在操作系统中,不同的用户拥有权限和所有权,以确保文件受到保护并限制谁可以更改文件内容。Linux 中有不同的用户可以使用系统。
但是,-P、-L 和 -H 选项是互斥的;描述多个选项不会被视为错误。最后指定的标志决定命令的行为。当我们没有提及 -h 标志且已知符号链接时,chown 命令会修改链接指示的目录或文件所有权,而不是链接本身的所有权。 如果我们提及 -h 标志,chown 命令会产生相反的效果,修改链接本身的所有权,而不是链接指向的目录或文件。如果我们同时提及 -R 和 -h 标志,此命令将递归地遍历描述的目录。 权限和所有权:为了保护 Linux 中的目录和文件,我们可以使用权限来控制用户对目录或文件的操作。Linux 使用三种不同类型的权限,如下所述。
文件权限类型
语法 以下是 chown 命令的一般语法 选项 以下是 chown 命令的命令行选项 -c, --changes:用于显示详细输出,例如 verbose,但仅在发生更改时报告。 -f, --silent, --quiet:用于抑制错误消息。 -v, --verbose:用于显示每个已处理文件的诊断信息。 --dereference:用于影响每个符号链接的引用。 -h, --no-dereference:用于影响符号链接而不是任何被引用的文件。 --from=CURRENT_OWNER:CURRENT_GROUP:用于更改特定的所有者和组。 --no-preserve-root:用于不特殊处理反斜杠 ('/')。 --preserve-root:如果 chown 无法在反斜杠 ('/') 上递归操作。 --reference=RFILE:用于指定 RFILE 的所有者和组,而不是它们的值。 -R, --recursive:用于递归地对文件和目录执行操作。 --help:用于显示帮助手册,其中包含用法和选项的简要说明。 --version:用于显示版本信息。 选项-H:如果指定了 -R 标志,并且命令行上指定了一个指向目录类型文件的符号链接,则该命令将修改符号链接指向的目录以及其下文件层次结构中的所有文件的用户 ID(如果提到了组 ID,则也修改组 ID)。 -L:如果指定了 -R 标志,并且命令行上指定了一个指向目录类型文件的符号链接,或者在文件层次结构遍历期间已知该符号链接,则该命令将修改符号链接指向的目录以及其下文件层次结构中的所有文件的用户 ID(如果提到了组 ID,则也修改组 ID)。 -P:如果指定了 -R 标志,并且命令行上指定了一个符号链接,或者在文件层次结构遍历期间已知该符号链接,则该命令将修改符号链接的所有者 ID(如果提到了组 ID,则也修改组 ID),前提是系统支持此操作。chown 命令不会跟踪文件层次结构的其他部分的符号链接。 -R:如果已知符号链接且该链接表示目录,则修改目录的所有权,但不再深入遍历该目录。同样,如果未指定 -P、-L、-H 和 -h 选项,当链接表示目录且符号链接已知时,将修改该目录的组所有权,但不再进一步遍历该目录。 显示 UID、GID 和组要显示所有组,请按如下方式执行 groups 命令: 上面的命令将列出 Linux 系统中的所有现有组。请看下面的输出: ![]() 要列出 UID 和 GID,请按如下方式执行 id 命令: 上面的命令将列出所有用户和组的相应 UID 和 GID。请看下面的输出: ![]() 显示文件的用户和组所有权要显示文件的用户和组所有者,请使用特定文件名执行“ls -l”命令。请看下面的命令: 上面的命令将显示 'Demo.txt' 的用户和组所有权。请看下面的输出: ![]() 更改文件所有者(使用用户名)要更改文件的所有者,请使用 chown 命令传递用户名(新所有者),如下所示: 考虑以下命令: 上面的命令将设置 'Demo.txt' 文件的所有者为 **jtp**。请看下面的输出: ![]() 从上面的输出可以看出,给定文件的所有者已更改。 更改文件所有者(使用 UID)我们可以使用用户的 UID 来更改文件或目录的所有者。要使用 UID 更改所有权,请使用 chown 命令传递 UID,如下所示: 上面的命令将更改 'Demo.txt' 的所有权。请看下面的输出: ![]() 更改文件所属的组要更改文件的组,请使用组名或 GID 配合 chown 命令。它与 chgrp 命令的行为相似。执行 chown 命令,用冒号分隔组名,如下所示: 或 考虑以下命令: 上面的命令将更改 'Demo.txt' 的组。请看下面的输出: ![]() 从上面的输出中,我们在第一个命令中使用了组名更改了文件的组。在第二个命令中,我们使用 GID 更改了组名。 更改用户名和组名我们可以同时更改用户名和组名。要一次性更改用户名和组名,请按如下方式执行 chown 命令: 考虑以下命令: 上面的命令将同时更改指定的用户名和组名。请看下面的输出: ![]() 下一个主题高级文件权限 |
我们请求您订阅我们的新闻通讯以获取最新更新。