Câu trả lời mới (2015-03-22)
( Lưu ý: . Câu trả lời này là đơn giản hơn trước, nhưng không an toàn hơn câu trả lời đầu tiên của tôi là mạnh bởi vì bạn có thể giữ các tập tin chỉ đọc bởi fs gắn kết tùy chọn trước . Cờ phép Vì vậy, buộc phải viết một tập tin mà không được phép viết sẽ không làm việc ở tất cả.)
Có, trong Debian , có một gói: fsprotect ( trang chủ ).
Nó sử dụng aufs
(theo mặc định, nhưng có thể sử dụng một unionfs
công cụ khác ) để cho phép thay đổi phiên trực tiếp nhưng theo RAM theo mặc định, vì vậy mọi thứ bị lãng quên khi khởi động lại.
Bạn có thể cài đặt chúng bằng cách chạy đơn giản:
apt-get install fsprotect
Sau khi hoàn thành, từ tài liệu trực tuyến:
Sau đó:
- Chỉnh sửa
/boot/grub/menu.lst
hoặc /etc/default/grub2
hoặc /etc/lilo.conf
thêm " fsprotect=1G
" vào tham số kernel.
- Sửa đổi 1G khi cần thiết.
- Áp dụng thay đổi (nghĩa là chạy
update-grub
)
- Chỉnh sửa
/etc/default/fsprotect
nếu bạn muốn bảo vệ các hệ thống tập tin khác /
.
- khởi động lại
Bạn cũng có thể muốn mật khẩu bảo vệ bộ tải khởi động grub hoặc cấm mọi thay đổi đối với nó.
Từ đó, nếu một số tệp được bảo vệ chống lại các thay đổi, đối với mẫu bằng
chmod ugo-w myfile
nếu bạn sử dụng cho mẫu vi myfile
và cố gắng viết lên nó bằng lệnh :w!
, điều này sẽ hoạt động và bạn myfile
đã thay đổi. Bạn có thể khởi động lại để truy xuất không sửa đổi myfile
.
Điều đó thậm chí không thể với giải pháp đầu tiên sau đây của tôi:
Câu trả lời cũ (đầu tiên):
Vâng, nó là một giải pháp mạnh mẽ, nhưng mạnh mẽ!
Làm cho r / o có thể sử dụng
Bạn phải gắn kết một số thư mục trong rw , như /var
, /etc
và có thể /home
. Điều này có thể được thực hiện bằng cách sử dụng aufs hoặc unionfs . Tôi thích cách này theo cách khác , sử dụng /dev/shm
và mount --bind
:
cp -a /var /dev/shm/
mount --bind /dev/shm/var /var
Trước đây, bạn có thể di chuyển tất cả các thư mục không thay đổi hoạt động bình thường trong a static-var
, hơn là tạo liên kết tượng trưng trong / var:
mkdir /static-var
mkdir /static-var/cache
mkdir /static-var/lib
mv /var/lib/dpkg /static-var/lib/dpkg
ln -s /static-var/lib/dpkg /var/lib/dpkg
mv /var/cache/apt /static-var/cache/apt
ln -s /static-var/cache/apt /var/cache/apt
... # an so on
Vì vậy, khi kết nối lại trong ro, sao chép /var
trong /dev/shm
sẽ không chiếm quá nhiều dung lượng vì hầu hết các tệp được chuyển đến /static-var
và chỉ có các liên kết tượng trưng được sao chép trong ram.
Cách tốt hơn để làm điều này một cách tinh vi là tạo ra một chu kỳ toàn năng, một ngày làm việc đầy đủ và chạy một lệnh như:
find / -type f -o -type f -mtime -1
Vì vậy, bạn sẽ thấy tập tin nào cần được định vị trên phân vùng đọc-ghi.
Ghi nhật ký
Vì trong máy chủ này không tồn tại bộ nhớ tĩnh có thể ghi, để lưu trữ lịch sử và các nhật ký khác, bạn phải cấu hình một syslog
máy chủ từ xa .
echo >/etc/syslog.conf '*.* @mySyslogServer.localdomain'
Bằng cách này, nếu hệ thống của bạn bị hỏng vì bất kỳ lý do gì, mọi thứ trước đó đều được ghi lại.
Nâng cấp
Khi chạy với một số người mount --bind
đang sử dụng, để thực hiện nâng cấp như vậy trong khi hệ thống đang sử dụng (không cần chạy init 1
, để giảm thời gian xuống), cách đơn giản hơn là xây dựng lại một root sạch , có thể thực hiện nâng cấp:
Sau khi kết thúc '/' ở chế độ đọc-ghi :
mount -o remount,rw /
for mpnt in /{,proc,sys,dev{,/pts}};do
mount --bind $mnpt /$mnt$mpnt;
done
chroot /mnt
apt-get update && apt-get dist-upgrade
exit
umount /mnt/{dev{/pts,},proc,sys,}
sync
mount -o remount,ro /
Và bây giờ:
shutdown -r now