如何使用 Chown 命令更改文件所有权 [11 个示例]
简介:在本新手指南中,我们将讨论 chown 命令的一些实际示例。按照本指南操作后,用户将能够在 Linux 中有效地管理文件所有权。
在 Linux 中,一切皆文件,这意味着,所有输入/输出资源(如文件、目录、磁盘驱动器、打印机等)都通过文件系统命名空间作为文件公开。除此之外,Linux 中的每个文件都具有所有权。
所有权由两个实体表示 -用户和组。访问权限和所有权的结合使Linux能够以有效的方式实现访问控制机制。
在本指南中,我们将学习chown 命令。顾名思义,chown 命令用于更改文件的所有权。按照本指南操作后,初学者将能够在使用 Linux 系统时有效地使用chown 命令。
chown 命令语法
chown命令的语法如下:
$ chown [OPTION]... [OWNER][:[GROUP]] [FILE-1] [FILE-2]...[FILE-N]
现在让我们通过Linux中的一些实际示例来了解chown命令的用法。
1.如何查找文件的所有权
查找文件所有者的最简单方法是使用ls 命令,它将列出文件的用户和组。
$ touch file-1.txt $ ls -l file-1.txt
在上面的输出中,我们可以看到该文件的所有者是示例用户和组。该信息分别由第三列和第四列表示。
2. 如何更改文件所有权
chown 命令允许我们更改文件的所有权。让我们通过将用户narendra设置为文件所有者来了解它的用法:
$ sudo chown narendra file-1.txt
现在,让我们验证文件的所有权是否已改变:
$ ls -l file-1.txt
3.如何更改文件的组所有权
与用户类似,我们也可以使用chown命令更改文件的组所有权。因此,让我们将文件的组所有权设置为组 – narendra:
$ sudo chown :narendra file-1.txt
值得注意的是,(:)
在更改组所有权时,我们必须在组名中使用冒号。
现在,让我们验证该文件的组所有权:
$ ls -l file-1.txt
4.如何更改文件的所有权和组
在前面的例子中,我们使用了两次chown命令。首先,更改用户所有权,然后更改组所有权。但是,我们可以使用单个命令同时更改用户和组。
让我们使用以下命令将文件所有权重置为用户和组示例:
$ sudo chown example:example file-1.txt
在这个例子中,我们使用冒号(:)
来分隔用户和组。冒号前面的值代表用户,而冒号后面的值代表组。
现在,让我们检查更新后的文件所有权:
$ ls -l file-1.txt
5.如何更改符号链接的所有权
默认情况下,chown命令取消引用符号链接,这意味着,如果输入文件是符号链接,那么它会更改引用文件的所有权,而不是符号链接本身。
但是,我们可以使用该-h
选项覆盖默认行为,如下例所示。
首先,创建一个符号链接并验证它是否指向正确的参考文件:
$ ln -s file-1.txt symlink $ ls -l symlink
接下来,使用以下选项更改符号链接的所有权-h
:
$ sudo chown -h narendra:narendra symlink
最后,验证符号链接及其引用文件的所有权:
$ ls -l symlink file-1.txt
6. 如何将文件所有权转移给用户
有时,我们只需要在验证文件当前所有权后更新文件的所有权。在这种情况下,我们可以使用chown--from
命令的选项,如下所示。
$ sudo chown -h --from narendra:narendra example:example symlink
在此示例中,--from
选项代表文件的当前所有者,而下一个参数代表新的所有权。因此,仅当文件由用户和组 narendra 拥有时,上述命令才会更新文件 symlink 的所有权。
现在,让我们检查文件更新后的所有权:
$ ls -l symlink
在此示例中,我们使用冒号指定了用户和组(:)
。但是,我们可以指定其中任何一个,如前面的示例所述。
7. 如何从另一个文件复制所有权
有时,从现有文件复制所有权比从命令行提供所有权更方便。在这种情况下,我们可以将选项--reference
与chown命令一起使用,该选项表示要从中复制所有权的文件。
首先,创建一个新文件并更改其所有权:
$ touch file-2.txt $ sudo chown narendra:narendra file-2.txt
现在,让我们检查两个文件的当前所有权:
$ ls -l file-1.txt file-2.txt
接下来,使用以下命令将file-2.txt文件的所有权设置为与file-1.txt相同:
$ sudo chown --reference=file-1.txt file-2.txt
最后,验证所有权是否已成功更新:
$ ls -l file-1.txt file-2.txt
在上面的输出中,我们可以看到现在两个文件具有相同的所有权。
8.如何递归更改目录的所有权
我们也可以使用chown命令来更改目录的所有权。但是,该命令的默认行为是非递归的。
这意味着chown命令将仅更改输入目录的所有权。但是,我们可以使用该-R
选项覆盖此默认行为,如以下示例所示。
首先,创建一个目录并在其中创建一个两个文件:
$ mkdir dir-1 $ touch dir-1/demo-1.txt dir-1/demo-2.txt
接下来,检查目录及其文件的所有权:
$ ls -ld dir-1 $ ls -l dir-1
然后,以递归方式更改目录及其文件的所有权:
$ sudo chown -R narendra:narendra dir-1
最后,验证目录及其文件的所有权:
$ ls -ld dir-1 $ ls -l dir-1
9.如何打印 Chown 命令进程详细信息
默认情况下,chown命令在更改所有权后不会在终端上打印任何内容。因此,到目前为止,我们一直在使用ls 命令-l
的选项来验证更新的所有权。
为了克服这个限制,我们可以启用命令的详细模式,打印每个已处理文件的诊断信息。当我们将此选项与以下选项一起使用时,它会提供有意义的信息-R
:
因此,让我们使用-v
命令的选项来启用详细模式:
$ sudo chown -Rv example:example dir-1
现在,让我们检查命令的输出:
10.如何抑制 Chown 命令错误
与其他Linux 命令一样,chown也会在出现错误时提供有意义的信息。错误可能由于各种原因而发生,例如不存在文件、组或用户、执行某些操作的权限不足等等。
但是,有时我们不想显示这些错误消息。在这种情况下,我们可以使用-f
该命令的选项来抑制错误消息。
为了更好地理解这一点,让我们尝试改变不存在的文件的所有权:
$ sudo chown -f narendra:narendra non-existing-file.txt $ echo $? 1
现在,让我们看看该命令的输出:
我们可以看到,上述命令没有显示任何错误。但是,该命令使用非零返回值报告失败。
11.如何更改文件用户和组 ID
到目前为止,我们使用用户名和组名来更改文件的所有权。但是,我们也可以使用用户和组 ID 来实现相同的结果。
首先,使用id命令查找用户的用户和组 ID – narendra:
$ id narendra
现在,让我们通过chown命令使用用户和组 ID 1001:
$ ls -l file-1.txt $ sudo chown 1001:1001 file-1.txt
最后,验证所有权是否已成功更新:
$ ls -l file-1.txt
在本文中,我们讨论了chown命令的一些实际示例。人们可以在日常生活中使用这些示例来提高使用 Linux 系统时的工作效率。
您知道 Linux 中 chown 命令的其他最佳示例吗?请在下面的评论中告诉我们您的观点。