【linux命令讲解大全】183.Linux 常用工具之 md5sum 和 su

2024-03-02 14:35:30 浏览数 (1)

md5sum

md5sum 是一个用于计算和校验文件报文摘要的工具程序。

补充说明

md5sum 命令采用 MD5 报文摘要算法(128 位)来计算和检查文件的校验和。一般来说,安装了 Linux 后,就会拥有 md5sum 这个工具,可以直接在命令行终端中使用。

MD5 算法常常被用来验证网络文件传输的完整性,以防止文件被篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5)。该算法对任意长度的信息逐位进行计算,生成一个二进制长度为 128 位(十六进制长度为 32 位)的“指纹”(或称“报文摘要”)。不同的文件产生相同的报文摘要的可能性极小。

语法
代码语言:javascript复制
md5sum [选项] [参数]
选项
  • -b:以二进制模式读取文件。
  • -t--text:将输入文件视为文本文件。
  • -c:从指定文件中读取 MD5 校验和,并进行校验。
  • --status:在验证成功时不输出任何信息。
  • -w:当校验不正确时给出警告信息。
参数
  • 文件:指定保存有文件名和校验和的文本文件。

实例

使用 md5sum 生成密码:

另一种获取可用作密码的随机字符串的方法是计算 MD5 校验值!校验值看起来确实像是随机字符串组合在一起,我们可以将其作为密码。确保你使用的计算源是一个变量,这样每次运行命令时生成的校验值都会不同。例如,date | md5sum 命令每次运行都会生成不同的输出。

代码语言:javascript复制
[root@localhost ~]# date | md5sum
6a43f2c246cdc3e6a3592652f831d186  -

生成文件 insert.sql 的 MD5 值:

代码语言:javascript复制
[root@localhost ~]# md5sum insert.sql
bcda6cb5c704664f989703ac5a88f112  insert.sql

检查文件 testfile 是否被修改过:

首先生成 MD5 文件:

代码语言:javascript复制
md5sum testfile > testfile.md5

进行检查:

代码语言:javascript复制
md5sum testfile -c testfile.md5

如果文件没有发生变化,输出应如下所示:

代码语言:javascript复制
testfile: OK

此时,md5sum 命令将返回 0

如果文件发生了变化,输出应如下所示:

代码语言:javascript复制
testfile: FAILED
md5sum: WARNING: 1 computed checksum did NOT match

此时,md5sum 命令将返回非 0

这里,检查时所使用的文件名是任意的。如果不想有任何输出,则可以使用 md5sum testfile --status -c testfile.md5 命令,并通过返回值来检测结果。

在检测时,如果文件非法,则输出信息的选项为:

代码语言:javascript复制
md5sum -w -c testfile.md5

输出后,如果文件异常,输出类似于以下内容:

代码语言:javascript复制
md5sum: testfile.md5: 1: improperly formatted MD5 checksum line
md5sum: testfile.md5: no properly formatted MD5 checksum lines found

在这里,testfile.md5 只有一行信息,但我认为在其后面多加了一个字符,导致非法。如果 MD5 文件正常,无论是否使用 -w 选项输出都是一样的。

su

su 用于切换当前用户身份到其他用户身份。

补充说明

su 命令用于将当前用户身份切换为其他用户身份,切换时需要输入要切换到的用户帐号和密码。

语法
代码语言:javascript复制
su [选项] [参数]
选项
  • -c <指令>--command=<指令>:执行指定的指令后,恢复原用户身份。
  • -f--fast:适用于 csh 和 tsch,使 shell 不需要读取启动文件。
  • -l--login:在改变身份时,同时改变工作目录、HOME、SHELL、USER 和 logname。此外,也会变更 PATH 变量。
  • -m, -p--preserve-environment:在变更身份时,不要变更环境变量。
  • -s <shell>--shell=<shell>:指定要执行的 shell。
  • --help:显示帮助信息。
  • --version:显示版本信息。
参数
  • 用户:指定要切换身份的目标用户。

实例

将帐号切换为 root,并在执行 ls 指令后切回原使用者:

代码语言:javascript复制
su -c ls root

将帐号切换为 root,并传入 -f 选项给新执行的 shell:

代码语言:javascript复制
su root -f

将帐号切换为 test,并将工作目录切换到 test 的家目录:

代码语言:javascript复制
su - test

0 人点赞