chown,英文全拼为:change ownerchown可以更改一个文件,文件夹,或符号链接的所有者及组linux文件系统中,每个文件或文件夹都具有所有者以及所在组然而,chgrp命令却只能更改文件或文件夹的所在组,今天小编就来聊一聊关于什么是pwn技术 chown啥都能干为何还需要chgrp?接下来我们就一起去研究一下吧!

什么是pwn技术 chown啥都能干为何还需要chgrp

什么是pwn技术 chown啥都能干为何还需要chgrp

命令简介

chown,英文全拼为:change owner。chown可以更改一个文件,文件夹,或符号链接的所有者及组。linux文件系统中,每个文件或文件夹都具有所有者以及所在组。然而,chgrp命令却只能更改文件或文件夹的所在组。

符号链接

符号链接,又被称为软连接。有了软连接,自然有对应的硬链接,这是就是Linux中链接。Linux链接分两种,一种被称为硬链接(Hard Link),一种被称为软连接(符号链接Symbolic Link)。那么这两个链接什么区别呢?最直观的区别:硬链接在源文件被删除后,仍然有效;软连接,在源文件删除后就无效了。

软硬的原理

在Linux的文件系统中,磁盘分区中保存的文件不管是什么类型,系统都会给它分配一个称为索引节点号(Inode Index)的编号。文件系统会让文件名和索引节点号映射上。在我们看来是通过文件名找到文件,实际上操作系统是通过文件名找到索引节点,再通过索引节点找到文件。硬链接,其实就是多个文件名对应一个索引节点。删除一个文件名,其他的文件名依旧存在,其映射的索引节点也是存在的。只有所有的文件名都被删除了,映射的索引节点才会被删除。软连接不同,它本身就类似于Windows的快捷方式,其存放的是源文件,而不是索引节点。源文件删除了,自然也就不可用了。

chgrp示例

chgrp需要root权限才可以修改文件或文件夹的所在组。chgrp的组名参数是必填的。用户可以使用groupadd命令创建新的组。可以通过命令ls -l 查看文件或文件夹的所有者、组信息。

1 使用chgrp修改文件所在组

命令格式:

$ sudo chgrp group_name file_name

示例:

yunzhong@DESKTOP-9VB7LN7:/tmp$ ls -l chgrp.test -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 16:15 chgrp.test yunzhong@DESKTOP-9VB7LN7:/tmp$ sudo chgrp test chgrp.test yunzhong@DESKTOP-9VB7LN7:/tmp$ ls -l chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 16:15 chgrp.test

修改所在组之前,chgrp.test文件的组为yunzhong。修改之后,所在组变为test。

chgrp参数支持输入多个文件或文件夹,可以同时修改多个文件的所在组。

yunzhong@DESKTOP-9VB7LN7:/tmp$ ls -l chgrp.test* -rw-r--r-- 1 yunzhong test 0 Nov 10 16:15 chgrp.test -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 16:18 chgrp.test.1 -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 16:18 chgrp.test.2 yunzhong@DESKTOP-9VB7LN7:/tmp$ sudo chgrp test chgrp.test chgrp.test.1 chgrp.test.2 yunzhong@DESKTOP-9VB7LN7:/tmp$ ls -l chgrp.test* -rw-r--r-- 1 yunzhong test 0 Nov 10 16:15 chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 16:18 chgrp.test.1 -rw-r--r-- 1 yunzhong test 0 Nov 10 16:18 chgrp.test.2

2 使用chgrp修改文件夹的所在组

修改组权限和修改文件的权限操作方法基本一致,示例如下:

yunzhong@DESKTOP-9VB7LN7:/tmp$ ls -l total 60 -rw-r--r-- 1 yunzhong test 0 Nov 10 16:15 chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 16:18 chgrp.test.1 -rw-r--r-- 1 yunzhong test 0 Nov 10 16:18 chgrp.test.2 drwxr-xr-x 2 yunzhong yunzhong 4096 Nov 10 16:27 chgrpdir drwxr-xr-x 2 yunzhong yunzhong 4096 Nov 10 16:27 chgrpdir1 yunzhong@DESKTOP-9VB7LN7:/tmp$ ls -l total 60 -rw-r--r-- 1 yunzhong test 0 Nov 10 16:15 chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 16:18 chgrp.test.1 -rw-r--r-- 1 yunzhong test 0 Nov 10 16:18 chgrp.test.2 drwxr-xr-x 2 yunzhong test 4096 Nov 10 16:27 chgrpdir drwxr-xr-x 2 yunzhong test 4096 Nov 10 16:27 chgrpdir1

3 chgrp 命令修改文件所在组时显示变更信息

chgrp命令的-v 或 --verbose 参数,在修改文件所在组时,显示文件被chgrp处理的信息。命令格式:

$ sudo chgrp -v group_name file_name 或者 $ sudo chgrp --verbose group_name file_name

示例:

yunzhong@DESKTOP-9VB7LN7:/tmp$ sudo chgrp -v yunzhong chgrp.test changed group of 'chgrp.test' from test to yunzhong yunzhong@DESKTOP-9VB7LN7:/tmp$ sudo chgrp yunzhong chgrp.test yunzhong@DESKTOP-9VB7LN7:/tmp$ sudo chgrp test chgrp.test yunzhong@DESKTOP-9VB7LN7:/tmp$ sudo chgrp -v yunzhong chgrp.test changed group of 'chgrp.test' from test to yunzhong yunzhong@DESKTOP-9VB7LN7:/tmp$ sudo chgrp --verbose yunzhong chgrp.test group of 'chgrp.test' retained as yunzhong

4 chgrp命令只有在所有组变更的时候才显示变更信息

使用 -c 或 --changes 参数,可以显示文件或文件夹的所在组变更信息。和-v的参数相似,只不过-c只有在变化的时候才显示信息。命令格式:

$ sudo chgrp -c group_name file_name 或者 $ sudo chgrp --changes group_name file_name

示例:

yunzhong@DESKTOP-9VB7LN7:/tmp$ ls -l chgrp.test* -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 16:15 chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 16:18 chgrp.test.1 -rw-r--r-- 1 yunzhong test 0 Nov 10 16:18 chgrp.test.2 yunzhong@DESKTOP-9VB7LN7:/tmp$ sudo chgrp -c yunzhong chgrp.test yunzhong@DESKTOP-9VB7LN7:/tmp$ sudo chgrp -c test chgrp.test changed group of 'chgrp.test' from yunzhong to test

5 使用chgrp将一个文件的所在组信息拷贝到另一个文件

chgrp可以使用一个文件或文件夹作为参数,设置目标文件的所在组。选项--reference=RFILE 指定参数文件或文件夹。命令格式:

$ sudo chgrp --reference=RFILE file_name

示例:

yunzhong@DESKTOP-9VB7LN7:/tmp$ ls -l chgrp.test* -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 16:15 chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 16:18 chgrp.test.1 -rw-r--r-- 1 yunzhong test 0 Nov 10 16:18 chgrp.test.2 yunzhong@DESKTOP-9VB7LN7:/tmp$ sudo chgrp --reference=./chgrp.test chgrp.test.1 yunzhong@DESKTOP-9VB7LN7:/tmp$ ls -l chgrp.test* -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 16:15 chgrp.test -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 16:18 chgrp.test.1 -rw-r--r-- 1 yunzhong test 0 Nov 10 16:18 chgrp.test.2

6 使用chgrp递归更改文件或文件夹

chgrp的-R选项允许用户修改文件夹及其子文件、子文件夹的所在组信息。当批量修改一个文件夹下所有的文件所在组时,-R选项非常适用。命令格式:

$ sudo chgrp -R group_name dir_name 或者 $ sudo chgrp --recursive group_name dir_name

示例:

yunzhong@DESKTOP-9VB7LN7:/tmp$ ls -l chgrpdir total 4 -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 17:37 chgrp.test -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 17:37 chgrp.test.1 -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 17:37 chgrp.test.2 drwxr-xr-x 2 yunzhong yunzhong 4096 Nov 10 17:39 chgrpdir1 yunzhong@DESKTOP-9VB7LN7:/tmp$ sudo chgrp -R test chgrpdir yunzhong@DESKTOP-9VB7LN7:/tmp$ ls -l chgrpdir total 4 -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.1 -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.2 drwxr-xr-x 2 yunzhong test 4096 Nov 10 17:39 chgrpdir1

7 使用chgrp修改符号链接的所在组

一般情况下,修改一个符号链接时,符号链接指向的文件也会被更改。使用-h或者--no-derefence参数,允许用户只更改符号链接文件的所在组。命令格式:

$ sudo chgrp --no-derefence group_name symbolic_filename 或者 $ sudo chgrp -h group_name symbolic_filename

示例:chgrp是软连接,到chgrp.test。初始状态,两者的group都为yunzhong。使用参数--no-dereference,修改chgrp。chgrp的group变为test,而源文件chgrp.test并没有变化。直接用chgrp命令修改chgrp的group为yunzhong,发现并没有变化。因为此时修改的为源文件chgrp.test,它的group已经为yunzhong。不使用--no-dereference,修改chgrp的group。发现只有源文件chgrp.test的group发生变化。

yunzhong@DESKTOP-9VB7LN7:/tmp/chgrpdir$ ls -l total 4 lrwxrwxrwx 1 yunzhong yunzhong 10 Nov 10 18:10 chgrp -> chgrp.test -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 17:37 chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.1 -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.2 drwxr-xr-x 2 yunzhong test 4096 Nov 10 17:39 chgrpdir1 yunzhong@DESKTOP-9VB7LN7:/tmp/chgrpdir$ sudo chgrp --no-dereference test chgrp yunzhong@DESKTOP-9VB7LN7:/tmp/chgrpdir$ ls -l total 4 lrwxrwxrwx 1 yunzhong test 10 Nov 10 18:10 chgrp -> chgrp.test -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 17:37 chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.1 -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.2 drwxr-xr-x 2 yunzhong test 4096 Nov 10 17:39 chgrpdir1 yunzhong@DESKTOP-9VB7LN7:/tmp/chgrpdir$ sudo chgrp yunzhong chgrp yunzhong@DESKTOP-9VB7LN7:/tmp/chgrpdir$ ls -l total 4 lrwxrwxrwx 1 yunzhong test 10 Nov 10 18:10 chgrp -> chgrp.test -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 17:37 chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.1 -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.2 drwxr-xr-x 2 yunzhong test 4096 Nov 10 17:39 chgrpdir1 yunzhong@DESKTOP-9VB7LN7:/tmp/chgrpdir$ sudo chgrp --no-dereference yunzhong chgrp yunzhong@DESKTOP-9VB7LN7:/tmp/chgrpdir$ ls -l total 4 lrwxrwxrwx 1 yunzhong yunzhong 10 Nov 10 18:10 chgrp -> chgrp.test -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 17:37 chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.1 -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.2 drwxr-xr-x 2 yunzhong test 4096 Nov 10 17:39 chgrpdir1 yunzhong@DESKTOP-9VB7LN7:/tmp/chgrpdir$ sudo chgrp test chgrp yunzhong@DESKTOP-9VB7LN7:/tmp/chgrpdir$ ls -l total 4 lrwxrwxrwx 1 yunzhong yunzhong 10 Nov 10 18:10 chgrp -> chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.1 -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.2 drwxr-xr-x 2 yunzhong test 4096 Nov 10 17:39 chgrpdir1

8 chgrp命令显示或隐藏错误信息

参数-f, --silent 或者 --quiet会关闭错误信息显示。命令格式:

$ sudo chgrp -f 或者 $ sudo chgrp --silent 或者 $ sudo chgrp --quiet

示例:

yunzhong@DESKTOP-9VB7LN7:/tmp/chgrpdir$ sudo chgrp test no_file chgrp: cannot access 'no_file': No such file or directory yunzhong@DESKTOP-9VB7LN7:/tmp/chgrpdir$ sudo chgrp -f test no_file

9 chgrp禁止递归修改root路径下的group

默认情况下,如果调用chgrp -R group_name /会修改所有文件的group信息。可以使用参数--preserve-root,防止输入错误更改所有文件的group。命令格式:

$ sudo chgrp --preserve-root -R group_name /

执行会报错,太危险了,不演示。

10 使用chgrp修改 符号链接的原文件夹

默认情况下,chgrp操作一个文件夹的符号链接,只会更改符号链接文件夹的group信息。可以使用参数-H,更改源文件夹及其子文件、文件夹的group属性。命令格式:

$ sudo chgrp -H -R group_name symbolic_dir

示例:

yunzhong@DESKTOP-9VB7LN7:/tmp$ ls -l chgrpdir total 4 lrwxrwxrwx 1 yunzhong yunzhong 10 Nov 10 18:10 chgrp -> chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.1 -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.2 drwxr-xr-x 2 yunzhong test 4096 Nov 10 17:39 chgrpdir1 yunzhong@DESKTOP-9VB7LN7:/tmp$ sudo chgrp -R yunzhong chgrpdirln [sudo] password for yunzhong: yunzhong@DESKTOP-9VB7LN7:/tmp$ ls -l chgrpdir total 4 lrwxrwxrwx 1 yunzhong yunzhong 10 Nov 10 18:10 chgrp -> chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.1 -rw-r--r-- 1 yunzhong test 0 Nov 10 17:37 chgrp.test.2 drwxr-xr-x 2 yunzhong test 4096 Nov 10 17:39 chgrpdir1 yunzhong@DESKTOP-9VB7LN7:/tmp$ sudo chgrp -R -H yunzhong chgrpdirln yunzhong@DESKTOP-9VB7LN7:/tmp$ ls -l chgrpdir total 4 lrwxrwxrwx 1 yunzhong yunzhong 10 Nov 10 18:10 chgrp -> chgrp.test -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 17:37 chgrp.test -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 17:37 chgrp.test.1 -rw-r--r-- 1 yunzhong yunzhong 0 Nov 10 17:37 chgrp.test.2 drwxr-xr-x 2 yunzhong yunzhong 4096 Nov 10 17:39 chgrpdir1

chown示例

// TODO 敬请期待

,