如何在Linux上使用chown命令

Linux系统中的文件和目录都属于某个人。您可以使用chown命令更改它们的所有权。我们教你怎么做。

每个文件都属于一个用户和一个组

Linux是一个多用户系统。操作系统允许定义多个用户帐户,并允许任何有效用户登录到计算机。此外,多个用户可以同时使用一台计算机。

为了维护哪些文件属于哪个用户的记录并加强某些安全性,Linux使用所有权的概念。每个文件都属于一个所有者(用户)和一个组。

创建文件时,其所有者是创建该文件的用户。文件所属的组-“拥有”组-是用户的当前组。用户和组有名称,也有数字标识,称为用户(或唯一)标识符(UID)和组标识符(GID)。

创建文件时,该文件归您所有,并且属于您当前的组。通常,这是您已登录的组。默认情况下,这是一个与您的用户名同名的组,并且是在您作为系统上的用户创建时创建的。

您可以使用chown命令将所有权值更改为其他值。您可以同时设置新所有者、新组或新所有者和新组。文件的所有者可以更改组所有权,但只有root才能更改用户所有权,因为这涉及到另一个用户。如果没有root权限,您就不能让系统上的另一个用户在不知不觉中“采用”一个文件。

你为什么要改变所有权呢?

以下是您可能需要执行此操作的一些情况示例:

如果在不同的Linux或类Unix操作系统之间传输文件,则需要将用户和组所有者更改为新Linux计算机上要使用文件的帐户的新用户和组所有者。 用户可能会离开您的组织,他的所有文件都将由另一名员工负责。您需要将所有者和组所有者更改为现在负责这些文件的工作人员。 您可以编写将由特定用户使用的脚本。 您可以创建以root身份登录的文件或目录,但您希望特定用户可以访问该文件或目录。

查看您的组、UID和GID

要列出您所在的组,可以使用GROUPS命令。

groups

要获取组的列表、它们的数字ID、以及您的UID和GID,请使用id命令:

id

您可以对ID使用一些选项来优化输出。

-u:列出您的UID。 -g:列出您的有效(当前)GID。 -nu:列出您的用户名。 -ng:列出您当前的组名。

id -uid -gid -nuid -ng

查看文件的用户和组所有权

要查看文件或目录的所有者,请使用带有ls的-l(长列表)选项。

ls -l

我们可以看到,Dave这个名字在列表中出现了两次。最左边的外观告诉我们文件所有者是一个名为Dave的用户。最右边的Dave告诉我们,该文件属于一个也称为Dave的组。

默认情况下,创建Linux用户时,会将其添加到以其用户名命名的私有组。他们是那个小组中唯一的成员。

该可执行文件属于用户Mary,并且该文件所属的组是Mary的私有组。

ls -l

该文件归用户oscar所有,但该文件所属的组名为researchlab。这意味着,根据为研究组成员设置的文件权限,研究室组的其他成员可以访问此文件。

更改用户所有权

让我们来做一些例子。此命令将把文件的用户所有权While.c更改为用户Mary。

sudo chown mary while.c

我们可以使用ls查看文件属性的更改。

ls -l while.c

您可以使用chown一次更改多个文件的所有权。

sudo chown mary getval.c global.c goto.c

这会更改所有三个文件的用户所有权。

ls -l getval.c global.c goto.c

您可以使用通配符选择文件组。此命令将更改所有以字母“c”开头的文件的用户所有权。

sudo chown mary c*.*

所有文件现在都将拥有玛丽作为它们的所有者。请注意,没有更改任何组所有权。

ls -l mary c*.*

让我们更改目录的所有权。我们只需将目录名传递给chown,而不是文件名。

sudo chown mary ./archive/

要检查目录的所有权属性,我们使用ls,但也对其使用-d(目录)选项。这将列出目录的属性,而不是其中的文件。

ls -l -d ./archive/

要更改目录中所有文件的所有权,可以使用-R(递归)选项。此选项将更改存档文件夹内所有文件的用户所有权。

sudo chown -R mary ./archive/

现在让我们看一下存档目录中的文件。

ls -l ./archive/

不出所料,所有文件现在都属于Mary。

更改组所有权

有不同的方式可以更改组所有权。

要在更改用户所有权的同时更改组所有权,请传递新的所有者名称和新的组名,并用冒号“:”分隔它们。该组必须已存在。

sudo chown mary:researchlab charm.c

文件所属的用户所有者和组都已更改。

ls -l charm.c

一种将组所有权更改为新所有者的当前组的快捷方法,只需提供冒号并省略组名。

sudo chown mary: caps.cls -l caps.c

用户所有权和组所有权都已更改为Mary。

要仅更改组所有权,请在其前面加冒号并省略用户名。不会更改用户所有者。

sudo chown :researchlab at.cls -l at.c

组所有权已更改,但用户所有权保持不变。

对UID和GID值使用CHOWN

您可以将数字UID和GID值与CHOWN命令一起使用。此命令将用户和组所有权设置为Mary。

sudo chown 1001:1001 at.cls -l at.c

占有是法律的十分之九

或者他们是这么说的。但在Linux中,所有权是文件安全的重要组成部分,文件权限提供了其余部分。使用chown和chmod命令保护系统上的文件访问。

相关文章