새로운 답변 (2015-03-22)
( 참고 : .이 대답은 이전보다 간단,하지만 더 안전한 당신이 파일을 유지할 수 있기 때문에 내 첫 번째 대답이 더 강하다 읽기 전용 으로 옵션을 FS 마운트 하기 전에 . 허가 플래그 그래서 강제로 쓰기에 허가없이 파일을 작성하지 않습니다 일 조금도.)
예, 데비안 에는 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
sample에 사용 vi myfile
하고 command로 작성하려고하면 :w!
이것이 작동하고 myfile
변경되었습니다. 수정되지 않은 항목을 검색하기 위해 재부팅 할 수 있습니다 myfile
.
다음과 같은 첫 번째 해결책으로는 불가능합니다.
오래된 (첫 번째) 답변 :
예, 강력한 솔루션이지만 강력합니다!
r / o를 사용 가능하게 만들기
당신은 몇 가지 디렉토리를 마운트해야 RW 처럼 /var
, /etc
아마와 /home
. 이것은 aufs 또는 unionfs를 사용하여 수행 할 수 있습니다. 나는이에게 좋아하는 또 다른 방법을 사용 /dev/shm
하고 mount --bind
:
cp -a /var /dev/shm/
mount --bind /dev/shm/var /var
static-var
/ 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
그래서 복사, RO에 다시 마운트 할 때 /var
의 /dev/shm
대부분의 파일로 이동으로 너무 많은 공간을 차지하지 않습니다 /static-var
만 심볼릭 링크가 램에 복사 할 수 있습니다.
이 작업을 제대로 수행하는 더 좋은 방법은 전체 전원을 껐다가 켜서 하루 동안 전체 작업을 수행하고 다음과 같은 명령을 실행하는 것입니다.
find / -type f -o -type f -mtime -1
따라서 읽기 / 쓰기 파티션에 어떤 파일이 있어야하는지 알 수 있습니다.
벌채 반출
이 호스트에서와 같이 쓰기 가능한 정적 메모리가 존재하지 않으므로 기록 및 기타 로그를 저장하려면 원격 syslog
서버 를 구성해야 합니다.
echo >/etc/syslog.conf '*.* @mySyslogServer.localdomain'
이런 식으로 시스템이 어떤 이유로 중단되면 이전의 모든 것이 기록됩니다.
업그레이드
mount --bind
시스템을 사용하는 동안 (업타임 init 1
단축을 위해 실행이 필요하지 않은 상태에서) 업그레이드를 수행하기 위해 일부 사용 중일 때 실행 하는 경우 더 간단한 방법은 클린 루트 를 다시 빌드 하여 업그레이드를 수행 할 수 있습니다.
읽기 / 쓰기 모드 에서 '/'를 다시 마운트 한 후 :
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