如何使用chown命令在Linux中更改所有权

时间:2020-03-05 15:26:13  来源:igfitidea点击:

Linux中的Chown命令允许我们更改文件和目录的所有权。

Linux中chown命令的例子

以下是Chown命令的语法看起来像:

chown [options] user_spec files

请记住,Chown是一个管理命令,因此我们需要根或者有sudo权限,以便通过chown命令进行更改。

我希望你知道如何添加sudo用户。

否则,我们将看到这样的错误:

chown: changing ownership of 'agatha.txt': Operation not permitted

现在让我们看看如何使用Chown命令使用示例。

这是我要使用的示例集:

-rw-r--r-- 1 igi igi  456 Jan 24 09:30 agatha.txt
drwxr-xr-x 2 igi igi 4096 Jan 24 09:31 mydir
drwxr-xr-x 3 igi igi 4096 Jan 24 09:30 new
-rw-r--r-- 1 igi igi  356 Jan 24 09:30 sherlock.txt

1.更改或者设置文件的用户所有权

要更改文件的所有权,请使用此时尚的命令:

sudo chown user_name file_name

我们也可以使用UID(用户ID)而不是用户名。

这是它使得更改的示例:

Hyman@theitroad:~/tutorial$sudo chown theitroad agatha.txt 
Hyman@theitroad:~/tutorial$ls -l agatha.txt 
-rw-r--r-- 1 theitroad igi 456 Jan 24 09:30 agatha.txt

正如我们可以看到文件的所有者已更改为"igi"的"theitroad",但该组仍然是"igi"。
让我向我们展示如何更改用户所有权和组所有权。

2.更改用户和群组所有权

要更改文件的用户和群组所有权,我们可以使用像这样的列分隔的用户名指定组:

sudo chown user_name:group_name file_name

当然,我们可以分别使用UID和GID而不是用户名和组名。

Hyman@theitroad:~/tutorial$sudo chown theitroad:adm sherlock.txt 
Hyman@theitroad:~/tutorial$ls -l sherlock.txt 
-rw-r--r-- 1 theitroad adm 356 Jan 24 09:30 sherlock.txt

正如我们可以在上面的示例中看到的,我将文件Sherlock.txt的用户更改为"theitroad"和组到'ADM'。

3.将组更改为默认的用户组

每个用户都有一个默认或者主组。
如果用户创建新文件或者目录,则此主组自动成为文件的组所有者。
我们可以使用ID命令列出默认用户的默认组。

现在,如果要将文件的组所有权更改为默认的用户组,则应在冒号后留下组名。

sudo chown user_name: file_name

正如我们在下面的示例中看到的,Sherlock.text文件用户所有者'theitroad'和Group Owner'Adm'。
我将所有者改为'igi'但没有提供组名。
然而,它将集团从"ADM"改为默认的"igi"组。

Hyman@theitroad:~/tutorial$ls -l sherlock.txt 
-rw-r--r-- 1 theitroad adm 356 Jan 24 09:30 sherlock.txt
Hyman@theitroad:~/tutorial$sudo chown igi: sherlock.txt 
Hyman@theitroad:~/tutorial$id igi
uid=1000(igi) gid=1000(igi) groups=1000(igi),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),999(docker)
Hyman@theitroad:~/tutorial$ls -l sherlock.txt 
-rw-r--r-- 1 igi igi 356 Jan 24 09:30 sherlock.txt

4.仅更改组

如果我们只想在不被用户所有者打扰的情况下更改组,则可以使用如下所示的chown命令:

sudo chown :group_name file_name

在下面的示例中,我将组所有权设置为sudo而不触摸用户所有权:

Hyman@theitroad:~/tutorial$ls -l agatha.txt 
-rw-r--r-- 1 theitroad igi 456 Jan 24 09:30 agatha.txt
Hyman@theitroad:~/tutorial$sudo chown :sudo agatha.txt 
Hyman@theitroad:~/tutorial$ls -l agatha.txt 
-rw-r--r-- 1 theitroad sudo 456 Jan 24 09:30 agatha.txt

5.递归更改用户的用户和群组所有权

在所有上述命令中,我们可以用目录替换文件,它将与更改目录的所有权一样相同。

这里的一个问题是,默认情况下,目录内的内容的所有权不会更改。

要更改目录的所有权以及目录中的所有内容,可以使用递归选项-r。

sudo chown -R user_name:group_name directory_name

6.将相同的用户和组所有权设置为参考文件

我们可以使用文件作为引用,并以这种方式根据参考文件更改文件和组所有权:

sudo chown --reference=file1.txt file2.txt

在下面的示例中,文件agatha.txt已被用作参考。
如我们所见,Sherlock.txt的所有权已经在Agatha.txt的基础上更改。

Hyman@theitroad:~/tutorial$ls -l agatha.txt sherlock.txt 
-rw-r--r-- 1 theitroad  sudo     456 Jan 24 09:30 agatha.txt
-rw-r--r-- 1 igi igi 356 Jan 24 09:30 sherlock.txt
Hyman@theitroad:~/tutorial$sudo chown --reference=agatha.txt sherlock.txt
Hyman@theitroad:~/tutorial$ls -l agatha.txt sherlock.txt 
-rw-r--r-- 1 theitroad sudo 456 Jan 24 09:30 agatha.txt
-rw-r--r-- 1 theitroad sudo 356 Jan 24 09:30 sherlock.txt