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 root
ngườ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 root
người dùng trong trường hợp này, vì root
ngườ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 i
thuộ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ế +i
bằ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 ( sudo
truy 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 root
quyề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 +i
vẫ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 /crypt
và 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 /crypt
và 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 :
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
Điền vào hầm:
sudo mkdir /crypt
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
Khóa kho tiền:
sudo umount /crypt
sudo cryptsetup luksClose my-secret-device
Đóng băng kho tiền:
chmod 400 ~/NSA-Data-Dump-20161012.img
sudo chattr +i ~/NSA-Data-Dump-20161012.img
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