CHGRP命令指南
Contents
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