管理所有权和文件权限可能是系统管理员最重要的任务。在任何多用户操作系统(例如 Linux )中,正确分配文件和目录的所有权至关重要。
chown 命令是对此最有用的工具。不要与 chmod 混淆,chown 可以修改文件的用户所有权并将它们分配给不同的组。对于任何认真的 Linux 用户来说,这是一个必须掌握的基本命令。
这是一份入门指南。
如何检查文件的所有权?
在开始在不同所有者和组之间转移文件之前,您应该首先了解如何检查文件的当前所有者。过程很简单:在常规 ls 命令中添加 -l 标志即可包含所查询的文件或目录的所有权信息。
假设您有一个名为 example.txt 的文件。查看其所有权信息的命令如下所示:
ls -l example.txt
在单个文件上使用 chown
使用 chown 最简单的方法是更改拥有特定文件的用户。语法为 sudo chown username filename,其中 username 是要将文件提供给的用户的名称,filename 是相关文件的名称。这就是实践中的样子:
sudo chown some_else example.txt
请注意,这不会更改文件的组所有权,只会更改用户。要更改组所有者,您必须使用不同的语法 – sudo chown :groupname filename
在这种特定情况下,这将变为:
sudo chown :group2 example.txt
您还可以将这两个命令合并到一行中来更改文件的用户和组所有权:
sudo chown me:group1 example.txt
使用 chown 更改多个文件的所有权
在处理大量文件时,单独更改每个文件的所有权是相当乏味的。值得庆幸的是,大多数 Linux 命令 允许您在单个命令中将多个以空格分隔的文件名链接在一起。像这样:
sudo chown person_else:group2 example1.txt example2.txt.
使用相同的技巧来检查多个文件的所有权:
ls -l example1.txt example2.txt
即使将多个文件名组合成一个命令,对于多个文件来说,这个过程也太不方便了。更好的方法是立即更改目录全部内容的所有权。
这是通过向 chown 命令添加 -R 标志来实现的。这使得 chown 遍历目录的内容并递归地更改内部每个文件的所有权。这是一个演示:
sudo chown -R some_else:group2 示例
我们可以再次使用递归标志来检查示例文件夹中文件的所有权。
ls -l -R 示例
使用 UID 修改文件所有权
管理许多用户的系统管理员很快就会厌倦重复输入用户名。任何名称中的一个拼写错误都会在使用 chown 时引发错误,从而大大减慢速度。
更好的选择是使用用户 ID。 UID 是分配给每个创建的用户的四位数字,从 1000 开始依次递增。这比字符串更容易输入,而且更不容易出错。
要使用此方法,只需将用户名替换为 UID:
sudo chown 1001 example.txt
如果您不知道用户的UID,可以使用id命令快速查看。只需输入id -u username即可查看该用户的唯一ID。
此方法也可以扩展到组名称。要获取用户的登录组及其所属的其他组的 UID,请使用不带 -u 标志的 id 命令。
id 某人
如您所见,我们有指定用户所属的各种组 ID。综上所述,我们可以像这样使用 chown 来分配新的所有者并更改文件的组:
sudo chown 1001:1003 example.txt
使用 chown 命令还能做什么?
我们已经演示了 chown 的大多数常见用法。您现在可以通过各种方法更改拥有文件的用户和组。但这并不是指挥部能力的全部限制。.
您可以参阅官方手册页以获取技术说明以及可与该命令一起使用的参数的完整列表。只需在终端中输入 man chown 即可查看。
Chown有用吗?
如果您是计算机的唯一用户,那么您将永远不需要使用 chown。但如果你在专业环境中使用Linux系统,无论是商业服务器还是大学计算机,那么掌握chown命令(除了chmod )是至关重要的。
向用户和组分配和删除文件的能力对于在多用户系统中维护严格的边界至关重要。 chown 最好的部分是它的灵活性 - 您可以使用同一命令处理单个文件或整个目录。
您还可以单独或在组合语句中向用户和组分配所有权。与更方便的 UID 一起使用,即使是最复杂的用户层次结构的处理也变得轻而易举。
.