一、文件的压缩与解压
1、gzip 压缩
gzip 是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出“.gz”扩展名。
语法格式
gzip [参数] 要压缩的文件名
- -d 实施解压缩操作,等价于 gunzip。
- -c 保留源文件,配合 > 指定的压缩文件名(后缀必须为 .gz 否则无法解压)。
- -v 显示压缩比率。
- -1~9 数字越小,压缩比率越低,花费时间短。
- -r 递归压缩整个目录(对目录及子目录中的所有文件实施压缩操作)。
实例
根据指定压缩比例压缩文件,保留源文件并输出压缩比例。
[root@localhost compress]# gzip -9cv /etc/passwd > a.gz
/etc/passwd: 60.1%
[root@localhost compress]# gzip -1cv /etc/passwd > a.gz
/etc/passwd: 58.3%
gzip 是无法对目录进行压缩的,但可以对目录中的所有文件进行压缩。
[root@localhost compress]# gzip -r /text
[root@localhost compress]# ls /text
1.gz 333.gz a aaa a.txr.gz bbb.gz b.gz
2.gz 3.gz aa a.ttt.gz a.txt.gz bb.gz b.txt.gz
压缩文件,然后使用 zcat 查看压缩文件的内容。
[root@localhost compress]# gzip -c a.txt > aa.gz
[root@localhost compress]# zcat aa.gz
将文件解压到指定目录。
[root@localhost compress]# gzip -dc 压缩文件 > 解压到指定目录
2、bzip2 压缩
bzip2 命令采用新的压缩演算法,压缩效果比传统的 LZ77/LZ78 压缩演算法来得好。若没有加上任何参数,bzip2 压缩完文件后会产生 .bz2 的压缩文件,并删除原始的文件。
语法格式
bzip2 [参数] 要压缩的文件名
- -d 实施解压缩操作,等价于 bunzip2。
- -c 保留源文件,配合 > 指定的压缩文件名(后缀必须为 .bz2 否则无法解压)。
- bzcat 查看压缩过文件的内容。
3、zip 压缩
zip 可以压缩文件和目录,压缩后的文件必须以 .zip 结尾。
语法格式
zip [参数] 压缩后的文件 压缩文件
实例
将 b 目录,压缩成 b.zip 文件。
oot@localhost compress]# zip -r b.zip b
解压 b.zip 文件。
[root@localhost a]# unzip ../b.zip
4、tar 文件打包
tar 命令,可以将多个文件或目录打包成一个文件(后缀为 .tar)。在 Linux 中保存文件都是先用 tar 命令将目录或者文件打包成 tar 包,然后再使用 gzip 或 bzip2 压缩。因此,Linux 中已压缩文件的常见后缀有 tar.gz、tar.bz2 等。
语法格式
tar [参数] 打包后文件名 待打包文件
- -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
打包指定文件/文件夹。
[root@localhost compress]# tar -cf aa.tar aa
将压缩后的文件,解压到当前文件夹中。
[root@localhost b]# tar -xf ../aa.tar
将压缩后的文件,解压到指定文件夹中。(注:-C 后面跟绝对路径)
[root@localhost b]# tar -xf ../aa.tar -C /compress/b/
2)tarball
创建 tarball。
tar [-z|-j][cvf] tarball文件名 待压目录
解压。
tar [-z|-j][xvf] tarball文件名 [-C 目录]
注意:使用参数 -j 或者 -z 一定要和文件的扩展名对应,否则会对后期解压,使用哪个参数造成困扰。
二、用户和组
Linux 操作系统采用了 UNIX 传统的方法,把全部的用户信息保存为普通的文本文件。
1、用户账号文件——passwd
/etc/passwd 文件用于用户登录时效验用户的登录名、加密的口令数据项、用户 ID(UID)、默认的用户组 ID(GID)、用户信息、用户主目录以及登录后使用的 shell。文件中的每一行保存一个用户的资料,而用户数据按域以冒号“:”分隔。格式如下所示:
zyx:x:500:500::/home/zyx:/bin/bash
- 用户登录名:zyx
- 加密的口令表示:x
- UID:500
- GID:500
- 用户信息:无
- 家目录:/home/zyx
- 登录后执行的 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 个域,格式如下所示:
zyx:$6$ofxPZws7j9MvSyjb$V9sKuQTQYCG.R33W6YDNAd59Hm6WMiCMRsuOFjNb5FXzp64T7apF1La0abnZvE7Tq5i2/m4Cpd3U/qzS51t6F/:18520:0:99999:7:::
- 用户登录名:zyx
- 用户加密的口令
- 从 1970年1月1日起到上次修改口令所经过的天数为:18520 天。
- 需要多少天才能修改这个口令:0 天。
- 该口令的过期时间,当前为永不过期。
- 要在口令失效前 7 天通知用户,发出警告。
- 禁止登录前用户名还有效的天使,未定义。
- 用户被禁止登录的时间,未定义。
- 保留域,未使用。
3、用户组账号文件——group 和 gshadow
/etc/group 文件包含关于用户组信息。在 /etc/passwd 中,每个 GID 在 /etc/group 中都应该有相应的项列出用户组和其中的用户。每产生一个用户,就默认产生一个同名的组,该组称为该用户的“主要组”(产生文件,文件所属者,所属组),次要组(辅助组)是指后期把该用户加入的其他组,与权限相关。
用户组可以像用户一样拥有口令,如果 /etc/group 文件中某行的第二个域为非空(通常用 x 表示),则该组被认为已使用加密口令。/etc/group 文件的格式如下:
zyx:x:500:
- 用户组名为:zyx。
- 用户组口令已加密,用“x”表示。
- GID 为 500。
- 同组的成员用户有:暂无。
和用户账号文件 passwd 一样,为了防止黑客对其实行暴力攻击,用户组也使用 gshadow 来保存口令。/etc/gshadow 文件的格式如下:
zyx:!!::
- 用户组名:zyx。
- 加密后的用户组口令。
- 组管理员。
- 以逗号分隔的成员用户清单。
4、管理用户和组
1)添加用户
useradd [参数] 用户名
- -c:对用户信息的描述(字符串)。
- -d:设置用户的家目录。
- -e:设置账号的过期时间(yyyy-mm-dd)。
- -g:设置该用户的所属组(主要组)。
- -G:设置该用户的次要组。
- -s:设置用户使用的命令解释器(shell)。
2)修改密码
passwd 用户名 ---修改用户的密码
针对root用户
- -S 查询用户密码的状态,是否锁定。
- -l 锁定用户。
- -u 解锁用户。
- --stdin 可以配合管道将输出的数据作为用户密码。
实例:
echo "111"|passwd --stdin xs
3)删除用户
userdel 用户名
4)组操作命令
添加组。
groupadd 组名
修改密码。
gpasswd 组名
删除组。
groupdel 组名
5)添加用户到组中
gpasswd -a 用户名 组名
6)从组中删除用户
gpasswd -d 用户名 组名
7)设置组的用户
将多个用户添加到组中,用逗号分隔。每次执行该命令后,以前该组的成员信息被覆盖。
gpasswd -M 用户名 组名
8)设置组的管理员
gpasswd -A 用户名 组名
9)把一个用户同时添加到多个组中
usermod -G 组名[,组名1 ...] 用户名
标题:Linux 中文件的压缩与解压、用户和组 —— Centos 6.5
作者:Yi-Xing
地址:http://47.94.239.232/articles/2020/10/22/1603356723057.html
博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!