Быстрая и безопасная ОС для web-серфинга с неприступным носителем, легко изменяемым пользователем
(Источник)
ОСы с неприступным носителем, т.е. с носителем, информацию на котором физически невозможно изменить, давно и широко известны — это так называемые «live CD» — точнее было бы называть их «live DVD», т.к. iso-образы многих современных ОС для CD ROM слишком большие. Встречаются iso-образы, которые и на DVD ROM не влезут, но и это не проблема, т.к. файл iso-образа можно использовать и с жесткого диска, например, для установки ОС в виртуальную машину. Но это уже другой случай, а первоначальная идея была прожечь iso-образ на болванке CD или DVD ROM. С такой болванки можно загружать компьютер, и при этом никакие зловреды этому диску не страшны, т.к. он ROM. При этом для полного исключения заражения жестких дисков их вообще можно убрать. Это легко сделать, если HDD внешние, или если они съемные — установлены в Mobile Rack. Однако практическому использованию схемы «только один RO диск» мешают два серьезных неудобства: медленная загрузка (по сравнению с HDD) и невозможность изменять настройки, сохранять историю посещений сайтов, закладки и т.д. Эти неудобства преодолимы, во всяком случае, для простейшего web-серфинга.
Первое неудобство преодолимо использованием загрузочной флеш-карты («флешки») с RO форматом, второе — использованием второй флешки для сохранения текущих сохранений (но не для долговременного хранения какой-либо информации). Примером web-серфинга, о котором речь, может быть посещение Хабра: просмотреть информацию о новых публикациях, прочитать заинтересовавшие, прокомментировать, поставить плюсики понравившимся публикациям и комментариям и м.б. сделать собственную публикацию. Для чтения, комментирования и плюсования достаточно web-браузера, а для собственной публикации может пригодиться и простой графический редактор, чтобы подрезать найденную в сети картинку в заставку. Более серьезные графические и другие работы в понятие web-серфинга включать не будем. Эти работы можно делать на другом диске или компьютере, и без Интернета при этом зачастую можно обойтись. Конечно, есть много сложных работ, для которых Интернет совершенно необходим — в таком случае нужны другие решения.
В качестве исходной ОС я выбрал свободно распространяемый iso-образ live CD Knoppix 8.1. Это хорошо зарекомендовавшая себя ОС, в которой, кроме прочего, предусмотрено удобное средство установки ОС со сделанными изменениями на флешку, при этом ее можно сделать только для чтения. Скачав iso-образ, первым делом прожег DVD ROM: для коллекции и чтобы посмотреть скорость загрузки с DVD. (Склонность к коллекционированию CD и DVD здесь недавно обсуждалась и частично осуждалась — не будем возвращаться). Скорость загрузки с DVD ниже сравню со скоростью флешки. Но сначала опишу процесс установки ОС с изменениями на флешку. Этот процесс может быть многопроходным, т.к. трудно сразу все предусмотреть. Поэтому лучше использовать две флешки и два ридера к ним. Третья флешка понадобится для сохранения настроек, ридер к ней можно использовать от второй, если он подходит. Подойдут флешки и на 8 GB, но сейчас меньше 16 GB трудно найти в продаже, только если есть старые. Далее считаем, что система была загружена с флешки. В описании системный язык — английский, но при желании его можно сменить на русский, для этого в запросе «boot:» при загрузке надо набрать:
knoppix lang=ru
Общий вид десктопа после первой загрузки будет не совсем такой, как на приведенном снимке экрана:
Нужно добавить флаг переключения раскладки клавиатуры (русская-английская) в правом нижнем углу. Еще добавим два скрипта start.sh и stop.sh и ярлыки на них. Для этого нажимаем в линейке меню на Files (отмечено на рисунке стрелкой), нажимаем правую кнопку мыши (ПКМ, а левую кнопку будем называть ЛКМ) в окне домашней директории и выбираем в выпадающем меню создание текстового файла (Create NEW > Tex File). Этот файл называем start.sh, а повторив действия — stop.sh. Далее с помощью ПКМ открываем эти файлы (Open With > Text Editor) и копипастим следующее содержимое:
# Стартовый скрипт start.sh
log=~/log.txt
echo 'start.sh'>$log
date>>$log
# находим флешку данных:
fdiskLine=`fdisk -l | grep FAT32 | grep -v '\*'`
echo 'fdisk error '$?>>$log
echo 'fdiskLine = '$fdiskLine>>$log
# - ожидаем что-то вроде: fdiskLine = /dev/sde1 8192 15759359 15751168 7.5G b W95 FAT32
saveDev=${fdiskLine:0:9}
echo 'saveDev = '$saveDev>>$log
# - ожидаем что-то вроде: saveDev = /dev/sde1
mount $saveDev
echo 'mount error '$?>>$log
saveDisk='/media'${fdiskLine:4:5}
echo 'saveDisk = '$saveDisk>>$log
# - ожидаем что-то вроде: saveDisk = /media/sde1
dat=$saveDisk'/KnoppixSave/mozilla'
echo 'dat= '$dat>>$log
# - ожидаем что-то вроде: dat = /media/sde1/KnoppixSave/mozilla
# если есть сохраненный профиль firefox,
if [ -d $dat ]; then
# то удаляем профиль firefox, загруженный по умолчанию
rm -rf ~/.mozilla
echo 'rm error '$?>>$log
# копируем на его место сохраненный профиль
cp -r $dat ~/.mozilla
echo 'cp error '$?>>$log
fi
# запускаем firefox
firefox
echo 'firefox error '$?>>$log
# Стоповый скрипт stop.sh
log=~/log.txt
echo 'stop.sh'>>$log
date>>$log
# находим флешку данных:
fdiskLine=`fdisk -l | grep FAT32 | grep -v '\*'`
echo 'fdisk error '$?>>$log
echo 'fdiskLine = '$fdiskLine>>$log
# - ожидаем что-то вроде: fdiskLine = /dev/sde1 8192 15759359 15751168 7.5G b W95 FAT32
saveDev=${fdiskLine:0:9}
echo 'saveDev = '$saveDev>>$log
# - ожидаем что-то вроде: saveDev = /dev/sde1
mount $saveDev
echo 'mount error '$?>>$log
saveDisk='/media'${fdiskLine:4:5}
echo 'saveDisk = '$saveDisk>>$log
# - ожидаем что-то вроде: saveDisk = /media/sde1
dat=$saveDisk'/KnoppixSave/mozilla'
echo 'dat = '$dat>>$log
# - ожидаем что-то вроде: dat = /media/sde1/KnoppixSave/mozilla
saveLog=$saveDisk'/KnoppixSave/log.txt'
echo 'saveLog = '$saveLog>>$log
# - ожидаем что-то вроде: saveLog = /media/sde1/KnoppixSave/log.txt
# если есть сохраненный профиль firefox,
if [ -d $dat ]; then
# то удаляем этот профиль firefox
rm -rf $dat
echo 'rm error '$?>>$log
fi
# сохраняем профиль
cp -r ~/.mozilla $dat
echo 'cp error '$?>>$log
cp $log $saveLog
# выключаем компьютер
sudo poweroff
Можно сделать эти файлы в другой ОС и скопировать, а можно открыть Firefox и зайти на эту страницу Хабра. В любом случае хватаем файл ЛКМ, тянем его на десктоп, отпускаем ЛКМ, в выпавшем меню выбираем Link here. Еще нужно разрешить этим файлам исполняться. Для этого жмем ПКМ на start.sh и выбираем Properties в выпавшем меню. Откроется диалог, который нужно привести к следующему виду:
Аналогичные действия производим со stop.sh. О назначении скриптов будет рассказано ниже.
Проделав описанные действия, можем дополнительно изменить настройки системы. Например, кого-то могут раздражать анимации окон при закрытии. «Обои» десктопа тоже могут показаться слишком экстравагантными. Далее, не перегружая ОС, делаем ее клон на новой флешке. Для этого устанавливаем флешку во второй ридер — системную трогать нельзя (об этом высвечивается предупреждение в начале загрузки ОС). Нажимаем на пиктограмму дискеты («Install KNOPPIX to …») в левом верхнем углу экрана. В раскрывшемся диалоге выбираем сменный носитель, а потом нашу флешку «куда»:
Соглашаемся на удаление с нее всей бывшей информации и выбираем RO формат:
Далее жмем Yes, в том числе и на переделку ОС:
Любуемся на «градусник», но вот когда он дойдет до конца и пропадет — тут главное не торопиться вынимать флешку!
Если ридер с лампочкой/светодиодом, то будет видно мигание — процесс не закончился. Нужно дождаться заключительного сообщения (иначе флешка грузиться не будет):
Только теперь можно выбрать в меню Logout и Shutdown в открывшемся диалоге:
Весь процесс установки системы на флешку занимает на моем ПК около 9 минут — «около», потому что процесс диалоговый и общее затраченное время зависит от скорости реакции пользователя. С DVD ROM система загружается 160 сек., а с флешки всего за 32 сек. Скрипт start.sh отрабатывает за 20 сек., а stop.sh за 25 сек. до полного выключения ПК.
В том, что полученная флешка read-only, легко убедиться — сделать какие-либо изменения и перегрузить систему — изменения исчезнут. Как уже сказали выше, для web-серфинга достаточно браузера. В Knoppix по умолчанию это Firefox. Его профиль (настройки, историю, закладки и т.д.) будем сохранять на флешке для сохранения. Казалось бы, для этого можно использовать менеджер профиля Firefox. Но, к сожалению, там прописывается фиксированный путь к папке с профилем, а флешка сохранения может смонтироваться под разными именами, например, sda1 и sde1 в зависимости от того, проводилась ли загрузка ОС в присутствии этой флешки или пользователь установил ее уже после загрузки. Не найдя папки профиля, Firefox сильно обижается. Поэтому и пришлось добавить скрипты start.sh и stop.sh. Загрузив ОС, жмем ЛКМ на ярлыке start.sh (флешка сохранения должна быть установлена и на флешке должна быть папка KnoppixSave). Скрипт отыскивает эту флешку и, если в папке KnoppixSave есть папка mozilla, то содержимое последней копируется на место удаленной папки .mozilla в домашней директории ОС. Это папка с профилем Firefox. Потом запускается Firefox. Закончив серфинг, закрываем Firefox и жмем ЛКМ на ярлыке stop.sh — происходят обратные действия по копированию профиля Firefox в папку KnoppixSave флешки сохранения. Потом следует команда на выключение ПК. Код ошибки каждой команды скрипты пишут в лог-файл.
Должен отметить, что никогда не работал системным программистом и писал скрипты по мере личной необходимости, т.е. нечасто, т.о. опыт в этом деле у меня небольшой, и те, кому приходится это делать каждый день, безусловно смогут предложить более элегантные решения — Welcome! Тем же, кто знает еще меньше меня, поясню, что знак решетки »#» обозначает начало комментария, что команды скрипта можно по одной копировать в Terminal (его пиктограмма справа от Files — см. снимок) и смотреть, какой будет результат выполнения. Чтобы получить справку о команде, надо в Terminal’e набрать эту команду, а потом » --help». Еще больше можно узнать, если погуглить на слово «bash» — в частности, на Хабре есть очень хорошие руководства.
Обозначим как все уязвимости ОС за исключением уязвимостей Firefox, связанных с профилем, которые обозначим как , тогда при обычной установке на жесткий диск общая уязвимость ОС будет , а в нашем случае только . C большой долей вероятности можно предположить, что © Habrahabr.ru