Jawaban baru (2015-03-22)
( Catatan: Jawaban ini lebih sederhana dari sebelumnya, tetapi tidak lebih aman. Jawaban pertama saya lebih kuat karena Anda dapat menyimpan file hanya-baca oleh opsi pemasangan fs sebelum flag izin. Jadi memaksa untuk menulis file tanpa izin untuk menulis tidak akan berfungsi sama sekali.)
Ya, di bawah Debian , ada paket: fsprotect ( beranda ).
Ini menggunakan aufs(secara default, tetapi bisa menggunakan unionfsalat lain ) untuk mengizinkan perubahan sesi langsung tetapi dalam RAM secara default, jadi semuanya dilupakan saat reboot.
Anda dapat menginstalnya dengan menjalankan:
apt-get install fsprotect
Setelah selesai, dari dokumen online:
Setelah itu:
- Edit
/boot/grub/menu.lstatau /etc/default/grub2atau /etc/lilo.confdan tambahkan " fsprotect=1G" ke parameter kernel.
- Ubah 1G sesuai kebutuhan.
- Terapkan perubahan (mis. Jalankan
update-grub)
- Edit
/etc/default/fsprotectjika Anda ingin melindungi filesystem selain /.
- reboot
Anda mungkin juga ingin melindungi kata sandi bootloader grub atau melarang perubahan apa pun.
Dari sana, jika beberapa file dilindungi terhadap perubahan, untuk sampel oleh
chmod ugo-w myfile
jika Anda menggunakan untuk sampel vi myfiledan mencoba untuk menulis di atasnya dengan perintah :w!, ini akan berhasil dan Anda myfilemenjadi berubah. Anda dapat memulai ulang untuk mengambil yang belum dimodifikasi myfile.
Itu bahkan tidak mungkin dengan solusi pertama saya berikut:
Jawaban lama (pertama):
Ya, ini adalah solusi yang kuat, tetapi kuat!
Membuat r / o bisa digunakan
Anda harus memasang beberapa direktori di rw , like /var, /etcdan mungkin /home. Ini bisa dilakukan dengan menggunakan aufs atau unionfs . Saya suka ini dengan cara lain , menggunakan /dev/shmdan mount --bind:
cp -a /var /dev/shm/
mount --bind /dev/shm/var /var
Anda bisa sebelumnya, pindahkan semua direktori yang tidak harus berubah dalam operasi normal di static-var, daripada membuat symlink di / 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
Jadi ketika remounting di ro, menyalin /vardi /dev/shmtidak akan memakan banyak ruang karena sebagian besar file dipindahkan ke /static-vardan hanya symlink yang akan disalin dalam ram.
Cara yang lebih baik untuk melakukan ini dengan baik adalah membuat siklus daya penuh, satu hari kerja penuh dan menjalankan perintah seperti:
find / -type f -o -type f -mtime -1
Jadi Anda akan melihat file mana yang perlu ditempatkan di partisi baca-tulis.
Penebangan
Karena di host ini tidak ada memori statis yang dapat ditulisi, untuk menyimpan histori dan log lainnya, Anda harus mengkonfigurasi syslogserver jarak jauh .
echo >/etc/syslog.conf '*.* @mySyslogServer.localdomain'
Dengan cara ini, jika sistem Anda rusak karena alasan apa pun, semua yang sebelumnya dicatat.
Perbaikan
Ketika menjalankan dengan beberapa yang mount --bindsedang digunakan, untuk melakukan upgrade seperti itu ketika sistem sedang digunakan (tanpa perlu menjalankan init 1, untuk mengurangi down-time), cara sederhana adalah dengan membangun kembali root bersih , dapat melakukan upgrade:
Setelah mengount ulang '/' dalam mode baca-tulis :
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 /
Dan sekarang:
shutdown -r now