Основы работы в операционной системе unix. История возникновения и стандарты UNIX. Файловая система Linux

Для начала неплохо было бы составить общее представление о том, что такое Linux и как он работает.

А начать можно с Введения в Linux (sxw). Хотя есть и другие введения. Например это. Вот дока Р.С.Клочкова и Н.А.Коршенина Основы UNIX и Linux (SXW), (PDF).

Основы ОС UNIX. Учебный курс . (SXW) (PDF)
Copyleft (no c) — Fuck copyright! 1999-2003 В. Кравчук, OpenXS Initiative
Этот краткий (предположительно, 16 часов, из которых 6 — практические занятия) вводный курс предназначен для ознакомления с архитектурой, особенностями и основными средствами ОС UNIX. При успешном освоении, курс позволит свободно и продуктивно работать в ОС UNIX в качестве пользователя и продолжить изучение администрирования или программирования этой операционной системы.
Изложение ведется, в основном, без привязки к особенностям какой-либо версии UNIX, но при необходимости конкретизации, она делается для систем SVR4, в частности, ОС Solaris 8.
Также предлагаю книгу Андрея Робачевского «Операционная система UNIX»
Вот что пишет автор: «Данная книга не является заменой справочников и различных руководств по опера ционной системе UNIX. Более того, сведения, представленные в книге, подчас трудно найти в документации, поставляемой с операционной системой. Эти издания насыщены практическими рекомендациями, скрупулезным описанием настроек тех или иных подсистем, форматов вызова команд и т. п. При этом за кадром часто остаются такие вопросы, как внутренняя архитектура отдельных компонентов системы, их взаимодействие и принципы работы. Без знания этой «анатомии» работа в операционной системе превращается в использование заученных команд, а неизбежные ошибки приводят к необъяснимым последствиям. С другой стороны, в данной книге вопросам администрирования UNIX, настройке конкретных подсистем и используемым командам уделено значительно меньше внимания. Цель данной книги заключается в изложении основ организации операционной системы UNIX. Следует иметь в виду, что именем UNIX обозначается значительное семейство операционных систем, каждая из которых имеет свое название и присущие только ей особенности. В этой книге сделана попытка выделить то общее, что составляет «генотип» UNIX, a именно: базовый пользовательский и программный интерфейсы, назначение основных компонентов, их архитектуру и взаимодействие, и на основе этого представить систему в целом. В то же время там, где это имеет значение, приводятся ссылки на конкретную версию UNIX».

Лично мне очень помогает чтение прекрасной книги Виктора Алексеевича Костромина Linux для пользователя ” которую могу Вам предложить (kos1 , kos2 , kos3, kos4, kos5, kos6, kos7, kos8, kos9, kos10, kos11, kos12, kos13, kos14, kos15, kos16, kos17, kos18).
А вот эта же книга, но уже в PDF (kos1, kos2, kos3, kos4, kos5, kos6, kos7, kos8, kos9, kos10, kos11, kos12, kos13, kos14, kos15, kos16, kos17, kos18).
А теперь еще и в SXW (kos1, kos2, kos3, kos4, kos5, kos6, kos7, kos8, kos9, kos10, kos11, kos12, kos13, kos14, kos15, kos16, kos17, kos18).
Если Вы предпочитаете документы в формате HTML, то по приведенным выше ссылкам можно попасть на страницу, откуда предлагается закачать архивы глав книги именно в этом формате.

Из фундаментальных книг могу также посоветовать прекрасное руководство Карла Шрёдера «Linux. Сборник рецептов» . Сразу предупреждаю, что по этой ссылке книга в формате.pdf, и весит она 50 МВ . Но возможен и альтернативный вариант — та же книга, только в

ФОРМАТЕ.ТХТ Аннотация к книге следующая:»Предлагаемое издание содержит уникальную коллекцию советов, инструментов и сценариев; вы найдете ряд готовых отлаженных решений сложных проблем, с которыми сталкивается любой администратор, настраивающий Linux-сервер; эти решения пригодятся и при настройке небольших сетей, и при создании мощных распределенных хранилищ данных. Книга написана в уже ставшей популярной форме книг рецептов издательства O’Reilly в формате «Проблема-Решение-Обсуждение». Для опытных пользователей, программистов, системных администраторов, студентов вузов, аспирантов и преподавателей». Если вдруг ссылка прекратит существование, просьба сообщить — возможно выложу файл.pdf и на свой сайт.

Мне очень нравится серия статей и заметок Алексея Федорчука, Владимира Попова и ряда других авторов, которые я беру отсюда: http://unix.ginras.ru/ . Вот интереснейшие материалы о Linux в целом и его отдельных компонентах в частности (Linux-all.zip, Linux-all2.zip, Linux-all3.zip, Linux-all4.zip).
SXW — (Linux-all. zip, Linux-all2.zip, Linux-all3.zip, Linux-all4.zip),
А также книга Алексея Федорчука»Сага о POSIX или Введение в POSIX’ивизм » в которой освещаются общие вопросы ряда систем, в первую очередь о UNIX-подобных. Название говорит само за себя. По словам авторов, книга предназначена для пользователей (в том числе и начинающих). Вот файлы — Часть 1 , Часть 2 , Часть 3 , Часть 4 .
И SXW — Часть1, Часть2, Часть3, Часть4.

А если интересна история СВОБОДНЫХ СИСТЕМ, то можете почитать Подборку статей, под общим названием Дорога, открытая всем » (sxw) и, по словам автора, освещает общие вопросы Open Sources, POSIX-систем, историю UNIX, BSD, Linux

Также, для понимания принципов работы ОС, понятие процесса, наравне с понятием файла, является, безусловно, одним из самых важных понятий. Этому посвящена статья В.А. Костромина » Процессы и демоны в Linux » (SXW .

Text-Terminal-HOWTO (SXW)v 0.05, June 1998
Этот документ объясняет, что такое текстовые терминалы, как они работают, как устанавливать и конфигурировать их и дает некоторую информацию об их ремонте. Он может отчасти использоваться, даже если у вас нет руководства по терминалу. Хотя этот труд написан для реальных терминалов на системе Linux, часть его также применима для эмуляторов терминала и/или других Unix-подобных систем.

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

Вот материалы посвященные командным оболочкам, или командным интерпретаторам, именуемых также просто шеллами (shell). В первую очередь подборка статей которые объединены под названием Шелл и утилиты (SXW), (PDF).

Наиболее популярной оболочкой на сегодняшний день является Bash — зто сокращение Bourne Again SHell (Еще одна оболочкa Борна). Советую прочесть BASH конспект , (SXW), (PDF)
Дата создания: 16.12.97.

А также Особенности работы оболочки bash (SXW), (PDF).
Документ кратко суммирует то, что Bash унаследовал от борновской оболочки: структуры контроля оболочки, встроенные команды, переменные и другие особенности. Здесь также перечисляются наиболее значительные различия между Bash и борновской оболочкой.

Интерпретатор командного языка shell Shell (SXW), (PDF) — командный язык, могущий выполнять как команды, введенные с терминала, так и команды, хранящиеся в файле.

Программирование на Shell (UNIX) (SXW), (PDF)

Если зависает Windows, пользователь делает некие телодвижения, а затем, убедившись в «тщете и суетности этого мира», со спокойным сердцем нажимает RESET. В Линуксе все обстоит иначе. Об это статья — Висит? Снимем! (SXW)

Вопросы и ответы по kppp (SXW)

Статья В.А.Костромина « Иерархия каталогов и файловых систем в Linux » (SXW) в которой рассказывается о разработанном в рамках проекта Open Source стандарте на структуру каталогов UNIX-подобных операционных систем (подразумеваются Linux и BSD-системы).

О файлах (коими в Linux, по сути, являются каталоги, и даже устройства) но в несколько другом ракурсе рассказывает руководство Файлы и права доступа к ним (SXW).
Очень рекомендую. Разжевано замечательно.

Команды и сокращения Linux (SXW).
Это — практическая подборка программ, которые мы используем наиболее часто, считаем полезными, и которые присутствуют в наших дистрибутивах Linux (RedHat или Mandrake).

Консоли UNIX (SXW) – заметки о различных консолях.

А вот нехилое руководство Mandrake Linux 9.0 Руководство по Командной Строке (SXW).

Монтирование файловых систем из устройств и файлов (SXW) (PDF)
Дата создания документа: 26.07.2004
Дата последнего изменения: 20.08.2004
Автор: Князев Алексей.

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

В данном разделе мы собираемся разъяснить основные понятия связанные с Linux. Выполняя поставленную перед нами задачу мы полагаем, что вы уже имеете представление о компьютерных системах в целом, включая такие компоненты как центральный процессор (ЦП), оперативная память (ОЗУ), материнская плата, жесткий диск, а также другие контроллеры и устройства, связанные с ними.

3.1

Термин «Linux» часто используется для обозначения всей операционной системы, но на самом деле Linux – это ядро операционной системы, которое запускается начальным загрузчиком, запускаемым BIOS / UEFI. Ядро берет на себя роль, похожую на роль дирижера в оркестре, оно обеспечивает согласованную работу аппаратных средств и программного обеспечения. Данная роль подразумевает под собой управление оборудованием, пользователями и файловыми системами. Ядро представляет собой общую базу для других программ, работающих в данной системе, и чаще всего запускает ring zero, также известное, как пространство ядра (kernel space).

Пользовательское пространство

Мы используем термин «пользовательское пространство», чтобы объединить все, что происходит за пределами ядра.

Среди программ, работающих в пространстве пользователя, много основных утилит из проекта GNU, большинство из которых предназначено для запуска из командной строки. Вы можете использовать их в сценариях для автоматизации различных задач. Дополнительную информацию о наиболее важных командах см. в разделе 3.4 « ».

Давайте быстро рассмотрим различные задачи, выполняемые ядром Linux.

3.1.1 Запуск оборудования

Назначением ядра, прежде всего, является управление и контроль над основными компонентами компьютера. Оно обнаруживает и настраивает их, когда компьютер включается, а также когда устройство монтируется или извлекается (например, USB устройство). Это также делает их доступными для более высокоуровневого программного обеспечения благодаря упрощенному программному интерфейсу, поэтому приложения могут использовать преимущества устройств, не обращаясь к деталям, например к слоту расширения, в который вставлена плата. Программный интерфейс также предоставляет определенный уровень абстракции; это позволяет использовать оборудование для проведения видеоконференций, например, использовать вебкамеру независимо от её модели и производителя. Программное обеспечение может использовать интерфейс Video for Linux (V4L) и ядро будет переводить вызовы интерфейса в реальные аппаратные команды, необходимые для работы конкретной веб-камеры.

Ядро экспортирует данные об обнаруженном оборудовании через виртуальные системы /proc/ и /sys/ . Приложения часто получают доступ к устройствам с помощью файлов, созданных в /dev/ . Особые файлы, представляющие диски (например, /dev/sda ), разделы (/dev/sdal ), мыши (/dev/input/mouse0 ), клавиатуры (/dev/input/event0 ), звуковые карты (/dev/snd/* ), последовательные порты (/dev/ttyS* ) и другие компоненты.

Существует два типа файлов устройств: блочные и символьные. Первые имеют характеристики блока данных: они имеют конечный размер, и вы можете получить доступ к байтам в любой позиции блока. Последние ведут себя как поток символов. Вы можете читать и писать символы, но вы не можете искать заданную позицию и изменять произвольные байты. Чтобы узнать тип файла устройства, проверьте первую букву вывода команды Is -1. Это может быть либо b, для блочных устройств, либо c, для символьных устройств:

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

3.1.2 Объединение файловых систем

Файловые системы являются важным аспектом ядра. Системы, основанные на Unix, объединяют все хранилища файлов в одну иерархию, что позволяет пользователям и приложениям получать доступ к данным, зная их местоположение в пределах этой иерархии.

Отправная точка этого иерархического дерева называется root, представленный символом “/”. Данная директория может содержать именованные суб-директории. Например, домашняя суб-директория «/» называется /home/ . Эта суб-директория, в свою очередь, может содержать другие суб-директории и т.д. Каждая директория также может содержать файлы, в которых будут храниться файлы. Таким образом, home/buxy/Desktop/hello.txt относится к файлу под названием hello.txt , который хранится в суб-директории Desktop, находящейся в buxy суб-директории домашнего каталога, который присутствует в root . Ядро компилирует между данной системой именования и местом хранения на диске.

В отличие от других систем, Linux обладает только одной такой иерархией и может интегрировать данные с нескольких дисков. Один из таких дисков становится root, а другие монтируются на директории в иерархии (эта команда в Linux называется mount). Эти другие диски затем становятся доступными под точками монтирования (mount points ) Это позволяет хранить пользовательские домашние директории (которые обычно хранятся на /home/ ) на отдельном жестком диске, который будет содержать директорию buxy (вместе с домашними директориями других пользователей). После того, как вы установили диск в /home/ , эти каталоги становятся доступными в их обычном месте, а различные пути, такие как /home/buxy/Desktop/hello.txt , продолжают работать.

Существует множество форматов файловой системы в соответствии с множеством способов физического хранения данных на дисках. Наиболее широко известны ext2, ext3 и ext4, но существуют и другие. Например, VFAT является файловой системой, которая исторически использовалась DOS и операционными системами Windows. Поддержка VFAT операционной системой Linux позволяет жестким дискам быть доступными как под Kali, так и под Windows. В любом случае, вы должны подготовить файловую систему на диске, прежде чем смонтировать ее, и эта операция называется форматированием .

Команды, такие как mkfs.ext3 (где mkfs расшифровывается как MaKe FileSystem) обрабатывает форматирование. В качестве параметра эти команды требуют файл устройства, представляющий раздел, который следует отформатировать (например,/dev/sdal , первый раздел на первом диске). Эта операция уничтожает все данные и должна запускаться только один раз, если конечно вы не хотите стереть файловую систему и начать новую работу.

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

3.1.3 Управление процессами

Процесс является исполняемым экземпляром программы, для которой требуется хранить память, как самой программы, так и ее рабочих данных. Ядро отвечает за создание и отслеживание процессов. Когда программа запускается, ядро ​​сначала выделяет некоторую память, загружает исполняемый код из файловой системы в эту память, а затем запускает код. Он содержит информацию об этом процессе, наиболее заметным из которых является идентификационный номер, известный как идентификатор процесса (process identifier (PID)).

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

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

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

Мультипроцессорные Системы (и другие варианты)

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

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

3.1.4 Управление правами

Unix системы поддерживают множество пользователей и групп и позволяют контролировать права доступа. В большинстве случаев, процесс определяется пользователем, который запускает его. Данный процесс может выполнять только те действия, которые разрешены его владельцу. Например, открытие файла требует от ядра проверить процесс на наличие необходимых прав (для получения большей информации конкретно по этому примеру, см. раздел 3.4.4, “Управление правами”)

3.2 Командная строка Linux

Под «командной строкой» мы подразумеваем текстовый интерфейс, который позволяет вводить команды, выполнять их и просматривать результаты. Вы можете запустить терминал (текстовый экран внутри графического рабочего стола или текстовую консоль вне любого графического интерфейса) и интерпретатор команд внутри него (оболочка ).

3.2.1

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


Рисунок 3.1 Запуск терминала GNOME

Например, в системе Kali Linux по умолчанию, GNOME терминал может быть запущен из списка избранных приложений. Также вы можете ввести «terminal» в окне Activities (окно, которое активируется, когда вы передвигаете мышь в левый верхний угол) и нажмите на необходимой вам иконке приложения, которые появятся (Рисунок 3.1, ““).

В случае каких-либо нарушений или некорректной работы вашего графического интерфейса вы все равно можете запустить командную строку на виртуальных консолях (до шести из них могут быть доступны через шесть комбинаций клавиш, начиная с CTRL + ALT + F1 и заканчивая CTRL + ALT + F6 – клавишу CTRL можно не нажимать, если вы уже находитесь в текстовом режиме вне графического интерфейса Xorg или Wayland ).

Вы получаете обычный экран входа, где вы вводите свой логин и пароль, перед тем как получить доступ к командной строке с её оболочкой:

Программа, обрабатывающая введенные вами данные и выполнение ваших команд, называется оболочкой (shell или интерпретатором командной строки). По умолчанию оболочкой, предоставляемой в Kali Linux, является Bash (это означает Bourne Again SHell ). Конечный символ «$» или «#» указывает, что оболочка ожидает вашего ввода. Эти символы также указывают на то, каким образом воспринимает вас Bash, как обычного пользователя (первый случай со значком долларом) или как суперпользователя (последний случай с хэшем).

3.2.2

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

Как только сеанс запущен, команда pwd (которая расшифровывается как print working directory (отобразить рабочий каталог) ) выведет на экран ваше текущее местоположение в файловой системе. Ваше текущее местоположение можно изменить с помощью команды cd название директории (где cd означает (сменить директорию)). В том случае, если вы не указали директорию, куда хотите перейти, вы автоматически вернетесь в вашу домашнюю директорию. Если вы введете cd -, то вы вернетесь в предыдущую рабочую директорию (в ту, в которой вы находились перед вводом последней команды cd). Родительский каталог всегда называется.. (две точки), в то время как текущий каталог обозначается. (одной точкой). Команда ls позволяет вам перечислить содержимое директории. Если вы не указываете дополнительных параметров команда ls, отобразит содержимое текущей директории.

Вы можете создать новую директорию с помощью команды mkdir название директории, а также удалить существующую (пустую) директорию с помощью команды rmdir название директории. Команда mv позволит вам перемещать и переименовывать файлы и директории; удалить файл можно с помощью rm название файла, а копирование файла выполняется с помощью cp исходный-файл целевой-файл.

Оболочка выполняет каждую команду, запуская первую программу с данным именем, которую она находит в каталоге, указанном в переменной среде PATH . Чаще всего эти программы находятся в /bin,/sbin, /usr/bin или /usr/sbin . Например, команда ls находится в /bin/ls; Иногда команда напрямую обрабатывается оболочкой, и в этом случае она называется встроенной командой оболочки (среди них – cd и pwd ); команда type позволяет запросить тип каждой команды.

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

Переменные среды

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

Эти переменные могут быть определены как для системы в/etc/profile так и для пользователя в~/ .profile, но переменные, которые не являются характерными для интерпретаторов командной строки, лучше вставлять в /etc/environment, поскольку эти переменные будут введены во все пользовательские сессии благодаря подключаемому модулю аутентификации (Pluggable Authentication Module (PAM)) – даже если никакая оболочка не выполняется.

3.3 Файловая система Linux

3.3.1 Стандарт иерархии файловой системы

Как и другие дистрибутивы Linux, Kali Linux организован в соответствии со стандартом Filesystem Hierarchy Standard (FHS), что позволяет пользователям других дистрибутивов Linux с легкостью ориентироваться в Kali. FHS определяет назначение каждой директории. Директории верхнего уровня описываются следующим образом.

  • /bin/: основные программы
  • /boot/: Ядро Kali Linux и другие файлы, необходимые для его раннего процесса загрузки
  • /dev/: файлы устройства
  • /etc/: файлы конфигурации
  • /home/: личные файлы пользователей
  • /lib/: основные библиотеки
  • /media/*: точки монтирования для съемных устройств (CD-ROM, USB накопители и т.д.)
  • /mnt/: временные точки монтирования
  • /opt/: дополнительные приложения, предоставляемые третьими лицами
  • /root/: личные файлы администратора (файлы root)
  • /run/: непостоянные файлы рабочего процесса, которые не сохраняются после перезагрузки (еще не включённые в FHS)
  • /sbin/: системны программы
  • /srv/: данные, используемые серверами, расположенными в этой системе
  • /tmp/: временные файлы (эта директория часто опустошается после перезагрузки)
  • /usr/: приложения (эта директория в дальнейшем разделяется на bin, sbin, lib согласно такой же логике, что и в директории root). Кроме того, /usr/share/ содержат данные с независимой архитектурой. Каталог / usr / local / предназначен для использования администратором для установки приложений вручную без перезаписи файлов, обрабатываемых системой пакетирования.(dpkg).
  • /var/: переменные данные, обрабатываемые демоном. Это включает в себя файлы журналов, очереди, буферы и кеши.
  • /proc/ и /sys/ являются характерными для ядра Linux (и не являются частью FHS). Они используются ядром для экспортирования данных в пользовательское пространство.

3.3.2 Домашняя директория пользователя

Содержимое пользовательской директории не является стандартизированным, но, тем не менее, существует несколько заслуживающих внимания условностей. Одна из них заключается в том, что пользовательский домашний каталог часто обозначается тильдой (“~”). Это очень полезно знать, потому что интерпретаторы команд автоматически заменяют тильду верной директорией (которая находится в переменной среде HOME и чье обычное значение является /home/user/ ).

Традиционно файлы конфигурации приложения часто хранятся непосредственно в вашем домашнем каталоге, но их имена файлов обычно начинаются с точки (например, клиент электронной почты mutt хранит конфигурацию в ~/.muttrc ). Обратите внимание, что имена файлов, начинающиеся с точки, по умолчанию скрыты; команда ls перечислит их лишь, в том случае если указана опция –a , а графические файловые менеджеры должны быть явно настроены для отображения скрытых файлов.

Некоторые программы также используют несколько файлов конфигурации, организованных в одном каталоге (например, ~ / .ssh / ). Некоторые приложения (например, веб-браузер Firefox) также используют свой каталог для хранения кеша загруженных данных. Это означает, что эти каталоги могут в конечном итоге потреблять много дискового пространства.

Эти файлы конфигурации, которые хранятся прямо в вашей домашней директории, часто коллективно называющиеся dotfiles, долгое время расширяются до такой степени, что эти директории могут быть загромождены ими. К счастью, совместная работа под эгидой FreeDesktop.org привела к созданию спецификации базового каталога XDG (XDG Base Directory Specification) конвенции, целью которой является очистка этих файлов и каталогов. В этой спецификации указано, что файлы конфигурации должны храниться в ~/.config , файлы кэша в -/.cache , а файлы данных приложения в -/.local (или вих суб-директориях). Эта конвенция постепенно набирает обороты.

Графический рабочий стол чаще всего использует ярлыки для отображения содержимого каталога /Desktop/ (или любого другого слова, которое является точным переводом данного, в системах, которые не используют английский язык). Наконец, система электронной почты иногда хранит входящие письма в каталоге – /Mail/ .

Это интересно:

UNIX (Unix, Юникс) - группа переносимых, многозадачных и многопользовательских операционных систем . Первая операционная система Unix была разработана в конце 1960-х - начале 1970 годов американской исследовательской фирмой Bell Laboratories. Первоначально она была ориентирована на миниЭВМ, а затем стала применяться на ЭВМ всех классов, включая мейнфреймы и микроЭВМ. Этому способствовала адаптация Unix на 32-разрядные микропроцессоры корпорации Intel, которая была осуществлена в 1990 году. Функциональные возможности и гибкость Unix обеспечили ее использование в разнородных автоматизированных системах, а также создание десятков стандартов для производителей вычислительной техники. Операционные системы семейства Unix:

Linux - версия операционной системы Unix для вычислительных платформ, создаваемых на базе процессоров Intel;
HP-UX - версия фирмы Hewlett-Packard; постоянно развивается и отличается совместимостью с IE-64, являющимся новым стандартом 64-битной архитектуры;
SGI Irix - операционная система ПК Silicon Graphics на базе System V Release 3.2 с элементами BSD. На этой версии Unix студия Industrial Light & Magic создала фильмы «Терминатор 2», «Парк Юрского периода».
SCO Unix - версия фирмы Santa Cruz Operation для платформы Intel, не зависящей от производителей аппаратной части;
IBM AIX - реализована на основе System V Release 2 с некоторыми расширениями BSD;
DEC Unix - операционная система с поддержкой кластеров; ориентирована на совместную работу с Windows NT;
NeXTStep-4.3 BSD - ОС, реализованная на основе ядра Mach, использовалась в компьютерах NeXT; принадлежит фирме Apple Computer и служит операционной системой для компьютеров Macintosh;
Sun Solaris - операционная система для SPARC-станций на базе System V Release 4 с многочисленными дополнениями.

Операционная система Unix появилась в период развития мини-компьютеров. В 1969 году исследовательская фирма Bell Labs приступила к разработке компактной операционной системы для 18-разрядного мини-компьютера DEC PDP-7 корпорации Digital Equipment. Первоначально система была написана на ассемблере и датой рождения Unix считается 1 января 1970 года. В 1973 году ее переписали на языке Cи, разработка которого велась в Bell Labs. Тогда же состоялось официальное представление операционной системы. Ее авторы - сотрудники Bell Labs Кен Томпсон (Ken Tompson) и Деннис Ритчи (Dennis М. Ritchie) - назвали свое детище «универсальной ОС с разделением времени (time-sharing)».

В основу Unix легла иерархическая файловая система. Каждый процесс рассматривался как последовательное исполнение программного кода в рамках автономного адресного пространства, а работа с устройствами трактовалась как работа с файлами. В первой версии было реализовано ключевое понятие процесса, позднее появились системные вызовы (fork, wait, exec, exit). В 1972 году за счет введения каналов (pipes) была обеспечена конвейерная обработка данных.

К концу 1970-х годов Unix превратилась в популярную операционную систему, чему способствовали льготные условия ее распространения в университетской среде. Unix портировали на многие аппаратные платформы, начали появляться ее разновидности. С течением времени Unix стала стандартом не только для профессиональных рабочих станций, но и для крупных корпоративных систем. Надежность и гибкость настроек UNIX снискали ей популярность, особенно среди системных администраторов. Она сыграла активную роль в распространении глобальных сетей, и, прежде всего, Internet.

Благодаря политике раскрытия исходных текстов получили распространение многочисленные бесплатные диалекты Unix, работающие на платформе Intel х86 (Linux, FreeBSD, NetBSD, OpenBSD). Полный контроль над текстами сделал возможным создание систем с особыми требованиями к производительности и безопасности. Unix ассимилировала и элементы других операционных систем, в результате были выработаны программные интерфейсы POSIX, Х/Ореn.

Существуют две независимо развиваемые ветви UNIX - System V и Berkeley, на основе которых формируются диалекты Unix и Unix-подобные системы. BSD 1.0, ставшая основой некоммерческих диалектов UNIX, была выпущена в 1977 году в Калифорнийском университете в Беркли на основе исходных текстов UNIX V6. В 1982-1983 годах в Unix System Laboratories (USL) были выпущены первые коммерческие диалекты Unix - System III и System V. Версия Unix System V легла в основу большинства последующих коммерческих вариантов. В 1993 году AT&T продала права на Unix вместе с лабораторией USL компании Novell, которая на базе System V разработала диалект UNKWare, принадлежащий фирме Santa Cruz Operation под названием SCO UNIXWare. Товарный знак Unix принадлежит компании X/Open Company.

Unix получила распространение благодаря способности работать на разных аппаратных платформах - переносимости (portability), или мобильности. Проблема мобильности в UNIX была решена путем унификации архитектуры операционной системы и использования единой языковой среды. Разработанный в Bell Labs язык Си стал связующим звеном между аппаратной платформой и операционной средой.

Многие проблемы переносимости в Unix были решены за счет единого программного и пользовательского интерфейса. Решением проблемы согласования многочисленных диалектов Unix занимаются две организации: комитет IEEE по стандартам переносимых приложений (PASC, Portable Applications Standards Committee) и X/Open Company (The Open Group). Эти организации разрабатывают стандарты, дающие возможность для интеграции разнородных операционных систем, в том числе не имеющих отношения к Unix (IEEE PASC - POSIX 1003, X/Open - Common API). Так, POSIX-совместимыми системами являются Open-VMS, Windows NT, OS/2.

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

В дальнейшем, путем выделения из традиционного ядра минимально необходимого набора средств, сформировалось микроядро (microkernel). Наиболее известные реализации микроядер Unix - Amoeba, Chorus (Sun Microsystems), QNX (QNX Software Systems). Микроядро Chorus занимает 60 Кбайт, QNX - 8 Кбайт. На основе QNX разработано 30 Кбайт POSIX-совместимое микроядро Neutrino. В Университете Карнеги-Меллона в 1985 году было разработано микроядро Mach, использованное в NeXT OS (NeXT), MachTen (Mac), OS/2, AIX (для IBM RS/6000), OSF/1, Digital UNIX (для Alpha), Windows NT, BeOS.

В России операционная система Unix применяется как сетевая технология и операционная среда для разных компьютерных платформ. На основе Unix сформирована инфраструктура российской Internet. С начала 1980-х годов отечественные работы по операционной системе Unix велись в Институте атомной энергии им. И. В. Курчатова (КИАЭ) и Институте прикладной кибернетики Минавтопрома. Результатом объединения этих коллективов стало рождение операционной системы ДЕМОС (Диалоговой единой мобильной операционной системы), которая, помимо отечественных аналогов PDP-11 (СМ-4, СМ-1420), была перенесена на ЕС ЭВМ и Эльбрус. Несмотря на свою универсальность, Unix уступил рынок персональных компьютеров семейству Windows компании Microsoft. Операционная система Unix сохраняет позиции в области ответственных систем (mission-critical systems) с высокой степенью масштабируемости и отказоустойчивости.

В 1965 году Bell Telephone Laboratories (подразделение AT&T) совместно с peneral jlectric qompang и Массачусетским технологическим институтом (rIT) начали разрабатывать новую операционную систему, названную rULTIqS (rULTipleoed Information and qomputing Service). Перед участниками проекта стояла цель создания многозадачной операционной системы разделения времени, способной обеспечить работу нескольких сотен пользователей. От Bell Labs в проекте приняли участие два участника s Кен Томпсон (ten Tompson) и Дmннис Ритчи (Dennis uitchie) . vотя система rULTIqS так и не была завершена (в 1969 году Bell Labs вышла из проекта), она стала предтечей операционной системы, впоследствии получившей название Unio.

Однако Томпсон, Ритчи ряд других сотрудников продолжили работу над создание удобной системы программирования. Использую идеи и разработки, появившиеся в результате работы над rULTIqS, они создали в 1969 году небольшую операционную систему, включавшую в себя файловую систему, подсистему управления процессами и небольшой набор утилит. Система была написана на ассемблере и применялась на компьютере nDn-7. Эта операционная система получила название UNIX, созвучное rULTIqS и придуманное другим членом группы разработчиков, Брайаном Керниганом (Brian ternigan).

Хотя ранняя версия UNIX много обещала, она не смогла бы реализовать весь свой потенциал без применения в каком-либо реальном проекте. И такой проект нашелся. Когда в 1971 году патентному отделу Bell Labs понадобилась система обработки текста, в качестве операционной системы была выбрана UNIX. К тому времени она была перенесена на более мощный nDn-11, да и сама немного подрослаw 16К занимала собственно система, 8К отводилось прикладным программам, максимальный размер файла был установлен в 64К при 512К дискового пространства.

Вскоре после создания первых ассемблерных версий Томсон начал работать над компилятором для языка FxuTuAN, а в результате разработал язык B. Это был интерпретатор со всеми свойственными интерпретатору ограничениями, и Ритчи переработал его в другой язык, названный q, позволявший генерировать машинный код. В 1973 году ядро операционной системы было переписано на языке высокого уровня С, s неслыханный до mтого шаг, оказавший громадное влияние на популярность UNIX. Это означало, что теперь система UNIX может быть перенесена на другие аппаратные платформы за считанные месяцы и внесение изменений не представляло особых трудностей. Число работающих UNIX-систем в Bell Labs превысило 25, и для сопровождения UNIX была сформирована группа UNIX Sgstem proup (USp).

Исследовательские версии(AT&T Bell Labs)

В соответствии с федеральным законодательством США, AT&T не имела права коммерческого распространения UNIX и использовала ее для собственных нужд, но, начиная с 1974 года, операционная система стала передаваться университетам для образовательных целей.

Операционная система модернизировалась, каждая новая версия снабжалась соответствующей редакцией Руководства Программиста, откуда и сами версии получили название редакций (jdition). Всего с 1971 по 1989 год было выпущено 10 редакций. Ниже перечислены наиболее важные редакции.

Редакция 1 (1971)

Первая версия UNIX, написанная на ассемблере для nDn-11. Включала в себя язык B и много известных комманд и утилит, в том числе cat, chdir, chmod, cp, ed, find, mail, mkdir, mkfs, mount, mv, rm, rmdir, wc, who. В основном использовалась как инструментальное средство обработки текстов для патентного отдела Bell Labs.

Редакция 3 (1973)

В системе появилась команда сс, запускавшая компилятор языка С. Число установленных систем достигло 16.

Редакция 4 (1973)

Первая система, в которой ядро написано на языке высокого уровня С.

Редакция 6 (1975)

Первая версия UNIX, доступная за пределами Bell Labs. Система полностью переписана на языке С. С mтого времени начинается появление новых версий, разработанных не в Bell Labs и рост популярности UNIX. Эта версия системы была установлена в Калифорнийском университете в Беркли, и на ее основе вскоре была выпущена первая версия BSD (Berheleg Softkare Distributuion) UNIX.

Редакция 7 (1979)

Включала в себя командный интерпретатор Bourne Shell и компилятор С от Кернигана и Ритчи. yдро системы было переписано для переносимости на другие платформы. Лицензия на mту версию была куплена фирмой ricrosoft, которая разработала на ее базе операционную систему XjNIX.

Популярность UNIX росла, и к 1977 году число работающих систем превысило 500. В mтом же году система впервые была портирована на компьютер, отличный от nDn.

Генеалогия UNIX

Не существует некоторой eстандартнойf системы UNIX, все UNIX-подобные системы имеют характерные только для них особенности и возможности. Но за разными названиями и особенностями все же нетрудно заметить архитектуру, пользовательский интерфейс и среду программирования UNIX. Обzясняется mто достаточно просто s все mти операционные системы являются ближними или дальними родственниками. Ниже описаны наиболее яркие представители данного семейства.

System III (1982)

Не желая терять инициативу по развитию UNIX, AT&T в 1982 году обzединила несколько существующих версий ОС и создала версию под названием Sgstem III.

Данная версия была предназначена для распространения за пределами Bell Labs и AT&T, и положила начало мощной ветви UNIX, которая и сегодня жива и развивается.

System V (1983)

В 1983 году выпущена System V, а позже – еще несколько релизов (Release) к ней:

  • SVR2 (1984): InterProcess Communication (IPC) разделяемая память, семафоры
  • SVR3 (1987): Система I/O Streams, File System Switch, разделяемые библиотеки
  • SVR4 (1989): NFS, FFS, сокеты BSD. SVR4 объединила возможности несколькихизвестных версий UNIX – SunOS, BSD UNIX и предыдущих релизов System V.

Многие компоненты этой системы были поддержаны стандартами ANSI, POSIX, X/Open и SVID.

UNIX BSD (1978) (На основе 6-й редакции UNIX)

  • 1981 по заказу DAunA в BSD UNIX был встроен стек Tqn/In (в 4.2BSD)
  • 1983 активно использовала сетевые технологии и могла подключаться к сетиARPANET
  • 1986 выпущена версия 4.3BSD
  • 1993 выпущены 4.4BSD и BSD Lite (последние выпущенные версии).

OSF/1 (1988) (Open Software Foundation)

В 1988 году IBM, DEC, HP объединились с целью создания независимой от AT&T и SUN версии UNIX и создали организацию под названием OSF. Результатом деятельности этой организации стала операционная система OSF/1.

Стандарты

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

IEEE POSIX (Institute of Electrical and Electronics Engineers Portable Operating System Interface)

  • 1003.1 (1988) cтандартизация API (Application Programming Interface) OC
  • 1003.2 (1992) определение командного интерпретатора и утилит
  • 1003.1b (1993) API приложений реального времени
  • 1003.1c (1995) определений “нитей” (threads)

ANSI (American National Standards Institute)

  • Стандарт X3.159 (1989)
  • Синтаксис и семантика языка С
  • Содержимое стандартной библиотеки libc

X/Open

  • 1992 стандарт Xwindow
  • 1996 создание совместно с OSF прользовательского интерфейса CDE (Common Desktop Environment) и его сопряжение с графической оболочкой Motiff

SVID (System V Interface Definition)

Описывает внешние интерфейсы UNIX версий System V. В дополнение к SVID был выпущен SVVS (System V Verification Suite) – набор текстовых программ,позволяющий определить, соответствует ли система стандарту SVID и достойна ли она носить гордое имя System V.

Известные версии UNIX

  • IBM AIX на базе SVR2 со многими чертами SVR4, BSD, OSF/1
  • HP-UX версия фирмы HP
  • IRIX версия фирмы Silicon Graphics, похожа на SVR4
  • Digital UNIX версия фирмы DEC на основе OSF/1
  • SCO UNIX (1988) одна из первых UNIX систем для PC разработанная на основе SVR3.2
  • Solaris версия UNIX SVR4 компании Sun Microsystems

Операционная система UNIX

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

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

Код системы написан на языке высокого уровня СИ, что сделало ее простой для понимания, изменений и переноса на другие аппаратные платформы.

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

UNIX располагает простым, но мощным набором стандартных пользовательских интерфейсов.

Унифицированный интерфейс файловой системы UNIX реализует доступ не только к данным, хранящимся на дисках, но и к терминалам, принтерам, магнитным лентам, компакт-дискам, сети и даже к памяти.

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

В общем виде операционная система UNIX может быть представлена двухуровневой моделью, как это изображено на рис. 8.1
.

В центре находится ядро системы (kernel) . Ядро непосредственно взаимодействует с аппаратной частью компьютера, изолируя прикладные программы от особенностей ее архитектуры. Ядро включает в себя программы, реализующие набор услуг, предоставляемых прикладным программам. К услугам ядра относятся операции ввода/вывода, создания и управления процессами, синхронизация процессов и т.д. Следующий уровень модели - системные услуги, обеспечивающие пользовательский интерфейс ОС UNIX. Схема взаимодействия с ядром и приложений, и системных задач одинакова.

Функции операционной системы UNIX

Операционная система UNIX взаимодействует с аппаратными и программными ресурсами компьютера, выполняя следующие функции :

    управление оборудованием;

    управление ресурсами;

    мониторинг системы;

Управление оборудованием

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

Управление ресурсами

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

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

Поддержка интерфейсов пользователя

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

Современные версии операционной системы UNIX поддерживают несколько типов интерфейсов : командную строку, меню и графический пользовательский интерфейс.

Командная строка обычно удобна для пользователей, знакомых с функциями и командами системы. При работе с таким типом интерфейса пользователь на «приглашение» (по умолчанию для пользователя это знак доллара) вводит каждую команду с клавиатуры. Этот интерфейс не обеспечивает «обзора» системы, однако позволяет выполнить любую команду системы. Программы, обеспечивающие такой интерфейс, называются командными оболочками (shell). Командных оболочек существует очень много: Bourne shell (sh), Bourne Again Shell (bash), Korn shell (ksh), C shell (csh), Debian Almquist shell (dash), Zsh и т.д. Наиболее распространенной является bash.

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

Графический пользовательский интерфейс ориентирован как на новичков, так и на квалифицированных пользователей. Он обеспечивает несколько путей взаимодействия с компьютером: обзор объектов системы, изображаемых пиктограммами, выполнение команд путем выбора графического изображения (пиктограммы) на экране дисплея с помощью «мыши» или устройства tracking ball. ОС UNIX обеспечивает X.desktop как графический пользовательский интерфейс для работы со специальными X-терминалами или систему X Window для работы с обычными графическими терминалами.

Обеспечение удаленного доступа в компьютерной сети

ОС UNIX обеспечивает доступ пользователей к ресурсам других компьютеров, работающих в вычислительной сети. В составе операционной системы имеется набор сетевых приложений, позволяющих устанавливать связь с удаленным компьютером, регистрироваться в удаленной системе, передавать данные между компьютерами сети, пользоваться электронной почтой. UNIX поддерживает сетевую файловую систему NFS (Network File System), позволяющую пользоваться командами операционной системы для доступа к файловой системе удаленного компьютера.

Компоненты операционной системы UNIX

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

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

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

Как было отмечено выше, в составе ОС UNIX обычно используется несколько оболочек.

Оболочки с ограничениями (restricted shell - rsh и ksh - подмножества Bourne shell и Korn shell) разработаны для пользователей, которым необходимо ограничить доступ к системе.

Ядро . Ядро системы представляет собой сердцевину операционной системы, которая обеспечивает базовые функции: создает процессы и управляет ими, распределяет память и обеспечивает доступ к файлам и периферийным устройствам.

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

Ядро состоит из трех основных подсистем :

    1) подсистема управления процессами и памятью;

    2) файловая подсистема;

    3) подсистема ввода/вывода.

Выполняет следующие функции :

    создание и удаление процессов;

    распределение системных ресурсов между процессами;

    синхронизацию процессов;

    взаимодействие процессов.

Специальная функция ядра, выполняемая планировщиком процессов (scheduler ), разрешает конфликты между процессами в конкурентной борьбе за системные ресурсы.

Обеспечивает распределение памяти между процессами. Если для всех процессов недостаточно памяти, ядро перемещает части процесса или несколько процессов (чаще пассивных, ожидающих каких-либо событий в системе) в специальную область диска (область «подкачки»), освобождая ресурсы для выполняющихся (активных) процессов.

Файловая подсистема обеспечивает унифицированный интерфейс доступа к данным, расположенным на дисковых накопителях, и к периферийным устройствам. Она выполняет операции размещения и удаления файлов, выполняет операции записи/чтения данных файла, а также контролирует права доступа к файлу.

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

Доступ к системе UNIX

Чтобы установить контакт с системой UNIX, вам необходимо иметь :

    терминал;

Получение регистрационного имени

Регистрационное имя - это имя, с помощью которого система UNIX проверяет, являетесь ли вы полномочным пользователем системы, во время запроса доступа к ней.

Регистрационное имя вы должны вводить каждый раз, когда хотите войти в систему.

Существует несколько правил выбора регистрационного имени. Обычно длина имени составляет от 3 до 8 символов. Оно может состоять из больших или маленьких букв, цифр, символа подчеркивания, но не может начинаться с цифры.

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

Связь с системой UNIX

Если ОС UNIX установлена на персональном компьютере, вы можете зарегистрироваться непосредственно на нем через текстовую виртуальную консоль. Но возможны и другие варианты доступа.

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

Для осуществления связи с системой необходимо включить терминал.

Если он напрямую связан с компьютером, то в верхнем левом углу немедленно появится подсказка :

Если в качестве терминала используется персональный компьютер, настроенный на работу в сети с помощью семейства протоколов TCP/IP, необходимо установить связь с компьютером, на котором установлена ОС UNIX. Это можно осуществлять несколькими способами, например с помощью сетевого приложения telnet, которое имеется в операционных системах Windows или с помощью средств доступа к Internet. Обратите внимание, что - это незащищенный протокол, который в настоящее время уже практически не применяется. Современной альтернативой является Secure Shell (SSH).

Пример.

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

Требуемые исходные данные и действия:

    для установления связи с ОС UNIX необходимо знать сетевое имя удаленного компьютера или его IP-адрес (например, 192.168.2.19);

    найти в персональном компьютере приложение telnet и запустить его на исполнение;

    в открывшемся окне приложения выбрать пункт меню Подключение;

    ввести IP-адрес удаленной UNIX-системы (например, 192.168.2.19);

    установить по желанию характеристики терминала.

Процедура регистрации

Когда появится подсказка login: , введите регистрационное имя и нажмите клавишу . Например, если ваше регистрационное имя all30123 , то строка регистрации будет выглядеть следующим образом:

    login: all30123

Если вы сделаете ошибку при вводе вашего регистрационного имени, то можете исправить ее с помощью символа @ или клавиши .

Помните, что важен регистр вводимых символов. Имена all30123 и ALL30123 принадлежат двум разным пользователям.

Теперь система выдает вам подсказку для ввода пароля. Введите пароль и нажмите клавишу . Если при вводе вы сделаете ошибку, то можете исправить ее с помощью клавиши или символа @. Система UNIX не отображает ваш пароль на экране в целях безопасности.

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

Когда вы войдете в систему, то экран терминала будет выглядеть следующим образом:

    login: all30123

Если вы сделаете ошибку при входе в систему, UNIX выведет сообщение:

    login incorrect

Затем предоставит вам второй шанс войти в систему, выдав подсказку login:. Экран будет выглядеть следующим образом:

    login: all30123

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

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

Процедура входа в систему:

    Вы устанавливаете контакт; система UNIX отображает подсказку login:. Введите ваше регистрационное имя и нажмите клавишу .

    Система UNIX выводит подсказку password:. Введите ваш временный пароль и нажмите клавишу .

    Система сообщит, что ваш временный пароль больше не действителен, и предложит выбрать новый пароль.

    Система предложит ввести ваш старый пароль. Введите временный пароль.

    Система предложит ввести ваш новый пароль. Введите выбранный вами пароль.

Пароль должен соответствовать следующим требованиям :

    каждый пароль должен состоять, по крайней мере, из 6 символов;

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

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

    новый пароль должен отличаться от старого, по крайней мере, на три символа.

Примеры допустимых паролей:

Для проверки система просит вас заново ввести пароль. Введите пароль снова.

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

Следующий экран отображает описанную процедуру:

    login: dko30123

    password:

    Your password has expired

    Choose a new one

    Old password:

    New password:

    Re-enter new password:

Идентификация пользователя

Когда системный администратор регистрирует пользователя в системе, с регистрационным именем связываются два компонента идентификации: идентификатор пользователя (user ID - UID) и идентификатор группы , к которой он относится (group ID - GID).

Имя пользователя связывается с уникальным числом. Система использует его как инструмент в различных механизмах защиты в ОС UNIX, например, при защите файлов или при выполнении привилегированных команд.

В любой ОС UNIX имеется один специальный суперпользователь с идентификатором UID = 0, который обычно связан с именем root. Это означает, что пользователь имеет все системные привилегии.

Имя группы также связано с числом, которое обычно относится к группе пользователей, объединенных общими задачами, например сотрудники отдела, студенты одного потока и т.д. Это число также используется механизмами защиты в системе. Если пользователь должен работать с данными других групп, этот идентификатор связывается с именами других групп.

Вся регистрационная информация о пользователях системы хранится в файле /etc/passwd.

В современных версиях ОС UNIX зашифрованные пароли и относящаяся к ним системная информация хранятся в файле /etc/shadow, структура и назначение полей которого представлены на рис. 8.2
.

Записи данных о каждой установленной группе содержатся в файле /etc/group, структура и назначение полей которого представлены на рис. 8.3 .

Структура и назначение полей файла /etc/passwd представлены на рис. 8.4
.

Соглашения по вводу

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

Таблица 8.1.
Соглашения о вводе

Ключ

Функция

Подсказка системной команды (предлагает вам ввести вашу команду)

или <^h>

Стереть символ

Остановить выполнение программы или команды

Удалить текущую командную строку

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

Означает конец строки ввода и помещает курсор на новую строку

Остановить ввод в систему или выйти из системы (завершить работу)

Возвратиться на один символ (для терминалов, у которых нет клавиши )

Временно остановить вывод на экран

Продолжить вывод на экран информации, которая была остановлена при помощи <^s>

Примечание. В табл. 2.1 символ ^ означает управляющий символ . То есть вы должны в этом случае нажать две клавиши одновременно: клавишу управляющего символа и указанную букву.

Подсказка команды

Стандартным приглашением командной строки для пользователя в системе UNIX является знак доллара $. Для пользователя root - #. Когда приглашение появляется на экране вашего терминала, то это означает, что система UNIX ожидает инструкции от вас. Соответствующим ответом на подсказку с вашей стороны является выдача команды с последующим нажатием клавиши .

Исправление ошибок ввода

Существует несколько способов исправления ошибок ввода. Символ @ стирает текущую строку, а клавиши и <^h> стирают последний введенный символ. Эти клавиши и знаки являются значениями по умолчанию. Функции, которые они выполняют, могут быть переназначены другим клавишам.

Остановка выполнения команд

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

Появление на экране подсказки означает, что система UNIX распознала вас как полномочного пользователя и ждет от вас ввода команды.

В общем виде командная строка имеет следующую структуру:

    имя [опции] [аргументы]

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

В дальнейшем изложении функций команд предполагается:

Опции (параметры) :

    являются признаком модификации команды и, как правило, состоят из одного символа; большие и маленькие буквы означают разные модификации;

    как правило, начинаются с символа «-» («минус»), который не отделяется пробелом от остальных символов;

    могут быть скомбинированы любым образом, при этом знак «минус» можно использовать только один раз.

Аргументы указывают объекты, которые должны обрабатываться командой, например:

    имя файла;

    номер процесса;

Если вы знаете, что должна сделать вызываемая программа, но не уверены в правильном использовании синтаксиса, можно в командной строке после имени команды указать опцию --help :

    $ cal --help

Для того чтобы иметь возможность получения подробной информации, в ОС UNIX имеется встроенное руководство (on-line), доступ к которому обеспечивают команды man и apropos .

В простейшем случае для получения информации о любой команде необходимо указать ее имя в качестве аргумента команды man :

    man имя_команды

apropos выводит список команд в соответствии с ключевым словом (шаблоном), указанным в качестве аргумента команды:

    apropos шаблон

Примеры.

Если запустить команду date и нажать клавишу , система UNIX обращается к программе, называемой date , выполнит ее и выведет результат на экране:

    $ date

    Tues Sep 18 14:49:07 2000

Команда date выводит дату и время.

Если запустить команду who и нажать клавишу , то экран будет выглядеть следующим образом:

    $ who

    dko30024

    Oct18 8:30

    dko30001

    Oct18 8:34

    dko30020

    Oct18 8:32

    Oct18 8:00

who выводит список регистрационных имен пользователей, работающих в настоящее время в вашей системе. Обозначение tty (вторая колонка) делает ссылку на специальные файлы, которые соответствуют каждому пользовательскому терминалу. В третьей и четвертой колонках указываются дата и время регистрации каждого пользователя. .

Это означает, что вы успешно завершили работу с системой и она готова зарегистрировать нового пользователя.

Если вы регистрировались с удаленного терминала, произойдет разрыв связи, о чем вас уведомит, например, приложение telnet.

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

Основные выводы

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

    В общем виде операционная система UNIX может быть представлена двухуровневой моделью. В центре находится ядро системы (kernel). Ядро непосредственно взаимодействует с аппаратной частью компьютера, изолируя прикладные программы от особенностей ее архитектуры. Ядро включает в себя программы, реализующие набор услуг, предоставляемых прикладным программам. К услугам ядра относятся операции ввода/вывода, создания и управления процессами, синхронизация процессов и т.д. Следующий уровень модели - системные услуги, обеспечивающие пользовательский интерфейс ОС UNIX. Схема взаимодействия с ядром и приложений, и системных задач одинакова.

    Операционная система UNIX взаимодействует с аппаратными и программными ресурсами компьютера, выполняя следующие функции:

    • управление оборудованием;

      управление ресурсами;

      поддержка интерфейсов пользователя;

      выполнение ввода и вывода информации;

      мониторинг системы;

      обеспечение удаленного доступа в компьютерной сети.

    UNIX-система содержит три главных компонента: систему команд, оболочки и ядро.

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

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

    Ядро системы представляет собой сердцевину операционной системы, которая обеспечивает базовые функции: создает процессы и управляет ими, распределяет память и обеспечивает доступ к файлам и периферийным устройствам.

    Ядро состоит из трех основных подсистем:

    • подсистема управления процессами и памятью;

      файловая подсистема;

      подсистема ввода/вывода.

    Чтобы установить контакт с системой UNIX, вам необходимо иметь:

    • терминал;

      регистрационное имя, которое идентифицирует вас как полномочного пользователя;

      пароль, который проверяет вас на идентичность;

      инструкции для диалога и доступа к системе UNIX, если ваш терминал напрямую не связан с компьютером.

Контрольные вопросы

    Для решения каких задач предназначен класс операционных систем UNIX?

    Какие возможности должна предоставлять операционная система класса UNIX?

    Каковы задачи ядра ОС UNIX?

    Каковы функции ядра ОС UNIX?

    Каково назначение компонента операционной системы «Система команд»?

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

    Каким образом выполняется идентификация пользователя в ОС UNIX?