Cách xóa hoàn toàn một file trong Linux để không thể khôi phục lại

Trong Linux, các file có thể bị xóa nhưng vẫn có thể khôi phục được. Đây là những việc cần làm khi bạn thực sự muốn chúng biến mất.

Lệnh rm dễ dàng làm cho các file biến mất khỏi danh sách file của bạn, nhưng nó thực sự sẽ làm gì và làm cách nào bạn có thể đảm bảo rằng các file bị xóa không thể khôi phục được nữa?

Những khái niệm cơ bản về việc xóa bỏ một file hoàn toàn trong Linux

Để hiểu điều gì xảy ra khi bạn xóa một file khỏi hệ thống Linux bằng rm, trước tiên hãy nghĩ về inodes - những cấu trúc dữ liệu hấp dẫn theo dõi tất cả các thuộc tính của file (thường được gọi là "siêu dữ liệu") - mô tả về file. Điều này bao gồm tên, chủ sở hữu và nhóm của file đó, các quyền nào đã được thiết lập và nơi nội dung của file có thể được tìm thấy trên ổ đĩa.

Tiếp theo, hãy tìm hiểu về các thư mục Linux. Mặc dù chúng có diện mạo và những tính chất của các thư mục (nghĩa là chỉ chứa file), chúng thực sự chỉ là các file và chỉ bao gồm tên cũng như số inode của các file mà chúng chứa. Vì vậy, tốt hơn hết là coi các thư mục và file trong Linux giống các thư mục và thủ tục giấy tờ trong tủ hồ sơ của bạn .

Nội dung của các file thực sự được lưu trữ, thường ở dạng khối, ở nơi khác trên ổ đĩa của bạn. Vì vậy, khi bạn loại bỏ một file, inode của file được giải phóng và file thư mục điều chỉnh để loại bỏ các tham chiếu của nó vào file vừa bị xóa. Dữ liệu của file sẽ vẫn nằm trên các vị trí ổ đĩa và sau đó sẽ được cung cấp để sử dụng lại.

Làm thế nào và khi nào nên xóa các file trong Linux?

Trong hầu hết mọi trường hợp, việc nội dung của các file bị xóa sẽ vẫn ở trên ổ đĩa không quan trọng lắm. Chúng thường là các file bạn không cần nữa, như báo cáo hàng tuần của tháng trước, các phiên bản trước của các tập lệnh đã được thay thế bằng các tập lệnh tốt hơn, v.v... Khi các file này có thể phát sinh vấn đề, có một số công cụ mà bạn có thể sử dụng để giảm khả năng người khác có thể phục hồi chúng.

shred

Lệnh shred sẽ ghi đè lên một file và cũng có thể xóa nó đi. Ghi đè sẽ đảm bảo rằng các khối dữ liệu chứa nội dung cũ hiện đã có nội dung khác. Lưu ý, theo mặc định, nội dung bị ghi đè trong nhiều lần ghi. Các tùy chọn được sử dụng bên dưới bao gồm z (thêm ghi đè cuối cùng với các số 0), v (hiển thị những gì đang diễn ra), và u (cắt ngắn và sau đó xóa file sau khi ghi đè xong). Các tùy chọn này làm cho nội dung của file bị ghi đè hoàn toàn.

$ shred -zvu passwords-save
shred: passwords-save: pass 1/4 (random)...
shred: passwords-save: pass 2/4 (random)...
shred: passwords-save: pass 3/4 (random)...
shred: passwords-save: pass 4/4 (000000)...
shred: passwords-save: removing
shred: passwords-save: renamed to 00000000000000
shred: passwords-save: removed

wipe

Lệnh wipe chỉ hoạt động đối với magnetic media (media từ tính), chứ không phải ổ cứng. Nó hoạt động với cái gọi là "magnetic force microscopy” (kính hiển vi lực từ), cho phép người khác khôi phục hai hoặc ba "dữ liệu" cuối cùng, có thể được ghi vào ổ đĩa của bạn, nhưng như đã nói ở trên nó chỉ hoạt động với magnetic media, không phải ổ cứng và không phải tất cả các ổ đĩa đều đủ điều kiện. Bạn có thể xác định loại ổ đĩa hệ thống bạn có và xem wipe có thể làm việc với chúng hay không bằng cách nhìn vào kết quả từ lệnh này, chỗ 0 = SSD (magnetic media) và 1 = HDD (ổ cứng):

$ cat /sys/block/sda/queue/rotational
0

Dưới đây là ví dụ về lệnh wipe khi hoạt động:

$ wipe -rfi temp
Entering directory 'temp'
Wiping mno, pass 34 (34)
File mno (340 bytes) wiped
Wiping fileA, pass 34 (0 )
File fileA (808 bytes) wiped
Wiping klm, pass 34 (0 )
File klm (1056 bytes) wiped
Wiping lmn, pass 34 (0 )
File lmn (3827 bytes) wiped
Wiping fileC, pass 34 (0 )
File fileC (842 bytes) wiped
Wiping myfiles.tar, pass 34 (0 )
File myfiles.tar (122880 bytes) wiped
Wiping fileB, pass 34 (0 )
File fileB (5092 bytes) wiped
Going back to directory /home/shs
Operation finished.
7 files wiped and 0 special files ignored in 1 directory, 0 symlinks removed but not followed, 0 errors occurred.

Trong ví dụ này, r sẽ nhận được lệnh wipe để recurse vào các thư mục nếu chúng tồn tại, f sẽ tránh phải xác nhận mỗi file bị hỏng, và i làm cho lệnh chạy một cách chi tiết ("i" là "informative").

secure-delete

Một công cụ khác để xóa file hoàn toàn được gọi là "secure-delete", mặc dù lệnh mà gói sẽ thêm vào hệ thống của bạn được gọi là srm như trong "secure rm".

Dưới đây là ví dụ về cách sử dụng công cụ này:

$ srm -vz BoD_meeting
Using /dev/urandom for random input.
Wipe mode is secure (38 special passes)
Wiping BoD_meeting ************************************** Removed file BoD_meeting ... Done

Lưu ý số lượng pass đã được thực hiện để đảm bảo việc loại bỏ file một cách an toàn.

Kiểm tra việc xóa file của bạn

Vì có một số lựa chọn về cách xóa các file khỏi hệ thống Linux một cách an toàn, ví dụ sau đây sẽ chạy một thử nghiệm đơn giản - tạo một số bản sao của cùng một file và xóa chúng một cách an toàn bằng từng công cụ được thảo luận ở trên. Dưới đây là cách sử dụng một công cụ gọi là foremost để thử khôi phục các file cùng loại, từ phân vùng bị ảnh hưởng.

$ shred -zvu penguin1.png
$ wipe -fi penguin2.png
$ srm -vz penguin3.png
$ sudo foremost -i /dev/sda1 -t png -o /root/rescued
Processing: /dev/sda1
|*******************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
**************************|

Lệnh foremost sẽ mất vài phút để chạy. Lệnh này đã tìm thấy hơn 51.000 file .png trong ví dụ. Trong mọi trường hợp, một điểm cần lưu ý là các file được lấy từ ổ đĩa của bạn trong quá trình khôi phục sẽ không có tên gốc, vì chúng bị mất khi file thư mục bị ảnh hưởng đã được sửa đổi khi xóa file. Thay vào đó, các file đã khôi phục của bạn sẽ có tên giống như 105210720.png.

Lệnh foremost có các tùy chọn để chọn loại file bạn muốn khôi phục. Kiểm tra trang man để biết chi tiết. Và hãy nhớ rằng nó không thể giới hạn tìm kiếm của bạn vào một thư mục cụ thể bởi vì, tại thời điểm này, các thư mục không còn liên quan nữa.

Một lưu ý quan trọng

Nếu bạn muốn thử nghiệm việc xóa hoàn toàn các file khỏi hệ thống và sau đó sử dụng công cụ foremost để xem những gì có thể được phục hồi, hãy xem xét khôi phục file để tách media hoặc ít nhất không đơn thuần xóa các file, khi bạn đang thực hiện kiểm tra chúng, hoặc về cơ bản, bạn sẽ tăng gấp đôi số lượng file khôi phục trong lần thử nghiệm tiếp theo. Các file đã khôi phục độc lập với các file gốc, mặc dù chúng có cùng nội dung.

Xem thêm:

Thứ Hai, 23/07/2018 13:46
52 👨 462