Làm thế nào để làm cho các tập tin được bảo vệ?


24

Làm thế nào để tạo một số tệp có chứa dữ liệu quan trọng được bảo vệ? Chẳng hạn, giả sử tôi có một số tệp quan trọng, có phương pháp hay chiến lược nào để làm cho loại tệp này được bảo vệ nhiều hơn trên Ubuntu không? Tôi thậm chí muốn làm cho một số tệp yêu cầu mật khẩu bất cứ khi nào ai đó cố gắng mở nó. Liệu nó có ảnh hưởng đến phiên bản Ubuntu về chính sách bảo mật? Tôi có thể sử dụng bất kỳ thuật toán mã hóa bên ngoài? Trân trọng.


Bạn có ý nghĩa gì khi bảo vệ? Bạn muốn làm cho nó khó khăn hơn để sửa đổi hoặc xóa các tập tin?
Zanna

bảo vệ theo nghĩa không ai có thể truy cập nó mà không có sự cho phép của tôi hoặc thậm chí không dễ dàng xóa bất kỳ sửa đổi nào. HOẶC nó cần một số mật khẩu để mở nó bằng cách khó khăn.
Avani badheka

bạn có nghĩa là đơn giản chown rootchmod go-rwx?
njzk2

Để yêu cầu mật khẩu, hãy sử dụng tệp được mã hóa hoặc tệp hình ảnh đĩa không tự động.
Joshua

Câu trả lời:


32

Phương pháp tốt nhất bạn có là chattr +i {file}. Điều này đặt thuộc tính bất biến và sau đó một tệp không thể được sửa đổi, xóa, đổi tên hoặc liên kết cứng được tạo bởi bất kỳ ai kể cả root.

Người duy nhất có thể chỉnh sửa tập tin là root. (S) anh ta phải hoàn tác điều này bằng cách loại bỏ bit bất biến: chattr -i {file}và sau đó có thể làm bất cứ điều gì với tệp. Đặt + i lại khóa tệp khỏi mọi sửa đổi.

Điều này sẽ không ngăn định dạng phân vùng nơi tệp được lưu trữ mặc dù. Nó sẽ ngăn chặn hành vi trộm cắp tập tin.


Bạn thậm chí có thể làm điều này trên một mountpoint hoàn chỉnh nếu bạn muốn:

chattr +i -R /discworld

sẽ làm cho toàn bộ "thế giới" và bất cứ điều gì trong đó trở nên bất biến ( chattr -i -R /discworldđể hoàn tác nó;))



Tôi muốn sửa đổi, xóa, đổi tên vv chỉ có thể được thực hiện bằng root. Ngay cả khi root không thể thay đổi thì nó sẽ chỉ đọc cho mọi người, mà tôi không muốn trong trường hợp của mình.
Avani badheka

@Avanibadheka root có thể làm chattr -i trước khi chỉnh sửa và sau đó làm chattr + i một lần nữa để khóa nó.
Rinzwind

1
Bạn cũng có thể vĩnh viễn (cho đến khi khởi động lại) loại bỏ khả năng sửa đổi BẤT K bit bit bất biến nào khỏi hệ thống.
rackandboneman

Nó thậm chí không thể được sao chép? Vì vậy, tập tin mèo> đầu ra hoặc dd không hoạt động?
Konerak

1
Một tập tin bất biến có thể được sao chép (trừ khi nó được đặt là chmod a-r). Xem nhật ký thiết bị đầu cuối của tôi để kiểm tra ví dụ.
Ruslan

18

Không làm gì đặc biệt, bạn có thể gây khó khăn cho người khác đọc, thay đổi hoặc xóa tệp bằng cách xóa quyền cho mọi người trừ chủ sở hữu. Tạo root cho chủ sở hữu của tệp và đặt nó vào một thư mục mà chỉ root mới có quyền truy cập vào ...

sudo mkdir /home/secret     #this directory will be owned by root, no need to chown
sudo chmod 700 /home/secret

di chuyển ( sudo mv file /home/secret) tập tin của bạn vào đó và làm

sudo chown root: /home/secret/file
sudo chmod 600 /home/secret/file

chmodchownlấy nhiều đối số: chmod 600 file1 file2hoặcchmod 600 file*

ngoài ra, sử dụng mã hóa ...


3
Có lẽ dễ hiểu hơn nếu bạn sử dụng quyền nhân vật thay vì bát phân. Vì vậy, nó sẽ là ví dụ "chmod go-rwx" để xóa quyền đọc, ghi và thực thi quyền từ nhóm và những người khác. Xem trang người đàn ông chmod.
jamesqf

12

Một cách khá an toàn để bảo vệ tài liệu là mã hóa (miễn là bạn hủy bản gốc và lưu trữ phiên bản được mã hóa đúng cách).

Quyền (như được đề xuất bởi các câu trả lời khác) có thể bị phá vỡ (xem phần này ).

Do đó, tôi khuyên bạn nên mã hóa tập tin đúng cách. Đây là cách thực hiện:

(Đối với phương pháp giao diện đồ họa, xem phần cuối của câu trả lời này)

Đảm bảo bạn đã gpgcài đặt.

Ví dụ: để mã hóa một tệp có tên Important_File.txt, hãy sử dụng

$ gpg -c Important_File.txt

Bây giờ hãy nhập mật khẩu (cái này sẽ được sử dụng sau khi phải đọc nó).

Bây giờ bạn sẽ nhận được một tệp có tên gốc và .gpgphần mở rộng Important_File.txt.gpg.

Xóa tệp gốc và giữ .gpgphiên bản. Có thể dễ dàng lấy tệp gốc từ đĩa nếu bạn không sử dụng shredtiện ích bảo mật (vẫn không hoạt động trên ổ SSD hoặc thẻ SD):

$ shred Important_File.txt

Bây giờ chúng tôi chỉ có Important_File.txt.gpgvới chúng tôi.

Bất cứ khi nào bạn cần đọc nó, chỉ cần

$ gpg Important_File.txt.gpg

Sau đó nhập mật khẩu bạn đặt trong lệnh đầu tiên. Bạn sẽ nhận được bản gốc Important_File.txt.

LƯU Ý : Điều này sẽ chỉ bảo vệ nội dung của .gpgtệp được mã hóa khỏi bị đọc bởi bất kỳ ai (sử dụng mã hóa), nhưng bất kỳ ai cũng có thể xóa, sao chép hoặc di chuyển nó ! Để bảo vệ cơ bản khỏi điều đó , hãy sử dụng các phương thức cho phép của các câu trả lời khác trên .gpgtệp được mã hóa .

Phương pháp giao diện đồ họa (GUI)

Cài đặt ứng dụng Seahorse.

Sau đó, bạn có thể làm điều này từ ứng dụng Tệp:

Ảnh chụp màn hình mã hóa tập tin Gnome


1
"Cách an toàn duy nhất để bảo vệ tài liệu là mã hóa" Tôi không đồng ý. Hành động mã hóa không an toàn những gì làm cho nó an toàn. Đó là phần xã hội sau đó. Nếu bạn tạo một readme bên cạnh tệp bị mã hóa với "đây là mật khẩu: 11212324234", bạn có thể mã hóa tất cả những gì bạn muốn bảo mật thì không phải vậy.
Rinzwind

1
@Rinzwind Đã chỉnh sửa. Dù sao, với mức độ ngu ngốc đó, không có gì là an toàn.
Đại

Được nâng cấp trong dự đoán ;-)
Rinzwind

Lưu ý rằng có thể dễ dàng truy xuất tệp không được mã hóa ban đầu nếu bạn xóa nó ( rmhoặc xóa khỏi trình quản lý tệp). Bạn sẽ cần ghi đè lên nó để làm cho nó không thể phục hồi, ví dụ như sử dụng shred. Điều đó cũng vô dụng với SSD và ổ đĩa flash mặc dù ...
Byte Commander

@ByteCommander Cảm ơn, tôi đã thêm nó vào câu trả lời.
Đại

9

Chỉ cần đặt quyền 600 rất nghiêm ngặt để chỉ chủ sở hữu có thể đọc và viết nó (nếu bạn cần quyền thực thi, đó sẽ là 700).

Bạn cũng có thể làm điều đó bằng đồ thị - chỉ cần nhấp chuột phải vào file, chọn Properties > Permissions > Set, và đặt tất cả ngoại trừ các ownerlĩnh vực không có gì.

Xem hình như một ví dụ:

bức tranh


Xin chào, tôi nghĩ rằng câu trả lời của bạn sẽ được hưởng lợi từ một ảnh chụp màn hình cho thấy cách thực hiện với GUI.
grooveplex

Xong, cảm ơn :) (nhưng hệ thống của tôi bằng tiếng Ý ...)
Dadexix86

@Zanna quan sát tốt (Tôi đã sửa đổi câu trả lời)
Dadexix86

8

Nếu bạn là người dùng duy nhất trên hệ thống và không ai có thể truy cập máy tính của bạn một cách hợp lý mà không có quyền của bạn, thì bạn chỉ có thể chặn quyền truy cập bằng cách sử dụng lệnh này, theo câu trả lời của Zanna :

sudo chown root:root /my/secret/file.txt
sudo chmod 600 /my/secret/file.txt

Trong trường hợp này, tập tin chỉ có thể được đọc và / hoặc ghi vào rootngười dùng. Điều này được coi là "đủ an toàn" nếu không ai có thể khởi động máy tính của bạn mà không có sự cho phép của bạn hoặc nâng ổ cứng của bạn. Chúng tôi đang sử dụng rootngười dùng trong trường hợp này, vì rootngười dùng luôn có thể đọc tệp, ngay cả khi họ không có quyền. Bằng cách sử dụng người dùng root, chúng tôi thực thi rằng chỉ một người dùng có thể truy cập nó.

Nếu bạn muốn đánh dấu tệp là không thể thay đổi theo bất kỳ cách nào, hình dạng hoặc hình thức, bạn có thể sử dụng ithuộc tính để đánh dấu tệp là bất biến . Trong trường hợp này, quyền của tệp bị khóa và không được thay đổi trong mọi trường hợp. Do đó, bạn có thể thực hiện lệnh sau để làm cho tệp không thể thay đổi và bảo vệ tệp khỏi bị xóa và thay đổi quyền:

sudo chattr +i /my/secret/file.txt

Nếu bạn muốn thay đổi nó, hãy thay thế +ibằng một -iđể mở khóa tệp tạm thời. Xem câu trả lời của Rinzwind để có cái nhìn sâu hơn.

Bây giờ, nếu người khác có quyền truy cập vào máy tính của bạn ( sudotruy cập từ xa hoặc bất kỳ hình thức truy cập vật lý nào), điều này sẽ sụp đổ ngay lập tức. Kẻ tấn công có thể sử dụng rootquyền hạn để đọc tệp của bạn, cắm USB trực tiếp hoặc chỉ cần kéo ổ cứng của bạn.

Do đó, chúng ta cần mã hóa tập tin. Cá nhân tôi thích sử dụng "tập tin chứa", để bạn có thể gắn kết nhiều hơn trong đó và để nó phát triển khi cần thiết. chattr +ivẫn được khuyến nghị để tập tin không vô tình bị xóa (hoặc bị thay đổi). Cuối cùng, nếu bạn đang sử dụng một hình ảnh được mã hóa, bạn có thể đặt quyền để cho phép người khác truy cập vào một tập hợp con các tệp rất hạn chế khi đĩa được gắn, điều đó tốt cho máy chủ. Hướng dẫn này ban đầu có sẵn ở đây , và đã được điều chỉnh để sử dụng ở đây.

Trước hết, bạn muốn tạo một hình ảnh đĩa để sử dụng. Trong ví dụ này, chúng tôi sẽ làm cho nó 5 GB.

dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img

Sau đó, chúng tôi cần làm cho hình ảnh của bạn được mã hóa:

sudo cryptsetup luksFormat ~/NSA-Data-Dump-20161012.img

Bạn sẽ có một lựa chọn ở đây để nhập mật khẩu mã hóa ưa thích của bạn. Khi điều này được thực hiện, chúng ta cần để lộ thiết bị khối thô:

sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device

Ngay bây giờ, chúng tôi có một bộ chứa tệp được giải mã, nhưng không có hệ thống tệp và nó tốt như vô dụng. Hãy sửa nó đi:

sudo mkfs.ext4 /dev/mapper/my-secret-device

Bây giờ, chúng tôi cần một nơi để gắn kết phân vùng mới của chúng tôi. Trong trường hợp này, tôi sẽ đặt nó tại /crypt. Tôi là người dùng 1000, vì vậy, tôi sẽ đặt phân vùng của mình chỉ cho phép tôi (và root) đọc / ghi từ nó.

sudo mkdir /crypt
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000

Bây giờ, tôi có thể sử dụng công cụ tệp của mình để điều hướng đến /cryptvà tôi có thể lưu trữ tất cả các tệp nhạy cảm của mình ở đó. Khi tôi đã hoàn tất, tôi sẽ cần ngắt kết nối và mã hóa lại phân vùng của mình.

sudo umount /crypt
sudo cryptsetup luksClose my-secret-device

Bây giờ, tôi sẽ thiết lập các phân vùng thích hợp trên tệp hình ảnh của mình, sao cho chỉ tôi và root mới có thể truy cập nó và không thể thay đổi nó nữa.

chmod 400 ~/NSA-Data-Dump-20161012.img
sudo chattr +i ~/NSA-Data-Dump-20161012.img

Bất cứ khi nào tôi muốn mở tệp này để đọc, tôi chỉ cần chạy hai lệnh này, mà tôi có thể dễ dàng bí danh:

sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro

Dữ liệu được mã hóa của tôi sẽ có sẵn tại /cryptvà nó sẽ vẫn chỉ đọc và chỉ có thể truy cập đối với tôi và root.

Nếu tôi muốn thay đổi tệp, tôi cần thay đổi quyền và sau đó gắn kết:

sudo chattr -i ~/NSA-Data-Dump-20161012.img
chmod 700 ~/NSA-Data-Dump-20161012.img
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro

Bây giờ, bạn cần cẩn thận ở đây vì nếu người dùng đã root trên hệ thống của họ, họ có thể sửa đổi / phá hủy phân vùng được mã hóa của bạn, khiến nó trở nên vô dụng. Họ cũng có thể đánh cắp dữ liệu từ ổ đĩa, nhưng chỉ khi nó mở. Tuy nhiên, họ không thể đánh cắp dữ liệu hoặc thậm chí nhìn thấy dữ liệu đó tồn tại mà bạn không mở nó một cách rõ ràng. Do đó, nhiệm vụ của bạn là đảm bảo rằng hệ thống của bạn đủ an toàn để không có bất kỳ người dùng root nào trực tuyến khi bạn mở khối lượng mã hóa của mình.


TL; DR :

  1. Tạo hầm:

    dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img
    sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
    sudo mkfs.ext4 /dev/mapper/my-secret-device
    
  2. Điền vào hầm:

    sudo mkdir /crypt
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
    
  3. Khóa kho tiền:

    sudo umount /crypt
    sudo cryptsetup luksClose my-secret-device
    
  4. Đóng băng kho tiền:

    chmod 400 ~/NSA-Data-Dump-20161012.img
    sudo chattr +i ~/NSA-Data-Dump-20161012.img
    
  5. Mở hầm:

    sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro
    

Tất nhiên, người dùng có quyền truy cập root cũng có thể thay thế cryptsetupbằng thứ gì đó ghi lại bất kỳ mật khẩu nào đã nhập ...
Hagen von Eitzen

@HagenvonEitzen Vâng, không có gì như "thực sự an toàn" trên máy tính. Có một điểm mà bạn vẽ đường.
Kaz Wolfe

7

Bạn có thể sử dụng encfs để mã hóa thư mục .

Về cơ bản, bạn cần tạo 2 thư mục, 1 trong đó dữ liệu được mã hóa sẽ được lưu trữ và 1 nơi bạn sẽ truy cập dữ liệu đó:

mkdir ~/.encrypted
mkdir ~/private

Sau đó thực thi (bạn cần thực thi dòng này mỗi lần bạn muốn 'mount' thư mục của mình):

encfs ~/.encrypted/ ~/private/

Trừ khi bạn biết thêm về nó, chỉ cần nhấn ENTERđể đi với các cài đặt tiêu chuẩn (chỉ được hỏi lần đầu tiên).

Sau đó nhập mật khẩu của bạn và nó sẽ được gắn kết.

Dữ liệu của bạn sẽ chỉ được truy cập bởi người dùng của bạn một cách an toàn ~/private/(bạn có thể bỏ qua khá nhiều ~/.encrypted)

Để ngắt kết nối nó:

sudo umount ~/private/

hoặc là

fusermount -u ~/private/

Đơn giản như thế.


3

Bạn có thể mã hóa dữ liệu bằng cách sử dụng tiền điện tử , đây thực sự là một ứng dụng rất tốt và có thể cung cấp bảo mật cho tệp của bạn. Bạn có thể cài đặt nó với:

sudo apt-get update
sudo apt-get install cryptkeeper

Tôi thường khuyên bạn nên mã hóa thư mục có tên bắt đầu bằng . cách đặt nó trước tên tệp sẽ ẩn nó. Đó là một mẹo nhỏ nhưng nó hoạt động.

Để bỏ ẩn thư mục, sử dụng Ctrl+ hhoặc vise-Versa.


1
Tổ hợp phím Ctrl + h áp dụng cho ứng dụng gì? Nó sẽ không hoạt động lschắc chắn.
Melebius

Ctrl-H ít nhất hoạt động cho Nautilus (và các nhánh của nó, như Nemo). Đối với các trình quản lý tập tin khác, tôi không thể nói. Khi sử dụng ls, bạn có thể sử dụng công -atắc để hiển thị tất cả các tệp (tức là bao gồm cả ẩn).
s3lph
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.