什么是pwn技术 chown啥都能干为何还需要chgrp
chown,英文全拼为:change ownerchown可以更改一个文件,文件夹,或符号链接的所有者及组linux文件系统中,每个文件或文件夹都具有所有者以及所在组然而,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
修改组权限和修改文件的权限操作方法基本一致,示例如下:
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
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
使用 -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
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
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
一般情况下,修改一个符号链接时,符号链接指向的文件也会被更改。使用-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
参数-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
默认情况下,如果调用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
// TODO 敬请期待
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com