Giải thích lệnh md5sum của Linux dành cho người mới bắt đầu (5 ví dụ)

theanh

Administrator
Nhân viên
Khi tải xuống tệp, đặc biệt là cài đặt tệp được tải xuống từ trang web, thông qua giao thức torrent hoặc máy chủ FTP, bạn nên xác minh rằng tệp tải xuống hợp lệ. Các trang web thường hiển thị giá trị băm cho mỗi tệp để đảm bảo quá trình tải xuống được hoàn tất chính xác. Bài viết này sẽ thảo luận về lệnh md5sum mà bạn có thể sử dụng để xác thực quá trình tải xuống. Ba tiện ích khác, sha1sum, sha256sum và sha512sum, hoạt động theo cùng cách với md5sum. Hướng dẫn này tương thích với tất cả các bản phân phối Linux chính.

Lệnh md5sum của Linux​

Lệnh md5sum in ra tổng kiểm tra 32 ký tự (128 bit) của tệp đã cho, sử dụng thuật toán MD5. Sau đây là cú pháp lệnh của công cụ dòng lệnh này:
Mã:
md5sum [OPTION]... [FILE]...
Và đây là cách trang hướng dẫn của md5sum giải thích:
Mã:
In hoặc kiểm tra tổng kiểm MD5 (128 bit).
Các ví dụ theo kiểu Hỏi & Đáp sau đây sẽ giúp bạn hiểu rõ hơn về cách sử dụng cơ bản của md5sum.

Lưu ý: Chúng tôi sẽ sử dụng ba tệp có tên là file1.txt, file2.txt và file3.txt làm tệp đầu vào trong các ví dụ của mình. Văn bản trong mỗi tệp được liệt kê bên dưới.

file1.txt:
Mã:
hihellohow are youthanks.
file2.txt:
Mã:
hihello to youI am fineYou're welcome!
file3.txt:
Mã:
halloGuten TagWie geht es dirDanke.

Q1. Làm thế nào để hiển thị giá trị băm?​

Sử dụng lệnh mà không có bất kỳ tùy chọn nào để hiển thị giá trị băm và tên tệp.
Mã:
md5sum file1.txt
Đây là đầu ra mà lệnh này tạo ra trên hệ thống của chúng tôi:
Mã:
[Documents]$ md5sum file1.txt1ff38cc592c4c5d0c8e3ca38be8f1eb1 file1.txt[Documents]$


Đầu ra cũng có thể được hiển thị theo định dạng kiểu BSD bằng cách sử dụng tùy chọn --tag.
Mã:
md5sum --tag file1.txt
Mã:
[Documents]$ md5sum --tag file1.txtMD5 (file1.txt) = 1ff38cc592c4c5d0c8e3ca38be8f1eb1[Documents]$

Câu hỏi 2. Làm thế nào để xác thực nhiều tệp cùng một lúc?​

Lệnh md5sum có thể xác thực nhiều tệp cùng một lúc. Chúng tôi sẽ thêm file2.txt và file3.txt để chứng minh khả năng của nó.

Nếu bạn ghi các hàm băm vào một tệp, bạn có thể sử dụng tệp đó để kiểm tra xem có tệp nào đã thay đổi hay không. Ở đây, chúng tôi đang ghi các hàm băm của các tệp vào các hàm băm của tệp, sau đó sử dụng hàm băm đó để xác thực rằng không có tệp nào đã thay đổi.
Mã:
md5sum file1.txt file2.txt file3.txt > hàm băm
md5sum --check hashes
Mã:
[Documents]$ md5sum file1.txt file2.txt file3.txt > hashes[Documents]$ md5sum --check hashesfile1.txt: OKfile2.txt: OKfile3.txt: OK[Documents]$
Bây giờ chúng ta sẽ thay đổi file3.txt, thêm một dấu chấm than vào cuối tệp và chạy lại lệnh.
Mã:
echo "!" >> file3.txt
md5sum --check hashes
Mã:
[Documents]$ md5sum --check hashesfile1.txt: OKfile2.txt: OKfile3.txt: FAILEDmd5sum: CẢNH BÁO: 1 tổng kiểm tra được tính toán KHÔNG khớp[Documents]$
Bạn có thể thấy file3.txt đã thay đổi.

Câu hỏi 3. Làm thế nào để chỉ hiển thị các tệp đã sửa đổi?​

Nếu bạn có nhiều tệp để kiểm tra, bạn có thể chỉ muốn hiển thị các tệp đã thay đổi. Sử dụng tùy chọn "--quiet", md5sum sẽ chỉ liệt kê các tệp đã thay đổi.
Mã:
md5sum --quiet --check hashes
Mã:
[Documents]$ md5sum --quiet --check hashesfile3.txt: FAILEDmd5sum: WARNING: 1 computed checksum did NOT match[Documents]$

Câu hỏi 4. Làm thế nào để phát hiện các thay đổi trong một tập lệnh?​

Bạn có thể muốn sử dụng md5sum trong một tập lệnh. Sử dụng tùy chọn "--status", md5sum sẽ không in bất kỳ đầu ra nào. Thay vào đó, mã trạng thái trả về 0 nếu không có thay đổi nào và trả về 1 nếu các tệp không khớp. Tập lệnh sau hashes.sh sẽ trả về 1 trong mã trạng thái vì các tệp đã thay đổi. Tệp tập lệnh nằm bên dưới:
Mã:
sh hashes.sh
Mã:
hashes.sh:#!/bin/bashmd5sum --status --check hashesResult=$?echo "File check status is: $Result"exit $Result[Documents]$ sh hashes.shFile check status is: 1[lion@ornatecandy Documents]$

Câu hỏi 5. Làm thế nào để xác định các giá trị băm không hợp lệ?​

md5sum có thể cho bạn biết nếu bạn có các giá trị băm không hợp lệ khi bạn so sánh các tệp. Để cảnh báo bạn nếu bất kỳ giá trị băm nào không chính xác, bạn có thể sử dụng tùy chọn --warn. Đối với ví dụ cuối cùng này, chúng tôi sẽ sử dụng sed để chèn thêm một ký tự vào đầu dòng thứ ba. Điều này sẽ thay đổi giá trị băm trong tệp băm, khiến nó không hợp lệ.
Mã:
sed -i '3s/.*/a&/' hashes
md5sum --warn --check hashes
Điều này cho thấy dòng thứ ba có giá trị băm không hợp lệ.
Mã:
[Documents]$ sed -i '3s/.*/a&/' hashes[Documents]$ md5sum --warn --check hashesfile1.txt: OKfile2.txt: OKmd5sum: hashes: 3: dòng checksum MD5 không đúng định dạngmd5sum: CẢNH BÁO: 1 dòng không đúng định dạng[Documents]$

Kết luận​

Md5sum là một lệnh đơn giản có thể nhanh chóng xác thực một hoặc nhiều tệp để xác định xem có tệp nào trong số chúng đã thay đổi so với tệp gốc hay không. Để biết thêm thông tin về md5sum, hãy xem trang hướng dẫn của lệnh này.
 
Back
Bên trên