一、文件的压缩与解压

1、gzip 压缩

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

语法格式

1gzip [参数]  要压缩的文件名
  • -d 实施解压缩操作,等价于 gunzip。
  • -c 保留源文件,配合 > 指定的压缩文件名(后缀必须为 .gz 否则无法解压)。
  • -v 显示压缩比率。
  • -1~9 数字越小,压缩比率越低,花费时间短。
  • -r 递归压缩整个目录(对目录及子目录中的所有文件实施压缩操作)。

实例

  根据指定压缩比例压缩文件,保留源文件并输出压缩比例。

1[root@localhost compress]# gzip -9cv /etc/passwd > a.gz
2/etc/passwd:	 60.1%
3[root@localhost compress]# gzip -1cv /etc/passwd > a.gz
4/etc/passwd:	 58.3%

  gzip 是无法对目录进行压缩的,但可以对目录中的所有文件进行压缩。

1[root@localhost compress]# gzip -r /text
2[root@localhost compress]# ls /text
31.gz  333.gz  a   aaa       a.txr.gz  bbb.gz  b.gz
42.gz  3.gz    aa  a.ttt.gz  a.txt.gz  bb.gz   b.txt.gz

  压缩文件,然后使用 zcat 查看压缩文件的内容。

1[root@localhost compress]# gzip -c a.txt > aa.gz
2[root@localhost compress]# zcat aa.gz

  将文件解压到指定目录。

1[root@localhost compress]# gzip -dc 压缩文件 > 解压到指定目录
2、bzip2 压缩

  bzip2 命令采用新的压缩演算法,压缩效果比传统的 LZ77/LZ78 压缩演算法来得好。若没有加上任何参数,bzip2 压缩完文件后会产生 .bz2 的压缩文件,并删除原始的文件。

语法格式

1bzip2 [参数]  要压缩的文件名
  • -d 实施解压缩操作,等价于 bunzip2。
  • -c 保留源文件,配合 > 指定的压缩文件名(后缀必须为 .bz2 否则无法解压)。
  • bzcat 查看压缩过文件的内容。
3、zip 压缩

  zip 可以压缩文件和目录,压缩后的文件必须以 .zip 结尾。

语法格式

1zip [参数] 压缩后的文件 压缩文件

实例

  将 b 目录,压缩成 b.zip 文件。

1oot@localhost compress]# zip -r b.zip b

  解压 b.zip 文件。

1[root@localhost a]# unzip ../b.zip
4、tar 文件打包

  tar 命令,可以将多个文件或目录打包成一个文件(后缀为 .tar)。在 Linux 中保存文件都是先用 tar 命令将目录或者文件打包成 tar 包,然后再使用 gzip 或 bzip2 压缩。因此,Linux 中已压缩文件的常见后缀有 tar.gz、tar.bz2 等。

语法格式

1tar [参数] 打包后文件名 待打包文件
  • -c 打包。
  • -x 解包。
  • -v 查看过程。
  • -f 指定打包的文件。
  • -P:使用文件名的绝对路径,不移除文件名称前的“/”号。如果不加 -P,直接使用绝对路径tar: Removing leading '/' from member names。(该参数不能放在 -f 后面)

实例

  从网上下载到的文件有 .tar.gz 、.tar.bz2、.tgz、.tar。

  • 仅仅对文件夹打包,得到 .tar 文件,称为 tarfile。
  • 对文件夹打包并且压缩,得到的文件称为 tarball。
    • -z:通过 gzip 指令处理备份文件,文件后缀 .tar.gz。
    • -j:通过 bzip2 指令处理备份文件,文件后缀 .tar.bz2。

1)tarfile

  打包指定文件/文件夹。

1[root@localhost compress]# tar -cf aa.tar aa

  将压缩后的文件,解压到当前文件夹中。

1[root@localhost b]# tar -xf ../aa.tar 

  将压缩后的文件,解压到指定文件夹中。(注:-C 后面跟绝对路径)

1[root@localhost b]# tar -xf ../aa.tar -C /compress/b/

2)tarball

  创建 tarball。

1tar [-z|-j][cvf] tarball文件名 待压目录

  解压。

1tar [-z|-j][xvf] tarball文件名 [-C 目录]

注意:使用参数 -j 或者 -z 一定要和文件的扩展名对应,否则会对后期解压,使用哪个参数造成困扰。

二、用户和组

  Linux 操作系统采用了 UNIX 传统的方法,把全部的用户信息保存为普通的文本文件。

1、用户账号文件——passwd

  /etc/passwd 文件用于用户登录时效验用户的登录名、加密的口令数据项、用户 ID(UID)、默认的用户组 ID(GID)、用户信息、用户主目录以及登录后使用的 shell。文件中的每一行保存一个用户的资料,而用户数据按域以冒号“:”分隔。格式如下所示:

1zyx:x:500:500::/home/zyx:/bin/bash
  1. 用户登录名:zyx
  2. 加密的口令表示:x
  3. UID:500
  4. GID:500
  5. 用户信息:无
  6. 家目录:/home/zyx
  7. 登录后执行的 shell:/bin/bash
2、用户的影子文件——shadow

  Linux 使用不可逆的加密算法(如 MD5,SHA1 等)来加密口令。由于加密算法是不可逆的,所以黑客从密文是得不到明文的。但 /etc/passwd 文件是全局可读的,加密的算法是公开的,一旦恶意用户取得了 /etc/passwd 文件,便极有可能破解口令。在计算机性能日益提高的今天,对账号文件进行字典攻击的成功率越来越高,速度也越来越快。因此,针对这种安全隐患,Linux 系统目前广泛采用了“shadow(影子)文件”机制,将加密的口令转移到 /etc/shadow 文件里。/etc/shadow 文件只为 root 超级用户可读,而相应的 /etc/passwd 文件的密文域显示为一个x,从而最大限度地减少了密文泄露的机会。

  和 /etc/passwd 类似,/etc/shadow 文件中每条记录用冒号“:”分隔,形成 9 个域,格式如下所示:

1zyx:$6$ofxPZws7j9MvSyjb$V9sKuQTQYCG.R33W6YDNAd59Hm6WMiCMRsuOFjNb5FXzp64T7apF1La0abnZvE7Tq5i2/m4Cpd3U/qzS51t6F/:18520:0:99999:7:::
  1. 用户登录名:zyx
  2. 用户加密的口令
  3. 从 1970年1月1日起到上次修改口令所经过的天数为:18520 天。
  4. 需要多少天才能修改这个口令:0 天。
  5. 该口令的过期时间,当前为永不过期。
  6. 要在口令失效前 7 天通知用户,发出警告。
  7. 禁止登录前用户名还有效的天使,未定义。
  8. 用户被禁止登录的时间,未定义。
  9. 保留域,未使用。
3、用户组账号文件——group 和 gshadow

  /etc/group 文件包含关于用户组信息。在 /etc/passwd 中,每个 GID 在 /etc/group 中都应该有相应的项列出用户组和其中的用户。每产生一个用户,就默认产生一个同名的组,该组称为该用户的“主要组”(产生文件,文件所属者,所属组),次要组(辅助组)是指后期把该用户加入的其他组,与权限相关。

  用户组可以像用户一样拥有口令,如果 /etc/group 文件中某行的第二个域为非空(通常用 x 表示),则该组被认为已使用加密口令。/etc/group 文件的格式如下:

1zyx:x:500:
  1. 用户组名为:zyx。
  2. 用户组口令已加密,用“x”表示。
  3. GID 为 500。
  4. 同组的成员用户有:暂无。

  和用户账号文件 passwd 一样,为了防止黑客对其实行暴力攻击,用户组也使用 gshadow 来保存口令。/etc/gshadow 文件的格式如下:

1zyx:!!::
  1. 用户组名:zyx。
  2. 加密后的用户组口令。
  3. 组管理员。
  4. 以逗号分隔的成员用户清单。
4、管理用户和组

1)添加用户

1useradd [参数] 用户名
  • -c:对用户信息的描述(字符串)。
  • -d:设置用户的家目录。
  • -e:设置账号的过期时间(yyyy-mm-dd)。
  • -g:设置该用户的所属组(主要组)。
  • -G:设置该用户的次要组。
  • -s:设置用户使用的命令解释器(shell)。

2)修改密码

1passwd  用户名  ---修改用户的密码

针对root用户

  • -S 查询用户密码的状态,是否锁定。
  • -l 锁定用户。
  • -u 解锁用户。
  • --stdin 可以配合管道将输出的数据作为用户密码。

实例:

1echo "111"|passwd --stdin xs

3)删除用户

1userdel  用户名

4)组操作命令

  添加组。

1groupadd 组名

  修改密码。

1gpasswd  组名

  删除组。

1groupdel 组名

5)添加用户到组中

1gpasswd  -a  用户名   组名

6)从组中删除用户

1gpasswd  -d  用户名   组名

7)设置组的用户

  将多个用户添加到组中,用逗号分隔。每次执行该命令后,以前该组的成员信息被覆盖。

1gpasswd -M  用户名  组名

8)设置组的管理员

1gpasswd -A  用户名 组名

9)把一个用户同时添加到多个组中

1usermod -G  组名[,组名1 ...]  用户名

标题:Linux 中文件的压缩与解压、用户和组 —— Centos 6.5
作者:Yi-Xing
地址:http://zyxwmj.top/articles/2020/10/22/1603356723057.html
博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!