新しい回答(2015-03-22)
(注:この答えは、以前よりも簡単ですが、より安全でないファイルを保つことができるので、私の最初の答えは強いですが、読み取り専用でFSのオプションのマウント 前に許可フラグをそう。強制するわけではない仕事は書き込みに許可なくファイルを書き込みますまったく。)
はい、Debianには、パッケージfsprotect(homepage)があります。
これは、使用aufs
(デフォルトではなく、別の使用できるunionfs
ツール)を可能にするために、ライブセッションの変更をすべてが、再起動時に忘れられているので、デフォルトではなく、RAMインチ
以下を実行するだけでインストールできます:
apt-get install fsprotect
完了したら、オンラインドキュメントから:
その後:
- 編集する
/boot/grub/menu.lst
か、/etc/default/grub2
またはカーネルパラメータに/etc/lilo.conf
「fsprotect=1G
」を追加します。
- 必要に応じて1Gを変更します。
- 変更を適用する(つまり、実行する
update-grub
)
/etc/default/fsprotect
以外のファイルシステムを保護する場合は編集します/
。
- リブート
grubブートローダーをパスワードで保護したり、変更を禁止したりすることもできます。
そこから、一部のファイルが変更に対して保護されている場合、サンプルによって
chmod ugo-w myfile
サンプルに使用しvi myfile
、command を使用して書き込みを試みると:w!
、これが機能し、 myfile
変更されます。変更されていないを取得するために再起動できますmyfile
。
私の次の最初の解決策では不可能です。
古い(最初の)答え:
はい、強力なソリューションですが、強力です!
r / oを使用可能にする
あなたには、いくつかのディレクトリをマウントする必要がRWのように、/var
、/etc
、多分/home
。これはaufsまたはunionfsを使用して実行できます。私はこれを別の方法で気に入って/dev/shm
おり、and を使用していmount --bind
ます:
cp -a /var /dev/shm/
mount --bind /dev/shm/var /var
前に、static-var
/ varにシンボリックリンクを作成するよりも、aの通常の操作で変更する必要のないすべてのディレクトリを移動できます。
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
したがって、roで再マウントする場合、ほとんどのファイルが移動され、ramでシンボリックリンクのみがコピー/var
さ/dev/shm
れるため、コピーインはスペースを取りすぎません/static-var
。
これを細かく実行するためのより良い方法は、完全なパワーサイクルを作成し、1日の完全な作業を行い、次のようなコマンドを細かく実行することです。
find / -type f -o -type f -mtime -1
したがって、どのファイルを読み取り/書き込みパーティションに配置する必要があるかがわかります。
ロギング
このホストには書き込み可能な静的メモリが存在しないため、履歴やその他のログを保存するには、リモートを設定する必要があります syslog
サーバーを構成ます。
echo >/etc/syslog.conf '*.* @mySyslogServer.localdomain'
このように、何らかの理由でシステムが破損した場合、以前のすべてがログに記録されます。
アップグレード
いくつかのwhith実行している場合mount --bind
、システムが使用されている間、そのようなアップグレードを行うため、使用中の(ランニングの必要性はwhithout init 1
、-ダウンタイムを削減するため)、simplierの方法は、再ビルドにクリーンであるルートし、アップグレードを実行することです:
読み取り / 書き込みモードで「/」を再マウントした後:
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 /
そしていま:
shutdown -r now