分享最新优惠信息
购买主机更加划算

Linux系统:使用chown命令更改文件所有权典型示例详解

在Linux系统中,一切皆为文件,这意味着所有输入/输出资源,例如文件、目录、磁盘驱动器、打印机等,都通过文件系统命名为公开文件。除此之外,Linux 中的每个文件都有所有权。

文件所有权由两个实体表示——用户。访问权限和所有权的结合允许Linux用户以有效的方式实现访问控制机制。

在本指南中,小编将简单介绍下chown命令,该命令用于更改文件的所有权。了解本文内容之后,Linux初学者将能够在系统中有效地使用chown命令

chown命令语法

chown命令的语法如下:

$ chown [OPTION]... [OWNER][:[GROUP]] [FILE-1] [FILE-2]...[FILE-N]

接下来通过一些实际例子来简单介绍下chown命令的用法。

1、查找文件的归属

查找文件所有者的最简单方法是使用ls命令,它将列出文件的用户和组。

$ touch file-1.txt
$ ls -l file-1.txt

查找文件的归属

在上面的输出中,可以看到该文件属于tecmint用户和组,分别在上图中的第三列和第四列显示。

2、更改文件的所有权

chown命令允许用户更改文件的所有权。这里通过将用户narendra设置为文件的所有者来查看它的用法:

$ sudo chown narendra file-1.txt

现在来验证文件的所有权是否已更改:

$ ls -l file-1.txt 

在Linux中更改文件所有权

3、更改文件的组所有权

与用户所有权类似,也可以使用chown命令更改文件的组所有权。这里将文件的组所有权设置为组 – narendra

$ sudo chown :narendra file-1.txt

需要注意的是,在更改组所有权时,必须在组名中使用冒号(:)。

现在,验证文件的组所有权是否改变:

$ ls -l file-1.txt

在Linux中更改文件组所有权

4、更改文件的所有权和组

在前面的示例中,使用了两次chown命令首先,更改用户所有权,然后更改组所有权。但是,可以使用单个命令同时更改用户和组。

接下来使用以下命令将文件所有权重置为用户和组tecmint:

$ sudo chown tecmint:tecmint 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 tecmint:tecmint symlink

在此示例中,--from选项表示文件的当前所有者,而下一个参数表示新的所有权。因此,只有当文件由用户和组–narendra拥有时,上述命令才会更新文件–symlink的所有权。

现在来检查文件的更新所有权,命令如下:

$ ls -l symlink

在Linux中将文件所有权转移给用户

在此示例中,使用冒号(:)字符指定了用户和组。当然,也可以按照前面的示例中所讨论的那样指定它们中的任何一个。

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 

在Linux中从另一个文件复制所有权

在上面的输出中,可以看到现在这两个文件拥有相同的所有权。

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

在Linux中递归更改目录所有权

9、输出chown命令进程详细信息

默认情况下,更改所有权后chown命令不会在终端上输出任何内容。因此,到目前为止,一直在使用ls 命令的-l选项来验证更新的所有权。

为了克服这个限制,可以启用输出每个已处理文件诊断信息的命令的详细模式。当将它与-R选项一起使用时,此选项会提供有意义的信息。因此,现在使用命令的-v选项来启用详细模式:

$ sudo chown -Rv tecmint:tecmint dir-1

现在,可以检查命令的输出:

在Linux中启用Chown详细模式

10、抑制chown命令错误

与其他Linux 命令一样,chown也会在出现错误情况时提供有意义的信息。该错误可能由于多种原因而发生,例如不存在的文件、组或用户、执行某些操作的权限不足等。

然而,有时我们不想显示这些错误信息。在这种情况下,可以使用-f命令的选项来抑制错误消息。为了更好地理解这一点,接下来尝试更改不存在文件的所有权:

$ sudo chown -f narendra:narendra non-existing-file.txt
$ echo $?
1

现在,可以看看命令的输出:

在Linux中抑制chown命令错误

如上所示,上面的命令没有显示任何错误。但是,该命令使用非零返回值来显示处理失败。

11、更改文件用户和组ID

到目前为止,已经使用用户名和组名来更改文件的所有权。但是,也可以使用用户ID和组ID来达到相同的结果。

首先,使用id命令查找narendra用户的用户和组ID:

$ id narendra

现在,在chown命令中使用用户和组ID 1001 :

$ ls -l file-1.txt
$ sudo chown 1001:1001 file-1.txt

最后,验证所有权是否已成功更新:

$ ls -l file-1.txt

在Linux中更改文件所有权UID和GID

总结

在本文中,小编简单介绍了chown命令的一些实际示例。熟练这些使用这些示例可以有效提高使用Linux系统时的工作效率,所以务必要了解chown知识。

众所周知,在Linux系统中,文件所有权限是一项非常重要的内容,因为只有对该文件拥有所有权,才能对该文件执行一系列操作,否则可能会出现相应的错误。

未经允许不得转载:惠主机 » Linux系统:使用chown命令更改文件所有权典型示例详解