Исследование возможностей операционной системы Linux На примере операционной системы Ubuntu. Дозвон по требованию. Набор протоколов AppleTalk

  • 29.04.2019

Debugfs,

· открываем исследуемый раздел в режиме чтения/записи

open –w /dev/hdc3 ,

· выводим на экран список удаленных inodes

· выбираем один из найденных индексных дескрипторов и работаем с ним

stat ,

· выводим таблицу inode , которая позволяет убедиться в том, что в ней сохранились адресуемые блоки данных и сохраняем содержимое индексного дескриптора в файл

dump file.out,

· пытаемся найти имя файла по его индексному дескриптору

ncheck ,

· бит, соответствующий данному inode в битовой карте индексных дескрипторов, устанавливаем в «1». Тем самым указываем системе, что индексный дескриптор вновь занят

seti ,

· в выводимой командой mi информации модифицируем две строки: устанавливаем в единицу число ссылок на индексный дескриптор и обнуляем время удаления файла. Затем процедура повторяется для каждого найденного inode

mi ,

· закрываем логический раздел

· выходим из отладчика

Если удаленные индексные дескрипторы не были найдены, это не означает, что на данном логическом разделе нечего искать. Индексные дескрипторы и логические блоки, как правило, адресуются независимо друг от друга, а inode удаленных файлов заполняются новыми метаданными в первую очередь. Поэтому следующим этапом будет являться поиск свободных блоков данных, содержащих утерянную информацию. Однако никаких утилит, позволяющих искать ранее освобожденные блоки данных, не существует. Это можно делать только после визуального просмотра битовой карты блоков, выявляя в ней байты, отличные от FF . Затем, последовательно копируя свободные блоки из нужного диапазона номеров (принадлежащих каталогу, из которого предположительно производилось удаление), можно создать файл, который затем можно посмотреть (он наверняка будет состоять из склеенных фрагментов различных файлов). Есть альтернатива – запустить одну из известных утилит контекстного поиска. Эти утилиты очень хорошо работают с англоязычным текстом, но с чтением кириллицы будут проблемы, особенно в кодировке UNICODE .

Просмотр отдельных блоков файлов со сложным внутренним форматом может быть связан с проблемами. Дело в том, что штатные приложения, предназначенные для работы с такими файлами, понимают только документы с неповрежденной структурой. Отдельные фрагменты файлов можно восстановить, если они содержат текст в одной из известных кодировок либо интерпретируемый программный код.

Для поиска известных сигнатур и текстовых фрагментов в большинстве случаев можно ограничиться использованием штатных утилит операционной системы. При поиске англоязычных фрагментов, сигнатур вредоносных программ, фрагментов рисунков вполне достаточно богатых возможностей утилит grep, fgrep и др.



В файловых системах ext3fs процесс удаления файлов происходит иначе. При удалении последнего имени файла это имя автоматически из записи в каталоге не стирается. Запись, принадлежащая удаленному файлу, присоединяется к предыдущей записи, увеличивая ее длину. Наряду с именем удаленного файла сохраняется и 4-байтный индексный дескриптор.

Но воспользоваться сохранившейся записью не удастся. Индексный узел удаленного файла заполняется нулями, в результате чего самое необходимое звено для восстановления файла оказывается разорванным.

Блоки данных удаленного файла продолжают сохранять прежнюю информацию. Однако узнать, где эти блоки располагались, можно только интуитивно. Освобожденные блоки данных будут заняты вновь созданным файлом, если они расположены компактно, а новый файл меньше прежнего.

В ext3fs возможен только один вариант восстановления удаленного файла. Он предполагает, что объем и содержимое удаленного файла известны. В этом случае по битовой карте блоков определяются освобожденные блоки в нужном количестве, устанавливаются их порядковые номера, а затем с помощью утилиты dd производится их копирование в файл. Если известны какие-либо слова или сигнатуры, входившие в состав удаленного файла, вывод dd можно перенаправить в утилиту grep .

Операционные системы UNIX развивались одновременно с вычислительными сетями. Включение ЭВМ в компьютерную сеть многократно увеличивает как функциональные возможности пользователя, так и степень уязвимости системы и обрабатываемой информации по отношению к сетевым атакам. Сетевые возможности операционных систем должны быть безопасными, однако это требование гораздо легче провозгласить, чем обеспечить.

Защите сетевой компьютерной информации и безопасной эксплуатации компьютерных сетей под управлением ОС Linux посвящены многие, в том числе довольно удачные книги . Искусство системного администратора во многом определяется его умением правильно построить и грамотно эксплуатировать вычислительную сеть. Для этого операционные системы Linux располагают самыми подходящими возможностями. Под управлением ОС Linux надежно работают и серверные приложения, и межсетевые экраны, и системы обнаружения компьютерных атак.

К сожалению, материал по обеспечению сетевой безопасности настолько обширен, что для его рассмотрения пришлось бы написать отдельную книгу, а возможно, и не одну. Поэтому автор ограничился рассмотрением лишь некоторых механизмов, на которых строится здание сетевой защиты.

При изучении материала предполагается, что читатели знакомы с основами построения компьютерных сетей и с сетевыми протоколами стека TCP/IP.

Проводя аналогию с операционными системами, позволю себе заявить, что единственное, чему никогда не научатся "Форточки" - материнской любви к пользователю. Windows всегда будет закрытой системой, и в следующей, и через десять версий (дай ей Бог здоровья). Поэтому всегда останется в мире место для системы, о которой пользователь может узнать все из документации, или, на худой конец, покопавшись в прилагающихся исходниках, и за которую он никому ничего не будет должен.

Конечно, возможность копаться в исходниках важна для профессионалов и хакеров, но конечному пользователю интересно другое. Итак, о том, что умеет свободная операционная система Linux.

Самое главное - многопользовательская многозадачность. Это значит, что несколько человек могут одновременно запускать свои программы, используя ресурсы системы на полную катушку. Кроме того, поддерживаются легковесные процессы (потоки), которые работают в пределах одной задачи и потому расходуют меньше памяти и быстрее запускаются. Многозадачность Linux работает стабильно, один процесс не может завалить всю систему, как это происходит в Windows 95. Более того, два процесса также не могут завалить систему...

Далее, Linux поддерживает множество платформ. Наиболее распространена версия Linux для процессоров Intel 386+, также поддерживаются платформы Motorola 680x0 (компьютеры Amiga и Atari, старые Маки), PowerPC, DEC Alpha, Sun SPARC, в настоящее время идет работа над версиями для процессоров MIPS и ARM, и ядром для встроенных систем, которое будет работать и на Intel 8086. Также с помощью специального модуля можно обеспечить совместимость Linux со SCO, SVR3 и SVR4 на уровне исполнимых файлов и с другими версиями Unix, совместимыми с POSIX или BSD, на уровне исходников.

Кроме работы на различных процессорах, Linux может также работать с многопроцессорными системами SMP (Symmetric Multi Processing) на платформах Intel и SPARC, и используется в некоторых специфических системах, например, в кластерах Beowulf и суперкомпьютерах Fujitsu AP1000+ на базе SPARC.

Мощная система виртуальной памяти позволяет загружать только те части программ, которые требуются, и поддерживает разделение между процессами страниц памяти, копируемых при записи. Это значит, что при запуске двух копий программы память будет выделена только для одной, а раздельные копии будут созданы только для тех участков, в которые будет производиться запись. Также увеличивает производительность и стабильность системы то, что можно выделять для свопинга особым образом отформатированные разделы на разных дисках.

Чтобы не быть голословным, приведу в пример собственный компьютер, 5x86-133/16 Мб. Даже при выполнении такой ресурсоемкой задачи, как компиляция Pretty Good Privacy 5.0i на фоне просмотра документов HTML, размер свопа не превышал полумегабайта, и оставалось еще 2 Мб на кэш диска. Как в такой конфигурации работает Windows 95, не говоря уже об NT, объяснять не надо.

Среди прочих удобств стоит отметить динамически загружаемые библиотеки, сохранение образа разрушенного процесса для "посмертной" отладки, эмуляцию математического сопроцессора на уровне ядра, систему "виртуальных консолей", позволяющую работать в нескольких сессиях одновременно, и поддержку локализации (в том числе три русских раскладки (две koi8 и одна alt-codes (MS-DOS)) и множество русских шрифтов).

Linux использует собственную файловую систему, ext2 (разделы до 4 терабайт и имена файлов до 255 символов), но может также работать с файловыми системами других юниксов, с DOS FAT, Windows 95 VFAT, OS/2 HPFS, Macintosh HFS и всеми стандартными форматами CDROM. Более того, Linux можно установить на DOS-овский раздел, поверх которого развернута система UMSDOS, в каждый каталог записывающая файл с недостающими в FAT атрибутами вроде длинных имен и прав доступа.

Что касается сетевых возможностей, то в стандартное ядро Linux обычно включается поддержка протоколов TCP, IPv4, IPX, DDP (Appletalt) и AX.25 (любительские радиосети). Существуют также модули, позволяющие Linux выполнять функции клиента или сервера в сетях NetWare, и разделять диски и принтеры в сетях на основе протокола SMB (Session Message Block, известен также как NetBIOS или LanManager), который используется в сетях Windows 3.11/95/NT.

Минимальная конфигурация для Linux - 386SX-16, 1 Мб ОЗУ и дисковод, но рекомендуется 4 Мб ОЗУ для работы в текстовом режиме и 8 Мб - для X/Windows. Как я уже говорил, в клиентской конфигурации с запасом хватает AMD 5x86-133 и 16 Мб ОЗУ, больше нужно только для серверов или графических станций. Объем требуемого дискового пространства сильно зависит от набора используемых программ. Для базового набора системных утилит вполне достаточно 10 Мб, остальное добавляется на пользовательские файлы и программные пакеты, и может составить от 60 до 300 Мб.

Список поддерживаемого оборудования называется Linux Hardware Howto и занимает десятки страниц, найти его можно по адресу http://sunsite.unc.edu/mdw/ HOWTO/Hardware-HOWTO.html или в стандартном комплекте документации. Для примера скажу лишь, что новомодные 3D-акселераторы Voodoo и Riva 128 в Linux поддерживаются.

Теперь о небогатом выборе программного обеспечения. В области коммуникационных программ и средств разработки с этой системой могут сравниться только другие Юниксы, программисту в Linux создаются все условия для плодотворной работы: десятки языков программирования, сотни редакторов, визуальные средства разработки - все это входит в большинство серьезных дистрибутивов Linux. То же с обработкой текстовых данных - в Unix изначально была сделана ставка на хранение информации в текстовом формате, и соответствующих средств было написано великое множество.

Графических программ под Linux также довольно много - от простых смотрелок до мощных редакторов и средств трехмерного моделирования и рейтрейсинга (в том числе и некоммерческих!). Более-менее полный список можно найти в Linux Graphics Mini-Howto на том же sunsite. То же со звуком - разного рода проигрывателей в дистрибутив Linux входит немало, а вот программу для серьезной звукозаписи придется поискать, а то и купить.

С базами данных дело обстоит сложнее. Конечно, их под Linux немало, в том числе свободная СУБД Postgres95, работающая с надмножеством SQL, но сколько бы их не было, мало кто решится переводить всю фирму со старого доброго FoxPro на неизвестно что. А для менее серьезных задач и база данных обычно не требуется.

Теперь о ложке дегтя. Действительно, Linux работает очень быстро. И все в ней можно настроить. Беда только в том, что многое в ней НУЖНО настраивать. Компании, занимающиеся разработкой и распространением дистрибутивов Linux, борются с этой проблемой с переменным успехом и предлагают заранее сконфигурированные пакеты, но всегда есть вероятность того, что придется лезть в систему руками. Такова цена за гибкость.

Чтобы для перехода из одной в другую не приходилось перегружать компьютер и не использовать , которая обязательно скушает половину всех ресурсов! Чтобы было удобно, наконец! Мечта? Уже реальность!

Идея иметь полноценное (или почти полноценное) Linux-окружение в Windows многим не дает покоя. Конечно, ничто не мешает нам запустить виртуальную машину, используя, к примеру, бесплатное решение VMware Server, и установить в качестве гостевой ОС все, что душе угодно. Но разве ж захочется каждый раз запускать требовательную к ресурсам виртуальную машину только для того, чтобы воспользоваться несколькими приложениями? С тем, что это работает медленно и неудобно, мириться еще можно, но вот жертвовать сотнями Мб оперативной памяти и временем зачастую просто нереально. Но если не так, – то тогда как же?

Старый добрый Cygwin

Возможность объединить Windows и Unix без использования виртуализации появилась давно. Кто из нас не пробовал использовать небезызвестный Cygwin – специальную среду, предназначенную для переноса программ из POSIX-совместимых операционных систем в Windows. Многие никсовые утилиты, портированные с помощью Cygwin, отлично чувствуют себя под виндой и до сих пор развиваются. Я и сам отлично помню, как радовался, впервые скомпилив какую-то линуксовую программу (кажется, это был эксплоит) прямо под виндой. По сути, Cygwin представляет собой библиотеку, которая реализует интерфейс прикладного программирования unix-систем на основе системных вызовов Win32 (стандартных для винды). Продукт по-прежнему отлично справляется со своими задачами, а в случае использования сборок (Cygwin + GNOME) и (Cygwin + KDE) даже позволяет запускать кое-какие оконные приложения. Сказка? Ну, не совсем. Даже несмотря на эмуляцию никсов, складывается ощущение недоделанности и отсутствия интеграции в саму систему. Окно с консолью в Cygwin, претендующее на звание тукса в винде, – не совсем то, чего мы хотели. Командная оболочка в системе остается прежней: тот же пресловутый cmd.exe и никак иначе. А ведь люди, привыкшие к bash или другой удобной никсовой оболочке, едва ли пойдут на компромисс с ограниченностью решения от Microsoft. Да, можно установить сборник GNU utilities for Win32, в который входит 26 портированных никсовых утилит (например, любимый многими grep), отчасти компенсировав отсутствие привычных инструментов, но опять же – об интеграции в систему речи не идет. Расширенная оболочка от Microsoft – PowerShell – хоть и предоставляет огромный простор для деятельности (о чем ты можешь прочитать в отдельной статье, которую мы выложили на диске) и основательно встраивается в систему, но ничего общего с никсовым bash не имеет. Так как же быть?


Решение от Microsoft

Выход нашелся там, где его не ищешь - на сайте Microsoft, в виде специального пакета Windows Services for UNIX (SFU) , который свободно доступен для закачки. Сами разработки позиционируют его как специальную подсистему для IT-профессионалов, желающих безболезненно переползти на винду с никсовых систем. Подсистему назвали Interix и это, я тебе скажу, что-то! Последний релиз SFU включает более 350 любимых юниксоидами утилит (среди них vi, ksh, csh, ls, cat, awk, grep, kill), которые полностью интегрируются в систему. Помимо этого в SFU входит GCC 3.3, отладчик GDB, сервер и клиент NFS и еще множество полезных в хозяйстве вещей. К сожалению, упомянутую командную оболочку bash, файловый менеджер Midnight Commander, демон OpenSSH, редактор emacs или http-демон Apache придется ставить вручную, но готовые к установке пакеты легко скачать с сайта www.interopsystems.com/tools/warehouse.htm . Тем более, перечисленные программы – лишь малая часть того, что там есть.

В результате установки SFU ты получаешь полное ощущение, что находишься в *NIX окружении. Чего стоит один bash, исполняемый подсистемой ядра и поэтому работающий с той же скоростью, что и Win32-приложения. Установив ssh-демон, ты превращаешь обычную Windows XP в многопользовательский сервер, на котором одновременно могут работать несколько активных аккаунтов. И не надо использовать каких-либо дополнительных средств, вроде Terminal Services – вот тебе готовое решение да еще со многими возможностями никсов. Ну, а ежели работать в консоли не нравится, то ничто не мешает установить бесплатный X-Window сервер, специально оптимизированный для SFU – X-Win32 LX . Напомню, что X Window System представляет собой протокол, с помощью которого видеовыход может быть послан с одного компьютера на другой. В итоге получаем полноценный Remote Desktop. В завершение стоит отметить, что все перечисленное устанавливается на раз-два, как и любое обычное приложений для Windows. Огорчает одно: последний релиз SFU вышел еще в 2006 году, а новых версий, по всей видимости, не предвидится.

Linux под Windows: реально?

Если даже специалисты из Microsoft занимаются вопросом создания Linux-окружения в Windows, то разумно предположить, что аналогичные решения есть и с другой стороны баррикад. Большая проблема в запуске никсовых приложений под виндой заключается в отсутствии соответствующего ядра операционной системы, и это отлично понимала команда программистов из Японии. Озадачившись этой загвоздкой, они представили сначала концепцию, а потом и реализацию Linux ядра, целиком портированного в Windows! Проект получил название Cooperative Linux или, сокращенно, coLinux . Он стал первой свободной разработкой, позволяющей запустить Linux под виндой без всякой виртуализации и необходимости перекомпилировать приложения! Достигается это за счет специального драйвера, отображающего системные вызовы Linux в вызовы Windows. Когда приложение пытается вызвать привычную для себя функцию Linux, ее работа не обламывается с ошибкой – вызов транслируется в набор системных вызовов самой винды и успешно выполняется. Все это работает значительно быстрее, чем в любых виртуальных машинах, поскольку используется родное для Windows ядро и не тратятся ресурсы на виртуализацию.

Несмотря на то, что с помощью coLinux можно запустить не только линуксовые приложения, но и вообще сам тукс, подробно рассматривать мы его не будем. Зато остановимся на двух других проектах, которые используют coLinux в качестве основы, но более дружественны к пользователю, избавляя от необходимости тратить время на настройку, которую в случае с «голым» пришлось бы выполнять вручную. Первым из этих проектов является andLinux .

Как сделать из Windows Ubuntu?

Если тебя кто-то спросит «Что такое andLinux ?», то лучше всего ответить так: «Это практически полный дистрибутив Ubuntu Linux, который работает прямо в Windows-системе!» Да-да, именно так! В качестве ядра используется coLinux, однако по возможностям andLinux намного превосходит его. Для скачки с официального сайта доступен уже готовый к использованию дистрибутив. В общем-то, обычная программа, если не считать вес: 131 Мб для версии с графической оболочкой XFCE и минимальным набором утилит – и аж 653 Мб для полной версии с KDE. Если ты не знаешь, что это такое, выбирай второй вариант – не ошибешься.

Установка пакета в систему ничем особенным не выделяется, но придется ответить на несколько вопросов мастера, указав некоторые параметры работы andLinux:

1. Количество оперативной памяти, которое смогут использовать Linux-приложения, лучше выбирать «не менее 256 Мб», хотя все будет работать, даже если выделить лишь 128.

2. Что касается вопроса, как запускать andLinux, советую выбрать вариант с автоматическим запуском в виде сервиса Windows.

3. Чтобы надстройка имела доступ к основной файловой системе, придется настроить Samba (специальный сервис в nix-системах, позволяющий подключаться к расшаренным ресурсам сетей Microsoft). Для этого необходимо создать папку в Винде и сделать ее доступной из сети (расшарить), а во время установки andLinux – указать ее имя и, если требуется, логин и пароль для доступа.

После установки в системе появляется панель (в случае дистрибутива с XFCE) или иконка в трее (в случае KDE), с помощью которой и запускаются предустановленные Linux-приложения. Для обычного пользователя это выглядит как набор самых обычных программ! Ничуть не удивительно, ведь все они имеют привычное для Windows обрамление (в отличие от уродливого Cygwin’а). Поэтому перепутать «чужеземца» с обычной программой очень просто!

Можно запустить абсолютно все, что и в Ubuntu Linux . По крайней мере, никаких ограничений мы не нашли и без проблем наставили кучу софта из репозиториев Ubuntu, воспользовавшись пакетными менеджерами apt-get и Synaptic. Если ты с ним еще не знаком, это твой реальный шанс оценить их мощь и удобство. Открыл окошко, нашел название нужной программы, нажал «Установить» – вот и вся установка. Менеджер сам закачает нужные файлы дистрибутива, а также все необходимые библиотеки и предоставит пользователю готовое для запуска приложение. Это даже проще, чем поставить программу в Windows! Естественно, ничто не мешает собирать программы из исходников. В общем, andLinux работает потрясающе, и единственным неудобным моментом можно счесть разве что обмен файлами между Windows и Linux посредством расшаренных папок и Samba.

Решение напоследок

Возможно, наш опыт превращения винды в тукс на этом бы и закончился, если бы 19 мая этого года компания Ulteo не объявила о запуске бета-тестирования своего нового приложения – Ulteo Virtual Desktop . По сути, почти то же самое, что и andLinux. Новинка также основана на сoLinux и позволяет запускать самые разные никсовые приложения без необходимости перекомпиляции. В связи с тем, что это еще ранняя бета, разработчики рекомендуют использовать только предустановленный набор программ (Kopete, Konqueror, KPdf, GIMP и т.д.), которые запускаются из специального меню сразу после установки пакета и не требуют какой-либо дополнительной настройки. Но если не брать в расчет это ограничение (тем более, приложения устанавливать на самом деле можно, правда, на свой страх и риск), то уже сейчас можно выделить несколько серьезных преимуществ разработки перед andLinux (справедливости ради замечу, что окончательного релиза у этой разработки также не было).

Разработчики Ulteo Virtual Desktop намного удобнее реализовали систему обмена файлами с Windows. Папка учетной записи пользователя в Windows автоматически монтируется в домашнюю папку Linux, что несравнимо комфортнее, нежели обмениваться через расшаренные ресурсы. Отличная поддержка звуковой системы и принтеров прямо «из коробки» – еще один конек системы. Остается только добавить автоматическое обновление программы и синхронизацию данных через . Искренне надеюсь, что Virtual Desktop будет быстро развиваться и через несколько месяцев порадует нас релизом.

Источник информации: http://www.xakep.ru/post/45334/default.asp

Оставьте свой комментарий!

Запуская интернет клуб под линуксом с бездисковой загрузкой мне пришлось углубиться в детальное изучение этой системы. Теперь эти детали созрели и сформировались в окончательные мысли, которые я способен выложить с помощью клавиатуры читателю.

В интернете есть множество заметок, расказывающих о преимуществе Linux перед Windows . Я не берусь сравнивать ибо очень давно практически не пользуюсь виндой. Внесу свою лепту о прелестях линукса без особого сравнения с чем либо. Я раскажу о тех вещах, за которые я люблю и выбираю линукс. Многие из этих моментов вряд ли возможны в винде и вряд ли когда то будут возможны благодаря проприетарному закрытому коду.

Сразу оговорюсь, что речь идет о Gentoo Linux, хотя почти все описаное актуально под любым другим дистрибутивом этой операционной системы.

Командная строка
Самая страшная ассоциация Линукса, которая нагоняет страх на всех юзеров - это командная строка. Пользователи ненавидят командную строку! Миф о том, что в линуксе все делается только с помощью команд на черном экране пересказывают миллионы чайников друг другу ночью, слушая потрескивание дровишек в торрент клиенте, докачивающем свежую порнушку. Сколько не объясняй чайнику, что свои любимые видеофильмы на немецком про любовь он сможет спокойно смотреть на линуксе, все равно распространенность мифа не дает побороть ужас неизвестного: "А вдруг не смогу?".

На самом деле, практически любое действие, которое выполняется из графического интерфейса имеет свой аналог из командной строки (обратное утверждение неверно). Это дает невероятную суперсилу и суперскорость пользователю линукса.

К примеру, возникла потребность скачать файл по ссылке. Требуется быстро выбрать директорию для сохранения и скачать файл.

Решение из командной строки состоит из двух команд: изменить текущую директорию куда будет сохраняться файл и собственно скачивание файла
$ cd /tmp
$ wget http://example.com/das-ist-fantastich.avi

Что? Говорите преймущество неочевидно? Тогда представим что у нас есть список URL по которым надо скачать тысячу файлов. В командной строке для решения достаточно указать в каком файле или по какому URL лежит этот список:
$wget -i /tmp/spisok.txt

Командная строка удобна при составлении списков заданий. Следующая строка подождет два часа (7200 секунд) пока доиграет жена, запустит обновление системы, после чего запакует директорию /mnt/work в архив /tmp/work.tar.gz и запишет архив на DVD на восьмой скорости без создания файловой системы для экономии места:
sleep 7200; emerge -DuN world; tar -zcvf /tmp/work.tar.gz /mnt/work; cdrecord dev=/dev/sr0 speed=8 /tmp/work.tar.gz

В общем, командная строка ускоряет, облегчает и даже отстраняет пользователя от нудной работы. Из командной строки можно выполнять такие действия, которые казалось бы ну никакой логикой с ней не связаны. К примеру, обработка графических изображений. Следующая строка открывает изображение in.png , уменьшает его пропорционально до 800 пикселей по ширине и сохраняет в out.jpg с качеством "90". Эта манипуляция требует установленый пакет ImageMagick

$convert -quality 90 -resize 800 -strip in.png out.jpg

Следующий пример сложен, но способен сохранить вам дни и недели нудной работы в фотошопе, если требуется обработать тысячи изображений. Следующая строка находит с помощью команды find в текущей директории все файлы с расширением.jpg. Названия найденых файлов передаются через xargs команде convert как параметр {}. Эта команда в каждый найденый графический файл в координатах 80x80 вписывает время и дату съемки фотографии, которые берет из EXIF. Файл сохраняется с тем же названием в директорию /tmp:
$find . -iname "*.jpg" | xargs -l -i convert -font Arial -pointsize 72 -fill white -annotate +80+80 % {} /tmp/{}

Пользователь оценивший суперсилу командной строки больше никогда не захочет чувствовать себя калекой, возможности которого ограничены указательным пальцем, кликающем по мыши.

Интерфейс отделен от функционала
На сервере баз данных, на веб-сервере, роутере, видеорегистраторе, ячейке распределенной вычислительной системы абсолютно не требуется наличие графического интерфейса. Такие системы работают без монитора годами. Линукс предоставляет отличную возможность выполнять все задачи не запуская графическую подсистему. Это отличная возможность использовать ресурсы компьютера более эффективно.

Ведь действительно, если у компьютера задача просто захватывать видео с камеры, сохранять его на жесткий диск и предоставлять ограниченый доступ к видеоархивам через интернет, то зачем на этой системе графический интерфейс? Гораздо удобней для такой цели веб-интерфейс.

Удаленный запуск программ
Допустим на домашнем компьютере у меня в браузере прикреплены сертификаты для электронных платежей. С собой я их не ношу. С любого линукс-компьютера я подключаюсь на домашний линукс-компьютер командой
ssh -X login@homeip
и запускаю браузер
$opera
Происходит чудо: я вижу графический интерфейс моей оперы с домашнего компьютера. Захожу на нужные сайты, делаю необходимые платежи и закрываю браузер.

Так можно запустить на удаленном компьютере любое графическое приложение, скорость работы которого упрется лишь в производительность компьютеров для шифрования и дешифрования траффика по SSH соединению и в саму скорость соединения. Приложение в таком случае использует вычислительные ресурсы одного компьютера, а графическое окно отрисовывается на другом. Это позволяет запускать требовательную к ресурсам программу на сервере, но работать с ней на древнем дохлом компьютере клиента.

Уточню, что это не аналог Rdesktop протокола, который тупо подключается к рабочему столу. Окно удаленно-запущеного приложения выглядит абсолютно как окно локального.

Ограничение прав пользователей
Обычно под ограничением пользовательских прав подразумевают ограничение к определенным файлам. Но так как в линуксе для доступа к аппаратным ресурсам компьютера используются файлы, то на любое устройство можно дать или убрать доступ.

Смотрим в каких группах состоим. Читай: какие права имеются у пользователя, под которым мы работаем в системе.
$groups
tty wheel uucp audio cdrom video usb users plugdev oper

Не хотим чтоб сотрудники использовали видеоускоритель для игры в 3D игры?
$gpasswd -d username video

Таким же макаром можно перекрыть доступ к звуковой карте, USB-портам, рекордеру дисков и т.п.

Использование песочницы
Если на очень важном сервере необходимо запустить приложение, которое является потенциальной брешью безопасности, то проблема решается созданием директории с упрощенным дубликатом linux системы. В эту директорию (назовем /mnt/sandbox) скидывается программа и все необходимые программе части системы: например /bin, /sbin, /usr/sbin/, /var.

Запускаем вебсервер Apache, который теоретически через кривые скрипты сайтов может стать причиной взлома всю имеющейся системы

$chroot /mnt/sandbox /usr/sbin/apache

Если же злоумышленик через кривой скрипт получит доступ к серверу, то он будет ограничен директорией /mnt/sandbox. Если он получит пароли или даже сотрёт всё из этой директории, то на работу сервера за пределами этой директории его деятельность никак не повлияет.

Виртуальные машины
Предыдущий инструмент chroot - прост, но не решает проблему разделения ресурсов. Не только злоумышленик, но и обычный владелец сайт может разместить скрипт чрезмерно прожорливый к ресурсам, отобрав ценные ресурсы (память и процессорное время) у других пользователей и программ. Эта задача решается через виртуальные машины.

Виртуальные машины в линуксе - это очень серьезная и сложная тема. В рамках этой заметки я лишь поверхностно на примерах покажу какие задачи они способны решать.

Одной из распространенных бесплатных программ для создания виртуальной машины является программа VirtualBox. Запустив VirtualBox мы можем создать вирутуальный компьютер, выделив место под жесткий диск, данные которого будут лежать в файле выделенного нами размера. Мы можем настроить для этого виртуального компьютера количество выделеной памяти, количество выделеных ядер процессора, выбрать ISO образ диска, который будет вставлен в виртуальный DVD. После настройки запускаем виртуальный компьютер, загружаемся с DVD-образа и устанаваливаем на виртуальный жесткий диск операционную систему. Вся прелесть такой виртуальной машины в том, что мы можем установить не только линукс, а любую операционную систему: Windows, Solaris, MacOS, FreeBSD.

Какое практическое применение можно придумать таким виртуальным машинам?
- эксперименты с установкой новых программ, неудачи которых мгновенно откатываются в исходное состояние
- одновременный запуск нескольких различных операционных систем на одном компьютере
- сдача в аренду множества вирутуальных серверов, которые физически запущены на одном компьютере, но не мешают друг другу.

KSM
Запуск вируальной машины вполне возможен на множестве других операционных систем. Почему это находится в статье про Linux? Linux превосходно справляется с запуском множества виртуальных машин! Одной из функций улучшающих эффективность запуска множества виртуальных машин на одном физическом компьютере является KSM - Kernel Samepage Merging.

Допустим мы запустили на одном компьютере 10 виртуальных Windows-машин, каждой из которых выделено по полгига памяти. Элементарная математика говорит о том, что сожрут они 5 гиг памяти. Чем же заняты эти пять гиг памяти? В основном дубликатом операционной системы Windows и дубликатами одинаковых программ, которые запущены на этих виртуальных машинах. Допустим из 512 мегабайт виртуальной машины 200 уходит на код одинаковой системы и программ. Подсистема KSM в линуксе отслеживает одинаковые страницы памяти и объединяет их таким образом, что они находятся в одном экземпляре для всех запущеных виртуальных машин. Таким образом можно серьезно сэкономить память предоставляя в аренду виртуальные хостинговые и виртуальные сервера на одном физическом сервере.

Драйвера
На производителей оборудования в плане драйверов под линукс надеяться пока не приходится: большинство производителей железа либо не делает дров под линукс либо делает что либо кривое чтоб отмахнуться. Драйвера различных устройств в линуксе как правило идут вместе с ядром и поддержка новых устройств появляется с выходом свежих ядер. Поэтому линукс всегда имеет поддержку всего распространенного оборудования.

Вся прелесть драйверов в линуксе заключается в том, что мизерный по размерам драйвер какого либо чипсета поддерживает устройства всех производителей. Скажем, если я знаю что материнская плата на чипе NVidia, то совсем нет необходимости разбираться кто является фирмой-производителем Asus, Palit, Gigabyte или еще какая то китайская контора. Очень удобно когда втыкаеш вебкамеру в USB и с большой вероятностью ядро ее определяет и тут же позволяет работать.

Однако, в том мизерном проценте случаев, когда ядро не смогло сразу подгрузить необходимый модуль начинается линуксовый ад: приходится искать драйвер в виде модуля. А зачастую приходится искать исходный код на сайте производителя и компилировать модуль ядра. Поспешу успокоить: при всей моей любви к компиляции ядер под свои нужды в линуксе у меня не было еще ни разу потребности компилировать драйвера самостоятельно из сторонних исходников. А в FreeBSD так приходилось делать.

Оптимизация ядра и системы
Раз уж зашла речь о компилировании ядра под себя, то прийдется расказывать подробней.

Возьмем для примера элементарный инструмент. Какой должна быть удобная и эффективная лопата? Надо прикинуть кто будет пользователем лопаты и какие задачи лопатой он будет выполнять. Можно конечно штыковой лопатой перекидывать снег с тропинок, но это не эффективно. Поэтому берут совковые лопаты. Почитаем что пишет википедия про совковые лопаты

Совковая лопата - глубокая, с закраинами. Предназначена для работы с сыпучими грузами. Для каждого вида груза разработана своя форма. Песочная - обычный прямоугольник; зерновая - то же увеличенной длины и ширины; растворная - с увеличенной глубиной. угольная, породная - заостренный треугольник.

Как думаете если такой элементарный инструмент как лопата имеет такое количество специализированных моделей, можно ли сделать универсальную операционную систему, которая со всеми задачами будет справляться идеально?

Правильный ответ: Gentoo Linux! Конечно же я немного утрирую насчет идеальности, но именно эта система дает невероятные возможности для тюнига такого инструмента как компьютер.

Сейчас раскажу каким образом. Программисты пишут на Си++ и потом его компилируют в бинарный код, который непосредственно выполняется процессором компьютера. Компиляция - очень сложный процесс, который имеет множество настроек. Чтоб бинарный код одинаково хорошо работал на всех компьютерах всегда главным условием идет универсальность. Именно с расчетом на универсальность поставляются почти все операционные системы. Я говорю о всех бинарных системах, которыми являются так же и большинство Linux систем: Arch, Ubuntu, Debian, Slackware.

В отличие от бинарных систем Gentoo Linux компилируется из исходных кодов во время установки в соответствии с настройками компилятора. Таким образом, я записываю настройки в файл /etc/make.conf:

CFLAGS="-march=k8-sse3 -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
ACCEPT_KEYWORDS=~amd64

При компиляции ядра и всех программ операционной системы компилятор будет использовать оптимизацию под процессор AMD Athlon64. В результате моя операционная система получает большой прирост производительности при работе на Атлонах, но будет хуже работать на процессорах Intel (или вообще не будет работать на Intel).

Кроме настроек компилятора имеется огромное количество настроек ядра, которые позволяют улучшить работу компьютера при выполнении каждой специализированной задачи, сэкономить память, улучшить отклик системы.

Конечно же, такой тюнинг оправдывает себя лишь в редких случаях. Но оправдывает с лихвой. К примеру, сервер хостинга для динамичных игр вроде Counter-Strike обязан иметь как можно более шустрый отклик. Тюнинг ядра в этом направлении повышает общую нагрузку на процессор. Такой тюнинг абсолютно противоречит настройке вебсервера, которому не важны милисекунды в отклике, а важно снижение общей нагрузки на процессор.

Работа под администраторскими правами
Как то раз меня вызвали в полицейское отделение и задали вопрос, знаю ли я человека с фотографии. Я человека знал. Он терся у меня в клубе и был клиентом. Об этом я и поведал сотрудникам полиции. На что они мне говорят
- А вот он пишет, что он у вас работает. Его принял на работу один из операторов. Вот читайте.
- А вам не режет глаза логическая ошибка. Каким образом оператор принял на работу человека с улицы?

Менты мне поведали в чем заключается дело, я им расказал свои догадки и на этом разговор был исчерпан. Но всерьез задумался, как будет работать фирма, в которой оператор будет принимать на работу, уборщик будет оформлять бухгалтерские документы, секретарша будет перенастраивать под себя сервер и вообще любой человек будет иметь возможность все улучшать. Конечно же это удобно когда можно попросить уборщика подписать документ о получении товара и оставить ему печать фирмы. Даже при всей доброжелательности уборщика вполне вероятен момент, когда ему подсунут вместо товарно-транспортной накладной документы на оформление кредита в миллион долларов. Если организация будет работать с таким количеством степеней работы, то это будет не фирма, а бардак.

С операционной системой получается аналогичная ситуация. Очень удобно работать с правами администратора на компьютере, но вот операционная система в таком режиме долго не живет. Я люблю линукс за то что он не лоялен к работе за компьютером с администраторскими правами. Именно это является причиной отсутствия вирусов под эту систему, а не его малая распространенность.

Права на запись
Мне очень нравится принцип всех линукс программ: не записывать свои файлы где попадет. Для работы системы требуется запись в /tmp и в домашнюю директорию пользователя. В случае запуска более сложных программ требуется еще /var (например, mysql хранит в этой директории базу данных).

С использованием различных инструментов системы линукс можно подключить все необходимые для записи директории в память, на сетевой диск или на любой другой удобный носитель. Это позволяет легко и непринужденно запускать систему любым удобным способом: с CD, DVD, с флэшки и даже по сети с сервера.

Обновления
Чтоб обновить систему я пишу команду

#emerge --sync; emerge -DuN world

Обновления в линуксе - это отличное событие. В программах появляются новые функции, убираются надоевшие глюки, улучшается производительность. С новыми ядрами добавляется поддержка нового оборудования и улучшается поддержка старого оборудования. Появляются новые возможности для тюнинга системы.

Я замерял и заметил, что после обновления Xorg сервера и драйверов nvidia тест glxgears показывает на одном и том же железе лучшие цифры. Разница не существенная, но прогресс есть всегда.

Иногда, надо сказать, обновления могут принести глюки и деградацию. Для решения этой проблемы новый пакет можно замаскировать и выбрать одну из предыдущих версий. Так, например в неэмуляторе винды WINE регулярно начинают переписывать какую то сложную подсистему и тогда новые версии несут в себе глюки. В этом году была проблема, когда отлично работающая в линуксе гама Warcraft DOTA перестала работать по сети с выходом новых версий WINE.

И самое главное, если вам надоели проблемы с , переходите на линукс. Linux - это единственное верное решение!

Главная > Исследование

Исследование возможностей операционной системы Linux

На примере операционной системы Ubuntu

    многозадачность: несколько программ работают в одно и тоже время. многопользовательская система: несколько пользователей могут работать на одной машине одновременно (и без многопользовательской лицензии!). многоплатформенность: работает на разных процессорах, не только на Intel. многороцессорность: доступна поддержка SMP на платформах Intel и SPARC (для других платформ работа сейчас ведется), и Linux используется в нескольких свободно-связанных MP приложениях, включая системы Beowulf (смотрите http://cesdis.gsfc.nasa.gov/linux-web/beowulf/beowulf.html) и основанном на SPARC суперкомпьютере Fujitsu AP1000+. многопоточность: имеет встроенную в ядро поддержку множества независящих потоков внутри пространства одного процесса. работает в защищенном режиме на 386. имеет защиту памяти между процессами, так что одна программа не может разрушить всю систему. загрузка исполнимых файлов по требованию: Linux считывает с диска только те части программ, которые в действительности нужны. разделяемые copy-on-write страницы памяти между программами. Это означает, что много процессов могут использовать одну и туже память для работы. Когда один из процессов пытается записать в эту память, эта страница (4КБ кусок памяти) копируется куда-нибудь. Copy-on-write имеет два преимущества: увеличение скорости и уменьшение используемой памяти. виртуальная памяти использует подкачку страниц (а не свапирование всего процесса) на диск: на отдельный раздел или в файл в файловой системе, или оба способа, с возможностью добавления дополнительных областей свапирования во время работы (да, они все еще называются областями свапирования). Максимум 16 областей свапирования размером по 128 MB (2GB в свежих ядрах) могут быть использованы одновременно, теоретически максимум 2 GB используемого пространства для свапирования. Эти значения достаточно просто увеличить, если это необходимо, просто изменив несколько строк исходного кода. унифицированный пул памяти для пользовательских программ и дискового кеша, так что вся свободная память может быть использована для кеширования, а кеш может быть уменьшен при выполнении больших программ. динамически подключаемые разделяемые библиотеки (DLL), и статические библиотеки. производится core dump для посмертного анализа программ, позволяя использовать отладчик для программы, не только когда она выполняется, но и тогда, когда она аварийно завершается. в большинстве совместима с POSIX, System V и BSD на уровне исходного кода. используя iBCS2-compliant модуль эмуляции, большей частью совместима с SCO, SVR3 и SVR4 на уровне двоичных файлов. доступен весь исходный код, включая все ядро и все драйвера, средства разработки и все пользовательские программы; также, все это свободно распространяется. Множество коммерческих программ предоставляется для Linux без исходного кода, но все что свободно, включая всю базовую операционную систему, остается свободным. управление заданиями POSIX. псевдотерминалы (pty). эмуляция сопроцессора 387 в ядре, так что программам не нужна собственная эмуляция. Каждый компьютер, работающий под управлением Linux представляется как имеющий математический сопроцессор. Конечно, сели на вашем компьютере уже есть математический сопроцессор, то он будет использован вместо эмуляции, и вы можете даже скомпилировать ядро без эмуляции математического сопроцессора, для уменьшения занимаемой ядром памяти. поддержка множества национальных или настраиваемых клавиатур, и достаточно легко динамически добавить еще одну. множественные виртуальные консоли: разные независящие сеансы работы на одной консоли, вы можете переключаться между ними используя комбинацию клавиш (не зависит от видео оборудования). Консоли выделяются динамически; вы можете создать до 64 консолей. Поддержка разных общих файловых систем, включая minix, Xenix, и все общие файловые системы System V, также имеет собственную расширенную файловую систему, которая позволяет создавать разделы до 4 TB, с именами длиной до 255 символов. прозрачный доступ к разделамo MS-DOS (или к разделам OS/2 FAT) используя специальную файловую систему: вам не нужны специальные команды для использования раздела MS-DOS, он выглядит точно также как обычная файловая система Unix (за исключением странных ограничений на имена файлов, права доступа и так далее). Сжатые разделы MS-DOS 6 в настоящее время не доступны без наложения дополнительной заплатки на исходный код ядра (dmsdosfs). Поддержка VFAT (WNT, Windows 95) и FAT-32 доступна в Linux 2.0 специальная файловая система, названная UMSDOS, которая позволяет установить Linux на файловую систему DOS. доступ только для чтения к HPFS-2 для OS/2 2.1 (В 2.4 будет доступ и на запись. Прим. переводчика) поддержка файловой системы HFS (Macintosh) доступна отдельно, как модуль. файловая система CD-ROM, которая работает со всеми стандартными форматами CD-ROM. сетевые возможности TCP/IP, включая ftp, telnet, NFS, и т.д. сервер Appletalk клиент и сервер Netware клиент и сервер Lan Manager/Windows Native (SMB) множество сетевых протоколов: базовые протоколы, доступные в последних разрабатываемых ядрах включают TCP, IPv4, IPv6, AX.25, X.25, IPX, DDP (Appletalk), Netrom, и другие. Стабильные сетевые протоколы, включенные в стабильную ветку ядер включают в себя TCP, IPv4, IPX, DDP, и AX.25.
5.2.Первая загрузка Мы установили систему и перегрузились. Знакомьтесь, перед вами GRUB! Как я и обещал в самом начале, Ubuntu сам позаботится о том, чтобы у нас была возможность загрузить как Ubuntu, так и Windows. Grub - это менеджер загрузки, который позволяет грузиться в обычном режиме, в режиме восстановления или, например, загрузить Windows. Замечу, что если Windows не установлен, то меню вы не увидите, а увидите примерно такую картину: В этом случае, если захотите зайти в меню - нажмите Esc. Выбираем загрузку Ubuntu (или просто не трогаем ничего, она автоматически начнется через несколько секунд). Процесс загрузки начался.
Спустя некоторое время мы увидим следующую картину (если при установке вы поставили галочку "Войти автоматически", то вы не увидите экран логина.): Вводим свой логин и пароль. Также при желании можно перегрузить или выключить компьютер, если вдруг передумали или случайно загрузились, а планировали зайти в Windows. Если все ок - перед нами Gnome! 5.3.Gnome (Обзор) Ну вот мы и загрузились в первый раз. Перед нами рабочая среда Gnome. Можно кликнуть на картинке, чтобы увеличить ее.
В этой статье мы рассмотрим основные элементы графической оболочки Gnome и сравним ее с элементами Windows. Сразу несколько слов о локализации. Мы выбрали русский язык при установке и тем не менее видим английский интерфейс вперемешку с русским. Причина тут в том что диск один, а языков очень много и, как я полагаю, просто напросто не хватило места на то, чтобы добавить поддержку всех языков, поэтому изначально поддерживается полностью только английский, как универсальный. Впоследствие, после того, как мы подключим сеть и проапдейтим систему, мы установим полноценный русский язык. Итак, начнем. Сразу бросается в глаза то, что панелей тут две, в отличие от Windows: сверху и снизу. Это очень удобно, поверьте, особенно когда мы добавим апплеты, настроим погоду и т.д. и т.п. Главное меню На верхней панели слева находится главное меню. Оно состоит из трех пунктов. Первый пункт: Applications (Программы). Это аналог Пуск - Программы в Windows.