Tôi có một tệp rất quan trọng mà một ứng dụng tại nơi làm việc của tôi sử dụng, tôi cần đảm bảo rằng nó không bị xóa bất cứ điều gì, làm thế nào tôi có thể làm điều đó?
Tôi có một tệp rất quan trọng mà một ứng dụng tại nơi làm việc của tôi sử dụng, tôi cần đảm bảo rằng nó không bị xóa bất cứ điều gì, làm thế nào tôi có thể làm điều đó?
Câu trả lời:
Có, bạn có thể thay đổi các thuộc tính của tệp thành chỉ đọc.
Lệnh là:
chattr +i filename
Và để vô hiệu hóa nó:
chattr -i filename
Từ man chattr
:
Một tệp có
i
thuộc tính không thể được sửa đổi: nó không thể bị xóa hoặc đổi tên, không có liên kết nào có thể được tạo ra cho tệp này và không có dữ liệu nào có thể được ghi vào tệp. Chỉ có siêu người dùng hoặc một quá trình sở hữuCAP_LINUX_IMMUTABLE
khả năng mới có thể thiết lập hoặc xóa thuộc tính này.
chflags schg
Ghi nó vào đĩa CD. Đặt đĩa CD vào ổ đĩa CD-ROM và truy cập nó từ đó.
Thí dụ:
# dd if=/dev/zero of=readonly.img bs=1024 count=1024
# mkfs.ext2 readonly.img
# mkdir readonlyfolder
# mount readonly.img readonlyfolder/
# echo "can't delete this" > readonlyfolder/permanent.txt
# umount readonlyfolder
# mount -o ro readonly.img readonlyfolder
# cat readonlyfolder/permanent.txt
can't delete this
# rm readonlyfolder/permanent.txt
rm: cannot remove `readonlyfolder/permanent.txt': Read-only file system
mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt
squashfs
hoặc cramfs
được nén và chỉ đọc. Nó cần một công cụ đặc biệt để xây dựng hệ thống tập tin.
Linux có cái gọi là tùy chọn gắn kết , đây là tính năng khá hữu ích và hữu ích để biết :
% cd $TMP && mkdir usebindmountluke && cd usebindmountluke
% echo usebindmountluke > preciousfile
% sudo mount -B preciousfile preciousfile
% sudo mount -oremount,ro preciousfile
% echo sowhat > preciousfile
zsh: read-only file system: preciousfile
% rm preciousfile
rm: cannot remove ‘preciousfile’: Read-only file system
- những gì đang được thực hiện ở đây là tệp gắn kết với chính nó (vâng, bạn có thể làm điều đó trong Linux), sau đó nó được gắn lại ở chế độ R / O. Tất nhiên điều này có thể được thực hiện vào thư mục là tốt.
Bạn cũng nên tạo nhiều liên kết cứng đến tập tin. Chúng nên ở những địa điểm khác nhau mà người dùng thông thường không thể truy cập.
Bằng cách này, ngay cả khi họ quản lý để ghi đè bảo vệ chattr của bạn, dữ liệu sẽ vẫn còn và bạn có thể dễ dàng khôi phục nó ở nơi ứng dụng của bạn đang tìm kiếm nó.
Những người khác đã trả lời câu hỏi của bạn khi bạn hỏi nó. Như @Sven đã đề cập trong một bình luận, giải pháp chung cho câu hỏi "Làm thế nào để tôi chắc chắn rằng mình không bao giờ bị mất tập tin?" là để tạo một bản sao lưu của tập tin. Tạo một bản sao của tập tin và lưu trữ nó ở nhiều nơi. Ngoài ra, nếu tệp cực kỳ quan trọng và công ty của bạn có chính sách sao lưu dữ liệu quan trọng bằng dịch vụ sao lưu, bạn có thể xem xét có bao gồm tệp này trong dịch vụ.
Trên Linux các bất biến cờ chỉ được hỗ trợ trên một số loại hệ thống tập tin (hầu hết là những người có nguồn gốc như ext4
, xfs
, btrfs
...)
Trên các hệ thống tệp không được hỗ trợ, một tùy chọn khác là liên kết gắn tệp lên chính nó ở chế độ chỉ đọc. Điều đó phải được thực hiện trong hai bước:
mount --bind file file
mount -o remount,bind,ro file
Điều đó phải được thực hiện tại mỗi lần khởi động, ví dụ thông qua /etc/fstab
.
umount
có thể lấy lại quyền ghi
Trong một bình luận cho câu trả lời của Kevin , Jerry đề cập:
Tất nhiên, tập tin đang được sao lưu thường xuyên, tôi chỉ muốn một lớp bảo vệ khác chống lại người dùng đôi khi đang làm việc trên hộp với quyền của người dùng root. -
Tôi sẽ giả định rằng bạn không thể thay đổi cách làm này, vì đó là một ý tưởng thực sự, thực sự tồi tệ.
Tất cả các đề xuất về việc sử dụng thiết bị chỉ đọc đều có cùng một vấn đề - nó biến nó thành Pita để bạn thực hiện các thay đổi hợp pháp khi bạn cần. Trong trường hợp ổ đĩa có thể khóa, chẳng hạn như thẻ SD, bạn gặp phải vấn đề đột nhiên bạn dễ bị tổn thương khi mở khóa để thực hiện các thay đổi.
Thay vào đó, điều tôi muốn giới thiệu là thiết lập một máy khác là máy chủ NFS và chia sẻ thư mục với các tệp quan trọng cho (các) máy mà người dùng đã root. Chia sẻ giá treo ở chế độ chỉ đọc, để các máy có người dùng mà bạn không tin tưởng không thể thực hiện bất kỳ sửa đổi nào. Khi bạn cần thay đổi một cách hợp pháp, bạn có thể kết nối với máy chủ NFS và thực hiện các thay đổi của chúng tôi ở đó.
Chúng tôi sử dụng điều này cho máy chủ web của mình, để khai thác thành công vào máy chủ web sẽ không thể chèn hoặc thay đổi bất kỳ tệp nào mà máy chủ sẽ phục vụ hoặc thay đổi cấu hình.
Lưu ý rằng điều này có thể được bỏ qua theo cùng một cách mà tất cả những người liên quan đến điểm gắn kết có thể là:
Tại sao không tạo ra một hình ảnh ISO 9660, chỉ đọc theo thiết kế?
Gắn hình ảnh ISO và nó sẽ trông giống như một đĩa CD-ROM, nhưng với hiệu suất của ổ cứng và các tệp trên hình ảnh được gắn sẽ an toàn khi xóa như các tệp trên đĩa CD-ROM vật lý.
Ý tưởng ghi tập tin nhạy cảm vào đĩa CD và chạy nó từ đĩa CD-ROM rất thú vị, giả sử rằng việc thiết lập bit bất biến trên tệp không được coi là đủ.
Có những vấn đề tiêu cực tiềm ẩn khi chạy nó khỏi CD vật lý, bao gồm hiệu năng (ổ đĩa CD-ROM chậm hơn nhiều so với ổ cứng hoặc SSD). Có khả năng CD-ROM bị xóa bởi một cá nhân có ý nghĩa tốt và được thay thế bằng một đĩa khác mà họ cần truy cập. Có khả năng một bên độc hại chỉ lấy đĩa ra và ném nó vào lò vi sóng (hoặc thùng rác), do đó "xóa" tệp của bạn. Có sự bất tiện khi phải có ổ đĩa CD-ROM phần cứng chuyên dụng chỉ cho một tệp đó và các yếu tố khác.
Nhưng OP đã nói rõ rằng mục đích chính là bảo vệ chống xóa vô tình, không chống lại các hành vi độc hại và (các) tệp được đề cập được sao lưu và có thể phục hồi nếu xảy ra tai nạn, nhưng rất mong muốn rằng tệp không bao giờ được gửi vô tình bị xóa.
Có vẻ như việc chạy tệp từ hình ảnh ISO được gắn sẽ đáp ứng yêu cầu.
shred
nó vào thời điểm đó. Nhưng trừ khi bạn từ chối quyền truy cập vật lý vào máy, có vẻ như vẫn dễ dàng rút CD vật lý ra khỏi ổ đĩa và ném nó vào thùng rác hơn là tháo gỡ và ghi đè tệp ISO, mặc dù điều này rất dễ dàng. Và OP đã tuyên bố rằng các tập tin quan trọng được sao lưu thường xuyên, vì vậy đây chỉ là một biện pháp bổ sung chống lại thiệt hại do tai nạn, không phải chống lại những trò nghịch ngợm độc hại.
chattr +i
có thể giúp nhưng cũng sẽ làm cho tệp chỉ đọc (và có thể được ghi đè bằngchattr -i
), bạn cũng có thể cố gắng bảo vệ nó bằng SELInux, v.v.