Contents

CHGRP命令指南

1. 简介

在 Linux 中,所有文件和目录默认都有所有者和组。

在本教程中,我们将讨论使用**chgrp 命令更改目录和文件的组所有权的不同方法**。

2. 文件的组所有权

在此示例中,我们将更改文件的组所有权。

让我们首先使用ls 命令列出支持我们示例的文件:

$ ls -l
total 4
-rw-rw-r-- 1 ubuntu ubuntu    0 Apr 29 5:30 file1
-rw-rw-r-- 1 ubuntu ubuntu    0 Apr 29 10:30 file2
-rw-rw-r-- 1 ubuntu ubuntu    0 Apr 29 9:30 file3
-rw-rw-r-- 1 ubuntu ubuntu    0 Apr 29 10:30 file4
drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 29 12:28 letters

如我们所见,我们所有的文件都在ubuntu组的所有权之下。

让我们看看如何更改文件的组。

首先,我们需要创建我们的新组。根据我们的用户权限,我们可能需要使用sudo

$ sudo addgroup rachel

现在,我们可以将file1添加到组rachel 中:

$ sudo chgrp rachel file1
$ ls -l
total 4
-rw-rw-r-- 1 ubuntu rachel    0 Apr 29 5:30 file1
-rw-rw-r-- 1 ubuntu ubuntu    0 Apr 29 10:30 file2
-rw-rw-r-- 1 ubuntu ubuntu    0 Apr 29 9:30 file3
-rw-rw-r-- 1 ubuntu ubuntu    0 Apr 29 10:30 file4
drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 29 12:28 letters

3.目录的组所有权

要更改目录的组所有权,我们还可以使用chgrp命令。

同样,让我们首先列出支持我们示例的目录:

$ ls -l
drwxrwxr-x 3 ubuntu ubuntu 4096 Apr 29 10:30 mydirectory
drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 29 10:43 mymovies
drwxrwxr-x 4 ubuntu ubuntu 4096 Apr 29 16:28 mytrips

现在我们将mydirectory的组更改为rachel:

$ sudo chgrp rachel ./mydirectory
$ ls -l
drwxrwxr-x 3 ubuntu rachel 4096 Apr 29 10:30 mydirectory
drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 29 10:43 mymovies
drwxrwxr-x 4 ubuntu ubuntu 4096 Apr 29 16:28 mytrips

**值得注意的是, mydirectory中的文件组没有受到影响。**我们也可以使用 -R来影响文件。

4.符号链接

ln 是 Linux 中的命令行,用于在文件之间创建链接。我们首先在file1和之间创建一个符号链接。

$ ln -s file1 file1_link
$ ls -l
total 2
-rw-rw-r-- 1 ubuntu ubuntu    0 Apr 29 10:30 file1
lrwxrwxrwx 1 ubuntu ubuntu    5 May 15 17:27 file1_link -> file1

要更改由我们的符号链接链接的文件的组所有权,我们必须使用–dereference*选项,以便它只影响我们的符号链接的引用:*

$ sudo chgrp --dereference rachel file1_link
$ ls -l
total 2
-rw-rw-r-- 1 ubuntu rachel 0 Apr 29 10:30 file1
lrwxrwxrwx 1 ubuntu ubuntu 5 May 15 17:27 file1_link -> file1

如果我们想修改符号链接本身,我们使用*–no-dereference*选项:

$ sudo chgrp --no-dereference rachel file1_link
total 2
-rw-rw-r-- 1 ubuntu ubuntu 0 Apr 29 10:30 file1
lrwxrwxrwx 1 ubuntu rachel 5 May 15 17:27 file1_link -> file1

5.子目录

我们现在决定更改组 rachel 下名为mydirectory目录中的所有文件

为此,我们必须使用-R(递归)标志:**

$ sudo chgrp -R rachel ./mydirectory/
$ ls -l
total 4
-rw-rw-r-- 1 ubuntu rachel    0 Apr 29 10:30 file1
-rw-rw-r-- 1 ubuntu rachel    0 Apr 29 10:30 file2
-rw-rw-r-- 1 ubuntu rachel    0 Apr 29 10:30 file3
lrwxrwxrwx 1 ubuntu rachel    5 May 15 17:27 file_link -> file1
drwxrwxr-x 2 ubuntu rachel 4096 Apr 29 12:28 letters

6.详细输出

如果我们想查看有关更改的更多信息,我们可以使用-v(详细)标志:**

$ sudo chgrp -R -v rachel ./mydirectory/
group of './mydirectory/file_link' retained as rachel
group of './mydirectory/file3' retained as rachel
group of './mydirectory/file2' retained as rachel
group of './mydirectory/file1' retained as rachel
group of './mydirectory/letters/readme' retained as rachel
group of './mydirectory/letters/magazines' retained as rachel
group of './mydirectory/letters/books' retained as rachel
group of './mydirectory/letters' retained as rachel
group of './mydirectory/' retained as rachel