如何在ubuntu中使用Chown

本教程解释了如何使用 chown命令来改变一个文件或目录的用户或组的所有权。

在开始之前,让我们看看ls -l命令输出,它将带给我们关于文件和目录权限的信息。

ls -l
复制代码

你可以看到在用户的主目录Linux 中*,* 有一个名为linuxhintfile的文件和一个名为linuxhintdir的目录。正如你在第二和第三列看到的,文件和目录的所有者和组都是linux

假设我们想改变用户linux的所有权,让名为linuxhint的用户成为linuxhintfile 文件的所有者,而组则保持为linux

正确的语法如下:改变一个文件的用户所有权而不影响其组。

chown <User> <File>
复制代码

如上图所示,再次运行ls -l后,我们可以看到用户所有权从linux变为linuxhint,而组别保持不变。

第二个例子展示了如何使用 chown命令来改变同一个文件*(linuxhintfile*)的用户和组的所有权。语法与前面的例子相似,不同的是,在用户名后面必须加上冒号,然后是组名,如下图所示。

chown <User><:><Group> <File>


In my case, I want to change the user and group ownership of the <em>linuxhintfile</em> to the root user and root group, so I type the following.

[cc lang="text"  width="100%" height="100%" escaped="true" theme="blackboard" nowrap="0"]
chown root:root linuxhintfile
复制代码

现在你可以看到,用户和组的所有权都被改变为root。

值得注意的是,如果你想把用户和组的所有权都改为同一个用户,你其实不必指定组。在这种情况下,你只需要键入用户,后面跟一个冒号,没有组,组就会自动改变为与新的所有者相同。这意味着如果你输入User:后面是冒号,后面没有组,文件的组就会改变为用户的组。

在下面的例子中,用户和组都必须从root:root 变为 linuxhint:linuxhint ,尽管我们没有输入组,只是因为我们在用户名后面加上了冒号。

chown linuxhint: linuxhintfile
复制代码

正如你所看到的,用户和组的所有权都被改变为linuxhint

改变目录的所有权需要同样的语法,如果你想递归地改变所有权,包括目录中的子目录和文件,需要实现一个标志。

让我们看看目录、子目录以及它们当前的所有权。

ls -Rl
复制代码

你可以看到,我们有一个名为linuxhintdir的目录,其所有者是linux用户,组是linux组。里面有一个名为linuxhintsubdir的子目录,其所有者和组是root

在进行递归权限之前,让我们看看如果我们不使用标志来改变linuxhintdir的所有权会发生什么。在下面的例子中,我将把linuxhintdir的用户和组的所有权从linux改为linuxhint

chown linuxhint: linuxhintdir/
复制代码

正如你所看到的,linuxhintdir的所有权被成功改变为linuxhint。但是linuxhintsubdir子目录的用户和组仍然是root

那么,如何递归地改变所有权,包括子目录和子文件?

为此,你只需要添加-R(递归)标志。

下面的例子显示了如何递归地改变linuxhintdir目录及其文件和子目录的所有权。如前所示,主目录的用户和组属于linuxhint,而子目录的用户和组属于root

下面的命令将用户所有权递归给名为linux的用户和linuxlat组。

chown -R linux:linuxlat linuxhintdir/
复制代码

现在你可以看到,目录的所有权和它的内容都被改变了;这就是 -R标志的作用。

下面的方案解释了如何递归改变属于一个特定用户的所有文件和目录的所有权。

在这个新的场景中,正如你在下图中看到的,我们有一个主目录linuxhintdir, 它属于名为linux的用户,以及组linuxlat。里面的子目录和文件属于名为linuxrootlinuxlat的用户,组名为linuxlatlinuxlinuxhint

ls -Rl
复制代码

现在我们假设我们只想改变属于某个特定用户的文件/目录的用户和组的所有权。在这种情况下,我们将把主目录和所有属于用户linux的文件和子目录交给名为linuxhint的用户。

为此,我们需要实现 -R标志,因为我们要递归地改变权限。此外,我们还需要实现 -from= 选项,后面跟上当前所有者的用户名(和/或组,如果需要的话),这个新的用户将拥有这些文件和目录,如下图所示。

chown -R --from=linux linuxhint: linuxhintdir/
复制代码

正如你所看到的,所有属于linux用户的文件现在都属于linuxhint用户。这样,我们用一条命令就改变了许多属于特定用户的文件的所有权。

结论

正确管理文件和目录的所有权对于任何使用共享资源的Linux用户都是必须的。正如你所看到的,这些命令非常容易学习和应用。

猜你喜欢

转载自juejin.im/post/7125694903304060935