Основы работы в операционной системе unix. Основы Linux. Командная строка 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
Автор: Князев Алексей.

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

Прежде чем вы сможете освоить , вы должны свободно ориентироваться в основных понятиях системы 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/ .

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

Основы Linux

Linux вдохновлена операционной системой Unix, которая появилась в 1969 году и до сих пор используется и развивается. Многое из внутреннего устройства UNIX существует и в Linux, что является ключем к пониманию основы системы.

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

Каталоги и файловая система

Файловые системы в Linux и Unix организованы по принципу иерархической, древовидной структуры. Верхний уровень файловой системы - / или корневой каталог . Это означает что все другие файлы и каталоги (включая также другие диски и разделы) находятся внутри корневого каталога. В UNIX и Linux файлом считается все - включая жесткие диски, их разделы и съемные носители.

Например, /home/jebediah/cheeses.odt показывает полный путь к файлу cheeses.odt . Файл находится в каталоге jebediah , которая находится в каталоге home , который в свою очередь, находится в корневом каталоге (/).

Внутри корневого каталога (/) существует ряд важных системных каталогов, которые присутствуют в большинстве дистрибутивов Linux. Ниже следует список общих каталогов, которые находятся непосредственно в корневом каталоге (/):

Права доступа

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

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

    владелец

    относится к пользователю, который является владельцем файла

    группа

    относится к группе, связанной с файлом

    прочие

    относится ко всем остальным пользователям системы

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

    чтение

    файлы могут быть отображены и открыты для чтения

    содержимое каталогов доступно для просмотра

    запись

    файлы могут быть изменены или удалены

    содержимое калогов доступно для изменений

    выполнение

    исполняемые файлы могут быть запущены как программы

    каталоги могут быть открыты

To view and edit the permissions on files and directories, open the Applications → Accessories → Home Folder and right-click on a file or directory. Then select Properties . The permissions exist under the Permissions tab and allow for the editing of all permission levels, if you are the owner of the file.

To learn more about file permissions in Linux, read the file permissions page in the Ubuntu Wiki.

Терминалы

Working at the command line is not as daunting a task as you would think. There is no special knowledge needed to know how to use the command line. It is a program like everything else. Most things in Linux can be done using the command line, although there are graphical tools for most programs. Sometimes they are just not enough. This is where the command line comes in handy.

The Terminal is located in Applications → Terminal . The terminal is often called the command prompt or the shell. In days gone by, this was the way the user interacted with the computer. However, Linux users have found that the use of the shell can be quicker than a graphical method and still holds some merit today. Here you will learn how to use the terminal.

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

Основные команды

Просмотр содержимого каталогов: ls

Команда ls показывает список файлов разными цветами с полным форматированием текста

Создание каталогов: mkdir (имя каталога)

Команда mkdir создает новый каталог.

Перейти в каталог: cd (/адрес/каталога)

Команда cd позволяет перейти в любой указанный вами каталог.

Копирование файла или каталога: cp (что - имя файла или каталога) (куда - имя каталога или файла)

Команда cp копирует любой выбранный файл. Команда cp -r копирует любой выбранный каталог со всем содержимым.

Удаление файлов или каталогов: rm (имя файла или папки)

Команда rm удаляет любой выбранный файл. Команда rm -rf удаляет любой выбранный каталог со всем содержимым.

Переименовать файл или каталог: mv (имя файла или каталога)

Команда mv переименовывает или перемещает выбранный файл или каталог.

Поиск каталогов и файлов: locate (имя каталога или файла)

Команда locate позволяет найти заданный файл на вашем компьютере. Для ускорения работы используется индексация файлов. Для того чтобы обновить индекс, введите команду updatedb . Она запускается автоматически каждый день, если компьютер включен. Для запуска этой команды требуются права супер пользователя (см. «Пользователь root и командна sudo»).

Вы также можете использовать маски, чтобы указать более одного файла, такие как «*» (совпадение со всеми символами) или «?» (совпадение с одним символом).

For a more thorough introduction to the Linux command line, please read the command line introduction on the Ubuntu wiki.

Редактирование текста

All of the configurations and settings in Linux are saved in text files. Even though you most often can edit configurations through the graphical interface, you may occasionally have to edit them by hand. Mousepad is the default Xubuntu text editor, which you can launch by clicking Applications → Accessories → Mousepad on the desktop menu system.

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

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

Nano -w

For more information about how to use nano , refer to the guide on the wiki .

There are also quite a few other terminal-based editors available in Ubuntu. Popular ones include VIM and Emacs (the pros and cons of each are cause for much friendly debate within the Linux community). These are often more complex to use than nano , but are also more powerful.

Пользователь root и командна sudo

The root user in GNU/Linux is the user which has administrative access to your system. Normal users do not have this access for security reasons. However, Ubuntu does not enable the root user. Instead, administrative access is given to individual users, who may use the "sudo" application to perform administrative tasks. The first user account you created on your system during installation will, by default, have access to sudo. You can restrict and enable sudo access to users with the Users and Groups application (see «Управление пользователями и группами» for more information).

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

Чтобы использовать sudo в командной строке, просто наберите «sudo» перед командой, которую необходимо выполнить. После этого потребуется ввести ваш пароль.

Sudo will remember your password for 15 minutes (by default). This feature was designed to allow users to perform multiple administrative tasks without being asked for a password each time.

Be careful when doing administrative tasks - you might damage your system!

Some other tips for using sudo include:

    Чтобы использовать терминал с правами супер пользователя (root), наберите «sudo -i» в командной строке

    The entire suite of default graphical configuration tools in Ubuntu already use sudo, so they will prompt you for your password if needed.

    При запуске графических приложений вместо «sudo» используется «gksudo». Это позволяет запрашивать пароль у пользователя в небольшом графическом окне. Команда «gksudo» удобна, если вы хотите установить кнопку запуска Synaptic на вашу панель или что-то подобное.

    For more information on the sudo program and the absence of a root user in Ubuntu, read the sudo page on the Ubuntu wiki.