Довольно просто протестировать это. С -e
:
% bash -e -c 'false & echo waiting; if wait $!; then echo success; else echo failure; fi'
waiting
failure
Таким образом, если фоновая команда перестанет работать, то оболочка не выйдет автоматически (-e
недостаточно).
Если Вы wait
вне явного теста, wait
возвратит код возврата неудавшегося фонового процесса. В этом случае, если -e
указан, оболочка выйдет:
% bash -e -c 'false & echo waiting; wait $!; echo returned'
waiting
Те же результаты с bash
или sh
или zsh
.
Вы могли настроить aufs на корневом разделе и иметь исходное изображение, только для чтения, и все изменения хранятся в RAM. Тем путем студенты могут внести любые изменения, которые они любят (как раз когда корень) после перезагрузки восстанавливается, чистое четко определенное состояние системы.
Я сделал точно это использование установки Debian, но то же должно быть возможным без слишком большой модификации на Fedora также. Так как клиенты работали бездисковый, я использовал начальную загрузку PXE. Вот основные шаги, инструкции главным образом взяты из Бездискового Linux Debian, загружающегося через dhcp/pxe/nfs/tftp/aufs и Устанавливающего Debian, использующий сетевую начальную загрузку.
Сервер начальной загрузки PXE имеет IP-адрес 192.168.1.10, и он также служит сервер NFS и TFTP. Это использует aufs, и корневая файловая система смонтирована только для чтения. Из-за aufs у клиентов есть доступ для записи. Все изменения находятся в памяти и вытерты на перезагрузке.
apt-get install isc-dhcp-server tftp-hpa nfs-kernel-server debootstrap syslinux
cat >/etc/dhcp/dhcpd.conf <<EOF
next-server 192.168.1.10; # address of the TFTP server
allow bootp;
allow booting;
subnet 192.168.1.0 netmask 255.255.255.0 {
# clients get a dynamic IP address
range dynamic-bootp 192.168.1.20 192.168.1.254;
filename "pxelinux.0";
option domain-name-servers 192.168.0.10;
option broadcast-address 192.168.1.255;
option routers 192.168.0.10;
}
EOF
Это настраивает DHCP для использования сервера TFTP на адресе 192.168.1.10
и загрузите загрузочный образ PXE pxelinux.0
.
mkdir /srv/tftp
Корневая файловая система смонтирована только для чтения через NFS.
mkdir /srv/nfsroot
cat >/etc/exports <<EOF
/srv/nfsroot 192.168.1.10/24(ro,no_root_squash,no_subtree_check)
EOF
debootstrap stable /srv/nfsroot <mirror>
# e.g.
debootstrap stable /srv/nfsroot \
http://ftp.sunet.se/pub/Linux/distributions/debian/
Ядро установки и initramfs инструменты:
chroot /srv/nfsroot apt-get update
chroot /srv/nfsroot apt-get install initramfs-tools linux-image-amd64
Настройте его initramfs для генерации начальной загрузки NFS initrds:
sed 's/BOOT=local/BOOT=nfs/' \
-i /srv/nfsroot/etc/initramfs-tools/initramfs.conf
Загрузитесь aufs
модуль:
echo aufs >> /srv/nfsroot/etc/initramfs-tools/modules
Настроить aufs
:
cat >/srv/nfsroot/etc/initramfs-tools/scripts/init-bottom/aufs <<EOF
modprobe aufs
mkdir /ro /rw /aufs
mount -t tmpfs tmpfs /rw -o noatime,mode=0755
mount --move $rootmnt /ro
mount -t aufs aufs /aufs -o noatime,dirs=/rw:/ro=ro
mkdir -p /aufs/rw /aufs/ro
mount --move /ro /aufs/ro
mount --move /rw /aufs/rw
mount --move /aufs /root
exit 0
EOF
Сделайте исполняемый файл файла:
chmod +x /srv/nfsroot/etc/initramfs-tools/scripts/init-bottom/aufs
Генерируйте initrd:
chroot /srv/nfsroot update-initramfs -k $(uname -r) -u
Предостерегитесь, если ядро хоста и chroot не соответствует. Замена $(uname -r)
с корректным ядром при необходимости.
Копия генерировала initrd, изображение ядра, и загрузчик PXE к TFTP базируется и создает папку для конфигурации PXE:
cp /srv/nfsroot/boot/initrd.img-* /srv/tftp/
cp /srv/nfsroot/boot/vmlinuz-* /srv/tftp/
cp /usr/lib/syslinux/pxelinux.0 /srv/tftp/
mkdir /srv/tftp/pxelinux.cfg
Файл pxelinux.0
программа самозагрузки PXELINUX.
cat >/srv/tftp/pxelinux.cfg/default <<EOF
default Debian
prompt 1
timeout 10
label Debian
kernel vmlinuz-2.6.32-5-amd64 # <- use correct version!
append ro initrd=initrd.img-2.6.32-5-amd64 root=/dev/nfs ip=dhcp
nfsroot=192.168.1.10:/srv/nfsroot
EOF
chroot /srv/nfsroot passwd root
invoke-rc.d isc-dhcp-server restart
invoke-rc.d tftpd-hpa restart
exportfs -ra
Во-первых, скопируйте файлы из /home/USERNAME
папка (папка ИМЕНИ ПОЛЬЗОВАТЕЛЯ студенты используют.), к чему-то как /home/backup
. Можно сделать это с:
cp -R /home/USERNAME/TEMPFILES /home/backup/BACKUPFILES
где TEMPFILES
папка с материалом, к которому студенты должны получить доступ в, и где BACKUPFILES
резервная копия папки в другом месте.Примечание: это действительно сортирует средних, как которые для всего материала было бы полезно быть в папке, TEMPFILES
, В корневом каталоге, поскольку Вы не можете действительно сделать этого материала к фактической папке корневого каталога
Чтобы удостовериться, что студенты не могут получить доступ к ним, можно хотеть, чтобы они принадлежали корню путем выполнения:
sudo chown -R root:root /home/backup/BACKUPFILES
Откройте нано редактора с sudo nano /etc/rc.local
, и добавьте эти команды к rc.local
.
rm -rf /home/USERNAME/TEMPFILES
cp -r /home/backup/BACKUPFILES /home/USERNAME/TEMPFILES
Эти команды будут работать на начальной загрузке как на корне - можно хотеть протестировать их в терминале сначала с префиксом sudo ..
, проверять, работают ли они.
Если rc.local пуст, начинают с, добавляют в этой строке наверху:
#!/bin/sh -e
и имел эту строку внизу:
exit 0
сохраните с Ctrl+O и выходом с Ctrl+X.
Затем, сделайте исполняемый файл файла, таким образом, он выполнит команды, с:
sudo chmod +x /etc/rc.local
Перезагрузка, и это должно работать.
Если это имеет ошибки полномочий, Вы, возможно, должны добавить эту команду ниже cp...
команда для создания файлов принадлежавшими USERNAME
то, что студенты могут получить доступ:
sudo chown USERNAME:USERNAME /home/USERNAME/TEMPFILES
Если Вы смотрите на сайт alternativesto.net существует 3 приложения, перечисленные как альтернативы Глубокой заморозке.
Примечание: У меня нет опыта ни с одним из этих инструментов, таким образом, я не могу предложить Вам дополнительную информацию о том, как они работают и т.д. Я могу только предоставить Вам их, ведет.
Лета является подобным глубокой заморозке программным обеспечением замораживания раздела для GNU/Linux Debian, и GNU/Linux Lihuen (Может работать над другим находящимся в Debian GNU/дистрибутивами Linux). Лета заставляет разделы вести себя как Живой CD: все изменения, внесенные в файловой системе, не будут сохранены на диске, но в RAM и когда система перезапустит, обо всем содержании, сохраненном на предыдущей сессии, "забывают" и теряют и диск / разделы восстанавливаются своему исходному состоянию.
Лета основана на Rootaufs, первоначально записанном Nicholas Schembri, которому мы должны благодарить публиковать сценарий в соответствии с лицензией GPL и подать эту возможную заявку.
Существует также видео на YouTube, названном: Замораживание Системы Ubuntu Linux С Летой, которая демонстрирует, как это работает.
fsprotect является рядом сценариев, настроенных для debian систем, которые защищают существующие файловые системы.
Это использует файловую систему AUFS и некоторое initramfs волшебство защитить корневую файловую систему. Это также использует простой init сценарий для защиты других файловых систем как можно раньше.
fsprotect превосходен для общедоступных компьютеров как те, которые в библиотеках, лабораториях, и т.д. Это упростит жизнь всех администраторов с несколькими простыми шагами.
Преимущества использования fsprotect:
- Файловые системы защищены, и никакое изменение никогда не пишется в диск
- Защищенные файловые системы смонтированы только для чтения. Это означает, что они не> ранены, когда компьютер выключен неправильно.
- Это очень просто в использовании. Просто добавьте "fsprotect" параметр к ядру для корневой файловой системы и перечислите файловые системы, которые будут защищены в/etc/default/fsprotect.
- В некоторых случаях это делает доступ к файловой системе быстрее.
Недостатки использования fsprotect:
- Изменения файловой системы не могут быть больше, чем предопределенный предел (установленный Вами) (в байтах).
- Так как tmpfs в большой степени используется, у Вас должна быть соответствующая область подкачки.
Dafturn Ofris, Замораживание из Индонезии, является приложением с открытым исходным кодом, которое может заморозить Ваш Linux, как Глубокая заморозка в операционной системе Microsoft Windows. Так, можно заблокировать систему при помощи этого приложения. Не стесняйтесь и откройтесь этим приложением.
Я нашел этот довольно хороший обзор и обсуждение использования Ofris, это названо: [КАК К] Глубокая заморозка Xubuntu с Ofris.