linux菜鸟学习(七)----chmod,tar,chgrp,chown,gzip

chmod命令

用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。
  文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。
  有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。
  每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。 例如:

[root@localhost A]# ls -al

总用量 8

drwxr-xr-x  3root  root  131 7  17 10:22 .

drwxr-xr-x. 3 alpha alpha  14 7   5 17:10 ..

-rw-r--r--  1root  root   37 7  15 11:53 abc.log

lrwxrwxrwx  1root  root    7 7  17 10:21 alink.log ->abc.log

-rw-r--r--  1root  root  328 7  15 18:44 a.php

-rw-r--r--  1root  root    0 7  15 11:17 b.log

-rw-r--r--  1root  root    0 7  15 11:17 c.log

-rw-r--r--  1root  root    0 7  15 11:17 d.log

-rw-r--r--  1root  root    0 7  15 11:17 e.log

-rw-r--r--  1root  root    0 7  15 11:17 f.log

-rw-r--r--  1root  root    0 7  15 11:17 g.log

drwxr-xr-x  2root  root   18 7  17 10:58 test

我们以abc.log为例:

-rw-r--r--  1 root root   37 7  15 11:53 abc.log

第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。

例如:
  - rw- r-- r--
  表示abc.log是一个普通文件;abc.log的属主有读写权限;与abc.log属主同组的用户只有读权限;其他用户也只有读权限。

  确定了一个文件的访问权限后,用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限。也可以利用chown命令来更改某个文件或目录的所有者。利用chgrp命令来更改某个文件或目录的用户组。 

chmod命令是非常重要的,用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。chmod命令详细情况如下。

1. 命令格式:

chmod [-cfvR] [--help] [--version] mode file   

2. 命令功能:

用于改变文件或目录的访问权限,用它控制文件或目录的访问权限。

3. 命令参数:

必要参数:
-c 当发生改变时,报告处理信息
-f 错误信息不输出
-R 处理指定目录以及其子目录下的所有文件
-v 运行时显示详细处理信息

选择参数:
--reference=<目录或者文件> 设置成具有指定目录或者文件具有相同的权限
--version 显示版本信息
<权限范围>+<权限设置> 使权限范围内的目录或者文件具有指定的权限
<权限范围>-<权限设置> 删除权限范围的目录或者文件的指定权限
<权限范围>=<权限设置> 设置权限范围内的目录或者文件的权限为指定的值

权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组

权限代号:
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限 

该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
  1). 文字设定法:
   chmod [who] [+ | - | =] [mode] 文件名
  2). 数字设定法
  我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
  例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。
  数字设定法的一般形式为:
   chmod [mode] 文件名

数字与字符对应关系如下:

r=4,w=2,x=1
若要rwx属性则4+2+1=7
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。 

1:增加文件所有用户组可执行权限

chmod a+x log2012.log

[root@localhost A]# ls -al abc.log

-rw-r--r-- 1 root root 37 7  15 11:53 abc.log

[root@localhost A]# chmod a+x abc.log

[root@localhost A]# ls -al abc.log

-rwxr-xr-x 1 root root 37 7  15 11:53 abc.log

说明:即设定文件abc.log的属性为:文件属主(u 增加执行权限;与文件属主同组用户(g 增加执行权限;其他用户(o 增加执行权限。

2:同时修改不同用户权限

chmod ug+w,o-x abc.log

输出:

[root@localhost A]# chmod a+x abc.log

[root@localhost A]# ls -al abc.log

-rwxr-xr-x 1 root root 37 7  15 11:53 abc.log

[root@localhost A]# chmod ug+w,o-x abc.log

[root@localhost A]# ls -al abc.log

-rwxrwxr-- 1 root root 37 7  15 11:53 abc.log

说明:
  即设定文件text的属性为:文件属主(u) 增加写权限;与文件属主同组用户(g) 增加写权限;其他用户(o) 删除执行权限

3:删除文件权限

chmod a-x abc.log

输出:

[root@localhost A]# ls -al abc.log

-rwxrwxr-- 1 root root 37 7  15 11:53 abc.log

[root@localhost A]# chmod a-x abc.log

[root@localhost A]# ls -al abc.log

-rw-rw-r-- 1 root root 37 7  15 11:53 abc.log

说明:删除所有用户的可执行权限 

4:使用“=”设置权限 

chmod u=x abc.log

输出:

[root@localhost A]# ls -al abc.log

-rw-rw-r-- 1 root root 37 7  15 11:53 abc.log

[root@localhost A]# chmod u=x abc.log

[root@localhost A]# ls -al abc.log

---xrw-r-- 1 root root 37 7 15 11:53 abc.log

说明:使拥有者具有可读权限,其他go权限不限

5:对一个目录及其子目录所有文件添加权限 

命令:

chmod -R u+x test

输出:

[root@localhost A]# cd test

[root@localhost test]# ls -al

总用量 0

drwxr-xr-x 2 root root 30 7  17 18:40 .

drwxr-xr-x 3 root root 131 7  17 10:22 ..

-rw-r--r-- 1 root root  0 7  15 18:34 b.log

-rw-r--r-- 1 root root  0 7  17 18:40 v.log

[root@localhost test]# cd ..

[root@localhost A]# chmod -R u+x test

[root@localhost A]# cd test

[root@localhost test]# ls -al

总用量 0                            

drwxr-xr-x 2 root root 30 7  17 18:40 .

drwxr-xr-x 3 root root 131 7  17 10:22 ..

-rwxr--r-- 1 root root  0 7  15 18:34 b.log

-rwxr--r-- 1 root root  0 7  17 18:40 v.log

说明:递归地给test目录下所有文件和子目录的属主分配权限 

其他一些实例:

1

chmod 751 file   或者  chmod u=rwx,g=rx,o=x file 

说明:给file的属主(u)分配读、写、执行(7)的权限,给file的所在组(g)分配读、执行(5)的权限,给其他用户(o)分配执行(1)的权限

2

chmod =r file  或者 chmod 444 file 

说明:为所有用户分配读权限

3

命令:

chmod a-wx,a+r   file

tar 命令

通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具。linux中最流行的tar是麻雀虽小,五脏俱全,功能强大。

tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。

首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。

linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩。

1.命令格式:

tar[必要参数][选择参数][文件] 

2.命令功能:

用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的 

3.命令参数:

必要参数有如下:

-A 新增压缩文件到已存在的压缩

-B 设置区块大小

-c 建立新的压缩文件

-d 记录文件的差别

-r 添加文件到已经压缩的文件

-u 添加改变了和现有的文件到已经存在的压缩文件

-x 从压缩的文件中提取文件

-t 显示压缩文件的内容

-z 支持gzip解压文件

-j 支持bzip2解压文件

-Z 支持compress解压文件

-v 显示操作过程

-l 文件系统边界设置

-k 保留原有文件不覆盖

-m 保留文件不被覆盖

-W 确认压缩文件的正确性

可选参数如下:

-b 设置区块数目

-C 切换到指定目录

-f 指定压缩文件

--help 显示帮助信息

--version 显示版本信息

4.常见解压/压缩命令

tar 
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)


.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName

.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName

.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName

.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName

.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知

.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知

.Z
解压:uncompress FileName.Z
压缩:compress FileName

.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName

.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName

.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName 


1[root@localhost A]# ls -al a.php

-rw-r--r-- 1 root root 328 7  15 18:44 a.php

[root@localhost A]# tar -cvf php.tar a.php

a.php

[root@localhost A]# tar -zcvf php.tar.gz a.php

a.php

[root@localhost A]# tar -jcvf php.tar.bz2 a.php

a.php

[root@localhost A]# ls -al *.tar*

-rw-r--r-- 1 root root 10240 7  18 11:58 php.tar

-rw-r--r-- 1 root root  347 7  18 11:59php.tar.bz2

-rw-r--r-- 1 root root  314 7  18 11:59php.tar.gz

说明:

tar -cvf php.tar a.php    仅打包,不压缩! 

tar -zcvf php.tar.gz a.php   打包后,以 gzip 压缩 

tar -zcvf php.tar.bz2 a.php  打包后,以 bzip2 压缩 

在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加 z 参数,则以 .tar.gz  .tgz 来代表 gzip 压缩过的 tar包; 如果加 j 参数,则以 .tar.bz2 来作为tar包名。

2:查阅上述 tar包内有哪些文件

tar -ztvf php.tar.gz

输出:

[root@localhost A]# tar -ztvf php.tar.gz

-rw-r--r-- root/root       328 2016-07-15 18:44 a.php

说明:

由于我们使用 gzip 压缩的php.tar.gz,所以要查阅php.tar.gz包内的文件时,就得要加上 z 这个参数了。

3:将tar 包解压缩

tar -zxvf /opt/soft/test/log.tar.gz

输出:

[root@localhost test1]#ll

总计 0

[root@localhost test1]# tar -zxvf /home/alpha/桌面/A/test/php.tar.gz

a.php

[root@localhost test1]# ll

总用量 4

-rw-r--r-- 1 root root 328 7  15 18:44 a.php

说明:

在预设的情况下,我们可以将压缩档在任何地方解开的

4:只将 /tar 内的 部分文件解压出来

tar -zcvf now.tar.gz a.php b.log

[root@localhost A]# tar -zcvf now.tar.gz a.php b.log

a.php

b.log

[root@localhost A]# ls -al  now.tar.gz

-rw-r--r-- 1 root root 340 7  18 17:57 now.tar.gz

[root@localhost A]# cd test1

[root@localhost test1]# ll

总用量 0

[root@localhost test1]# tar -zxvf/home/alpha/桌面/A/now.tar.gz a.php

a.php

说明:我可以透过 tar -ztvf 来查阅 tar 包内的文件名称,如果单只要一个文件,就可以透过这个方式来解压部分文件!

5:文件备份下来,并且保存其权限

tar –zcvpf new.php.tar.gz php.tarphp.tar.gz php.tar.bz2 

[root@localhost test]# ll

总用量 20

-rw-r--r-- 1 root root 10240 7  18 11:58 php.tar

-rw-r--r-- 1 root root   347 7  18 11:59 php.tar.bz2

-rw-r--r-- 1 root root   314 7  18 11:59 php.tar.gz

[root@localhost test]# tar -zcvpfnew.php.tar.gz php*

php.tar

php.tar.bz2

php.tar.gz

[root@localhost test]# cd ..

[root@localhost test1]# ll

总用量 0

[root@localhost test1]# tar -zxvpf/home/alpha/桌面/A/test/new.php.tar.gz

php.tar

php.tar.bz2

php.tar.gz

[root@localhost test1]# ll

总用量 20

-rw-r--r-- 1 root root 10240 7  18 11:58 php.tar

-rw-r--r-- 1 root root   347 7  18 11:59 php.tar.bz2

-rw-r--r-- 1 root root   314 7  18 11:59 php.tar.gz

说明:这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时

 

6:在 文件夹当中,比某个日期新的文件才备份

tar -N "2016/7/19" -zcvfnew.tar.gz test

[root@localhost 桌面]# cd A

[root@localhost A]# ll

总用量 16

-rw-r--r-- 1 root root  328 7  15 18:44 a.php

-rw-r--r-- 1 root root  314 7  18 18:31 a.tar.bz2

-rw-r--r-- 1 root root   45 7  20 16:09 A.tar.gz

-rw-r--r-- 1 root root 2416 7  18 18:27 ok.tar.gz

drwxr-xr-x 2 root root   76 7  11 22:22 test

drwxr-xr-x 2 root root   67 7  18 18:34 test1

[root@localhost A]# cd ..

[root@localhost 桌面]# tar -N "2016/07/19" -zcvf new.tar.gz A

tar: 选项 --after-date:将日期2016/07/19当作 2016-07-19 00:00:00

A/

A/test/

tar: A/test/php.tar: 文件未改变;未输出

tar: A/test/php.tar.bz2: 文件未改变;未输出

tar: A/test/php.tar.gz: 文件未改变;未输出

tar: A/test/new.php.tar.gz: 文件未改变;未输出

A/test1/

tar: A/test1/php.tar: 文件未改变;未输出

tar: A/test1/php.tar.bz2: 文件未改变;未输出

tar: A/test1/php.tar.gz: 文件未改变;未输出

tar: A/test1/a.php: 文件未改变;未输出

tar: A/ok.tar.gz: 文件未改变;未输出

tar: A/a.tar.bz2: 文件未改变;未输出

tar: A/a.php: 文件未改变;未输出

A/A.tar.gz

[root@localhost 桌面]# ll

总用量 4

drwxr-xr-x 4 root root  88 7  20 16:09 A

-rw-r--r-- 1 root root 247 7  20 16:18 new.tar.gz

 [root@localhost 桌面]# tar -ztvf new.tar.gz

drwxr-xr-x root/root         0 2016-07-20 16:09 A/

drwxr-xr-x root/root         0 2016-07-11 22:22 A/test/

drwxr-xr-x root/root         0 2016-07-18 18:34 A/test1/

-rw-r--r-- root/root        45 2016-07-20 16:09 A/A.tar.gz

说明:只备份比2016/07/19新的文件;

7:备份文件夹内容是排除部分文件

tar --exclude A/test -zcvf A.tar.gz A/*

[root@localhost A]# tree

.

├── a.php

├── a.tar.bz2

├── ok.tar.gz

├── test

?? ├── new.php.tar.gz

?? ├── php.tar

?? ├── php.tar.bz2

?? └── php.tar.gz

└── test1

   ├── a.php

   ├── php.tar

   ├── php.tar.bz2

└── php.tar.gz

[root@localhost A]# cd ..

[root@localhost 桌面]# tar --exclude A/test -zcvf A.tar.gz A/*

A/a.php

A/a.tar.bz2

A/A.tar.gz

A/ok.tar.gz

A/test1/

A/test1/php.tar

A/test1/php.tar.bz2

A/test1/php.tar.gz

A/test1/a.php

说明:除A文件夹下面的test文件夹不备份,其他的都备份。

chgrp 命令

在lunix系统里,文件或目录的权限的掌控以拥有者及所诉群组来管理。可以使用chgrp指令取变更文件与目录所属群组,这种方式采用群组名称或群组识别码都可以。Chgrp命令就是change group的缩写!要被改变的组名必须要在/etc/group文件内存在才行。

1.命令格式:

chgrp [选项] [组] [文件]

2.命令功能:

chgrp命令可采用群组名称或群组识别码的方式改变文件或目录的所属群组。使用权限是超级用户。 

3.命令参数:

必要参数:

-c 当发生改变时输出调试信息

-f 不显示错误信息

-R 处理指定目录以及其子目录下的所有文件

-v 运行时显示详细的处理信息

--dereference 作用于符号链接的指向,而不是符号链接本身

--no-dereference 作用于符号链接本身

选择参数:

--reference=<文件或者目录>

--help 显示帮助信息

--version 显示版本信息

1:改变文件的群组属性 

命令:

chgrp -v bin a.php

输出:

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 root root 328 7  15 18:44 a.php

drwxr-xr-x 2 root root   6 7  20 16:37 test

drwxr-xr-x 2 root root  67 7  18 18:34 test1

[root@localhost A]# chgrp -v bina.php

changed group of "a.php"from root to bin

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 root bin  328 7  15 18:44 a.php

drwxr-xr-x 2 root root   6 7  20 16:37 test

drwxr-xr-x 2 root root  67 7  18 18:34 test1

说明:

a.php文件由root群组改为bin群组

2:根据指定文件改变文件的群组属性 

命令:

chgrp --reference=a.php b.php

输出:

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 root bin  328 7  15 18:44 a.php

-rw-r--r-- 1 root root   0 7  21 10:31 b.php

drwxr-xr-x 2 root root   6 7  20 16:37 test

drwxr-xr-x 2 root root  67 7  18 18:34 test1

[root@localhost A]# chgrp--reference=a.php b.php

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 root bin  328 7  15 18:44 a.php

-rw-r--r-- 1 root bin    0 7  21 10:31 b.php

drwxr-xr-x 2 root root   6 7  20 16:37 test

drwxr-xr-x 2 root root  67 7  18 18:34 test1说明:

改变文件b.php的群组属性,使得文件b.php的群组属性和参考文件a.php的群组属性相同

3:改变指定目录以及其子目录下的所有文件的群组属性 

命令:

输出:

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 root bin  328 7  15 18:44 a.php

-rw-r--r-- 1 root bin    0 7  21 10:31 b.php

drwxr-xr-x 2 root root   6 7  20 16:37 test

drwxr-xr-x 2 root root  67 7  18 18:34 test1

[root@localhost A]# cd test

[root@localhost test]# ll

总用量 0

[root@localhost test]# cd ..

[root@localhost A]# cd test1

[root@localhost test1]# ll

总用量 24

-rw-r--r-- 1 root root   328 7  15 18:44 a.php

-rw-r--r-- 1 root root 10240 7  18 11:58 php.tar

-rw-r--r-- 1 root root   347 7  18 11:59 php.tar.bz2

-rw-r--r-- 1 root root   314 7  18 11:59 php.tar.gz

[root@localhost test1]# cd ..

[root@localhost A]# chgrp -R bintest1

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 root bin  328 7  15 18:44 a.php

-rw-r--r-- 1 root bin    0 7  21 10:31 b.php

drwxr-xr-x 2 root root   6 7  20 16:37 test

drwxr-xr-x 2 root bin   67 7  18 18:34 test1

[root@localhost A]# cd test1

[root@localhost test1]# ll

总用量 24

-rw-r--r-- 1 root bin   328 7  15 18:44 a.php

-rw-r--r-- 1 root bin 10240 7  18 11:58 php.tar

-rw-r--r-- 1 root bin   347 7  18 11:59 php.tar.bz2

-rw-r--r-- 1 root bin   314 7  18 11:59 php.tar.gz

说明:

改变指定目录以及其子目录下的所有文件的群组属性

4:通过群组识别码改变文件群组属性

命令:

chgrp -R 100 test1

输出:

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 root bin  328 7  15 18:44 a.php

-rw-r--r-- 1 root bin    0 7  21 10:31 b.php

drwxr-xr-x 2 root root   6 7  20 16:37 test

drwxr-xr-x 2 root bin   67 7  18 18:34 test1

[root@localhost A]# chgrp -R 100test1

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 root bin   328 7  15 18:44 a.php

-rw-r--r-- 1 root bin     0 7  21 10:31 b.php

drwxr-xr-x 2 root root    6 7  20 16:37 test

drwxr-xr-x 2 root users  67 7  18 18:34 test1

[root@localhost A]# cd test1

[root@localhost test1]# ll

总用量 24

-rw-r--r-- 1 root users   328 7  15 18:44 a.php

-rw-r--r-- 1 root users 10240 7  18 11:58 php.tar

-rw-r--r-- 1 root users   347 7  18 11:59 php.tar.bz2

-rw-r--r-- 1 root users   314 7  18 11:59 php.tar.gz

说明:

通过群组识别码改变文件群组属性,100users群组的识别码,具体群组和群组识别码可以去/etc/group文件中查看


chown 命令

chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。

  1.命令格式:

    chown [选项]... [所有者][:[组]] 文件...

  2.命令功能:

    通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。

  3.命令参数:

  必要参数:

    -c 显示更改的部分的信息

    -f 忽略错误信息

    -h 修复符号链接

    -R 处理指定目录以及其子目录下的所有文件

    -v 显示详细的处理信息

    -deference 作用于符号链接的指向,而不是链接文件本身

  选择参数:

    --reference=<目录或文件> 把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组

    --from=<当前用户:当前群组> 只有当前用户和群组跟指定的用户和群组相同时才进行改变

    --help 显示帮助信息

    --version 显示版本信息

1:改变拥有者和群组

命令:

chown mail:mail a.php

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 root bin   328 7  15 18:44 a.php

-rw-r--r-- 1 root bin     0 7  21 10:31 b.php

drwxr-xr-x 2 root root    6 7  20 16:37 test

drwxr-xr-x 2 root users  67 7  18 18:34 test1

 [root@localhost A]# chown mail:mail a.php

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 mail mail  328 7  15 18:44 a.php

-rw-r--r-- 1 root bin     0 7  21 10:31 b.php

drwxr-xr-x 2 root root    6 7  20 16:37 test

drwxr-xr-x 2 root users  67 7  18 18:34 test1


2:改变文件拥有者和群组

命令:

chown root: a.php

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 mail mail  328 7  15 18:44 a.php

-rw-r--r-- 1 root bin     0 7  21 10:31 b.php

drwxr-xr-x 2 root root    6 7  20 16:37 test

drwxr-xr-x 2 root users  67 7  18 18:34 test1

[root@localhost A]# chown root:a.php

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 root root  328 7  15 18:44 a.php

-rw-r--r-- 1 root bin     0 7  21 10:31 b.php

drwxr-xr-x 2 root root    6 7  20 16:37 test

drwxr-xr-x 2 root users  67 7  18 18:34 test1

3:改变文件群组

命令:

chown :mail b.php  

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 root root  328 7  15 18:44 a.php

-rw-r--r-- 1 root bin     0 7  21 10:31 b.php

drwxr-xr-x 2 root root    6 7  20 16:37 test

drwxr-xr-x 2 root users  67 7  18 18:34 test1

[root@localhost A]# chown :mailb.php

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 root root  328 7  15 18:44 a.php

-rw-r--r-- 1 root mail    0 7  21 10:31 b.php

drwxr-xr-x 2 root root    6 7  20 16:37 test

drwxr-xr-x 2 root users  67 7  18 18:34 test1

4:改变指定目录以及其子目录下的所有文件的拥有者和群组

命令:chown -R -v root:mail test1

[root@localhost test1]# ll

总用量 24

-rw-r--r-- 1 root users   328 7  15 18:44 a.php

-rw-r--r-- 1 root users 10240 7  18 11:58 php.tar

-rw-r--r-- 1 root users   347 7  18 11:59 php.tar.bz2

-rw-r--r-- 1 root users   314 7  18 11:59 php.tar.gz

[root@localhost test1]# cd ..

[root@localhost A]# chown -R -v root:mail test1

changed ownership of "test1/php.tar" fromroot:users to root:mail

changed ownership of "test1/php.tar.bz2" fromroot:users to root:mail

changed ownership of "test1/php.tar.gz" fromroot:users to root:mail

changed ownership of "test1/a.php" from root:usersto root:mail

changed ownership of "test1" from root:usersto root:mail

[root@localhost test1]# ll

总用量 24

-rw-r--r-- 1 root mail  328 7  15 18:44 a.php

-rw-r--r-- 1 root mail 10240 7  18 11:58 php.tar

-rw-r--r-- 1 root mail  347 7  18 11:59php.tar.bz2

-rw-r--r-- 1 root mail  314 7  18 11:59php.tar.gz

23.gzip 命令

 

减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。

1命令格式:

gzip[参数][文件或者目录]

2命令功能:

gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。

3命令参数:

-a或--ascii  使用ASCII文字模式。 

-c或--stdout或--to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。 

-d或--decompress或----uncompress  解开压缩文件。 

-f或--force  强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。 

-h或--help  在线帮助。 

-l或--list  列出压缩文件的相关信息。 

-L或--license  显示版本与版权信息。 

-n或--no-name  压缩文件时,不保存原来的文件名称及时间戳记。 

-N或--name  压缩文件时,保存原来的文件名称及时间戳记。 

-q或--quiet  不显示警告信息。 

-r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 

-S<压缩字尾字符串>或----suffix<压缩字尾字符串>  更改压缩字尾字符串。 

-t或--test  测试压缩文件是否正确无误。 

-v或--verbose  显示指令执行过程。 

-V或--version  显示版本信息。 

-num 用指定的数字num调整压缩的速度,-1--fast表示最快压缩方法(低压缩比),-9--best表示最慢压缩方法(高压缩比)。系统缺省值为6 

1:把test6目录下的每个文件压缩成.gz文件

gzip *

 [root@localhost test1]# ll

总用量 0

-rw-r--r-- 1 root root 0 7  21 15:57 a.php

-rw-r--r-- 1 root root 0 7  21 15:57 b.php

-rw-r--r-- 1 root root 0 7  21 15:57 c.php

[root@localhost test1]# gzip *

[root@localhost test1]# ll

总用量 12

-rw-r--r-- 1 root root 26 7  21 15:57 a.php.gz

-rw-r--r-- 1 root root 26 7  21 15:57 b.php.gz

-rw-r--r-- 1 root root 26 7  21 15:57 c.php.gz

2:把例1中每个压缩的文件解压,并列出详细的信息

命令:

gzip -dv *

输出:

[root@localhost test1]# ll

总用量 12

-rw-r--r-- 1 root root 26 7  21 15:57 a.php.gz

-rw-r--r-- 1 root root 26 7  21 15:57 b.php.gz

-rw-r--r-- 1 root root 26 7  21 15:57 c.php.gz

[root@localhost test1]# gzip -dv *

a.php.gz:         0.0% -- replaced with a.php

b.php.gz:         0.0% -- replaced with b.php

c.php.gz:         0.0% -- replaced with c.php

[root@localhost test1]# ll

总用量 0

-rw-r--r-- 1 root root 0 7  21 15:57 a.php

-rw-r--r-- 1 root root 0 7  21 15:57 b.php

-rw-r--r-- 1 root root 0 7  21 15:57 c.php

3:详细显示例1中每个压缩的文件的信息,并不解压

gzip -l *

输出:

[root@localhost test1]# ll

总用量 12

-rw-r--r-- 1 root root 26 7  21 15:57 a.php.gz

-rw-r--r-- 1 root root 26 7  21 15:57 b.php.gz

-rw-r--r-- 1 root root 26 7  21 15:57 c.php.gz

[root@localhost test1]# gzip -l *

         compressed        uncompressed  ratio uncompressed_name

                 26                   0   0.0% a.php

                 26                   0   0.0% b.php

                 26                   0   0.0% c.php

4:压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gz

命令:

gzip -r a.tar

[root@localhost test1]# ll

总用量 12

-rw-r--r-- 1 root root     0 7  21 15:57 a.php

-rw-r--r-- 1 root root 10240 7  21 16:18 a.tar

-rw-r--r-- 1 root root     0 7  21 15:57 b.php

-rw-r--r-- 1 root root     0 7  21 15:57 c.php

[root@localhost test1]# ls -ala.tar

-rw-r--r-- 1 root root 10240 7  21 16:18 a.tar

[root@localhost test1]# gzip -ra.tar

[root@localhost test1]# ls -ala.tar.gz

-rw-r--r-- 1 root root 114 7  21 16:18 a.tar.gz

5:递归的压缩目录

命令:

gzip -rv test1

[root@localhost test1]# ll

总用量 0

-rw-r--r-- 1 root root 0 7  21 15:57 a.php

-rw-r--r-- 1 root root 0 7  21 15:57 b.php

-rw-r--r-- 1 root root 0 7  21 15:57 c.php

[root@localhost test1]# cd ..

[root@localhost A]# gzip -rv test1

test1/a.php:      0.0% -- replaced with test1/a.php.gz

test1/b.php:      0.0% -- replaced with test1/b.php.gz

test1/c.php:      0.0% -- replaced with test1/c.php.gz

[root@localhost A]# cd test1

[root@localhost test1]# ll

总用量 12

-rw-r--r-- 1 root root 26 7  21 15:57 a.php.gz

-rw-r--r-- 1 root root 26 7  21 15:57 b.php.gz

-rw-r--r-- 1 root root 26 7  21 15:57 c.php.gz

说明:

这样,所有test1下面的文件都变成了*.gz,目录依然存在只是目录里面的文件相应变成了*.gz.这就是压缩,和打包不同。因为是对目录操作,所以需要加上-r选项,这样也可以对子目录进行递归了。 

6:递归地解压目录

命令:

gzip -dr test1

输出:

[root@localhost test1]# ll

总用量 12

-rw-r--r-- 1 root root 26 7  21 15:57 a.php.gz

-rw-r--r-- 1 root root 26 7  21 15:57 b.php.gz

-rw-r--r-- 1 root root 26 7  21 15:57 c.php.gz

[root@localhost test1]# cd ..

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 root root 328 7  15 18:44 a.php

-rw-r--r-- 1 root mail   0 7  21 10:31 b.php

drwxr-xr-x 2 root mail   6 7  20 16:37 test

drwxr-xr-x 2 root mail  51 7  21 16:27 test1

[root@localhost A]# gzip -dr test1

[root@localhost A]# ll

总用量 4

-rw-r--r-- 1 root root 328 7  15 18:44 a.php

-rw-r--r-- 1 root mail   0 7  21 10:31 b.php

drwxr-xr-x 2 root mail   6 7  20 16:37 test

drwxr-xr-x 2 root mail  42 7  21 16:28 test1

[root@localhost A]# cd test1

[root@localhost test1]# ll

总用量 0

-rw-r--r-- 1 root root 0 7  21 15:57 a.php

-rw-r--r-- 1 root root 0 7  21 15:57 b.php

-rw-r--r-- 1 root root 0 7  21 15:57 c.php


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值