Введение в Linux¶
О системе¶
Введение¶
Linux - ядро ОС, разработка начата финским студентом Линусом Торвальдсом.
- Ядро - наиболее низкий уровень абстракции для доступа приложений к ресурсам системы, необходимым для их работы.
GNU/Linux - операционные системы, основанные на ядре Linux и системных библиотеках GNU (а часто и другом ПО)
Системы GNU/Linux распространяются на условиях лицензии особого рода, известной под названием GNU-лицензии (GNU General Public License, или GPL). Она устанавливает несколько условий на распространение и изменение свободного программного обеспечения. GNU-лицензия делает программное обеспечение свободно распространяемым, но не передаёт его в пользование обществу, а защищает права автора.
Согласно GNU программа свободна, если у ее пользователей есть четыре важнейших свободы:
- Свобода выполнять программу как вам угодно в любых целях (свобода 0).
- Свобода изучать работу программы и модифицировать программу, чтобы она выполняла ваши вычисления, как вы пожелаете (свобода 1). Это предполагает доступ к исходному тексту.
- Свобода передавать копии, чтобы помочь другим (свобода 2).
- Свобода передавать копии своих измененных версий другим (свобода 3). Этим вы можете дать всему сообществу возможность получать выгоду от ваших изменений. Это предполагает доступ к исходному тексту.
Ядро¶
Ядро Linux - очень большая программа, представляющая следующие функции:
Хранение данных:
- RAM - Чтение и запись данных в оперативную память.
- Постоянное хранение - Чтение и запись данных на постоянные запоминающие устройства.
- Виртуальная файловая система.
Доступ к сетям:
- Работа с физическими сетями (Ethernet, Wireless, LTE, коммутаторы, Bluetooth.
- Виртуальные сети.
Планирование задач:
- Совместное использование процессорного времени программами.
- Балансировка нагрузки процессора и приоритеты.
Поддержка внешних устройств:
- Съемные USB носители.
- Веб-камеры.
- Мыши и клавиатуры.
Безопасность:
- Права доступа к файлам для пользователей и групп;
- Разрешение доступа к ресурсам системы;
Спор об именовании¶
- Gnu.org
Операционные системы, основанные на ядре Linux и системных библиотеках GNU , часто называют просто Linux. Однако проект GNU настаивает на названии GNU/Linux. Особо сильно на это реагриуерт Ричард Мэттью Столлман(RMS), основатель движения свободного ПО и проекта GNU.
Линус Торвальдс, автор ядра Linux, на настойчивые требования Ричарда Столлмана поддержать его позицию всегда реагировал слабо, заявляя, что занимается разработкой программного обеспечения, а не политикой.
RMS:
Дистрибутивы¶
Дистрибутив GNU/Linux — общее определение операционных систем, использующих ядро Linux, представляющий собой настроенную систему с предустановленным комплектом приложений. У каждого дистрибутива свои правила и свое сообщество.
В настоящее время существует более шестисот дистрибутивов GNU/Linux; более половины из них поддерживаются в актуальном состоянии, что обеспечивается регулярным выпуском обновлений разработчиками дистрибутива.
Современные диструбутивы берут начало от трех старейших: Slackware, Debian, Red Hat.
Применение¶
Благодаря возможностями трансформации и масштабирования Linux ее можно встретить во всех областях компьютерной техники.
- Лидер на рынке серверных ОС.
- Лидер на рынке мобильных ОС (Ядро ОС Android - Linux).
- Лидер на рынке встраеваемых систем.
- Главный элемент кластеров и моделей распределенных вычислений.
- 100% суперкомпьютеров из ТОП-500 мира работают на Linux.
- Востребован наукоемкими специальностями благодаря высокой скорости вычислений.
Работа c cистемой¶
Графический интерфейс¶
Внешний вид cистемы очень близок к популярным Windows или Mac OS, поэтому новым пользователям не придется долго привыкать к системе. С другой стороны, под Linux существует множество графических оболочек на любой вкус, цвет и характеристики компьютера. Любую из них можно настроить до мелочей.
Примеры:
Консоль¶
Куда более интересная часть системы. Взаимодействуя с компьютером через консоль можно сделать все то же, что и через графический интерфейс, и даже много больше.
Терминал - это устройство, при помощи которого человек взаимодействуют с компьютером. Изначально в качестве терминалов применялись электромеханические телетайпы.
В большинстве современных компьютеров работа терминала эмулируется средствами ОС, позволяя работать с текстовыми приложениями, когда графическую оболочку запустить невозможно или не нужно. При запущенной же графической оболочке возможно использовать специальные приложения — эмуляторы терминала. Современный терминал и эмуляторы сейчас обобщенно называют консолями.
Взаимодейсвтие с компьютером осуществляется посредством команд, которые имеют следующий вид:
[название команды] <опции> [аргументы]
Название | cowsay |
Опции | -e99 |
Аргумент | Hellow, world |
Некоторые команды требуют прав суперпользователя. На самом деле, большинство команд - это программы, все так же с открытым исходным кодом, который можно редактировать.
Файловая система. Права¶
Отдельно стоит упамянуть о файловой системе(ФС) и правах доступа. В отличие от Windows в GNU/Linux используется ФС ext4. Одним из основных ее отличий является поддержка прав доступа к файлам и папкам
Права бывают трех типов:
- Read(r) - чтение файлов или папок.
- Write(w) - запись в файл или папку.
- Execute(x) - запуск программ.
Правами могут обладать:
- Владелец файла или папки.
- Группа пользователей.
- Все остальные, не входящие в первые 2 группы.
Так выглядит полная информация о правах на файл в ФС ext4:
-rwx rw- r-- vladius wheel devyatka.cpp
Это значит, что права на файл devyatka.cpp распределены следующим образом:
Роль | Объект | Права | Обозначение |
---|---|---|---|
Владелец | vladius | read/write/execute | rwx |
Группа | wheel | read/write | rw- |
Остальные | Все | read | r– |
Суперпользователь имеет неограниченный доступ ко всем файлам.
Cуперпользователь¶
root - суперпользователь системы. А если более точно, то это пользователь с идентификатором 0. Имя здесь не особо важно. Хотя по умолчанию это общее имя пользователя с нулевым идентификатором пользователя для всех unix-like операционных систем. Это пользователь обладает наивысшими привилегиями в ОС.
Мандатное управление доступом¶
Мандатное управление доступом (англ. Mandatory access control, MAC) — разграничение доступа субъектов к объектам, основанное на назначении метки конфиденциальности для информации, содержащейся в объектах, и выдаче официальных разрешений (допуска) субъектам на обращение к информации такого уровня конфиденциальности. Также иногда переводится как Принудительный контроль доступа.
Для файловых систем, оно может расширять или заменять дискреционный контроль доступа и концепцию пользователей и групп.
Реализации в Linux:
- SELinux - реализация системы принудительного контроля доступа, которая может работать параллельно с классической избирательной системой контроля доступа. Разработан АНБ США, включен в состав ядра (начиная с 2.6).
- AppArmor - программный инструмент упреждающей защиты, основанный на политиках безопасности, которые определяют, к каким системным ресурсам и с какими привилегиями может получить доступ то или иное приложение.
- В сертифицированной в системах сертификации Минобороны России и ФСТЭК России операционной системе специального назначения Astra Linux Special Edition, механизм мандатного разграничения доступа реализован, как и механизм дискреционного разграничения доступа в ядре ОС и СУБД.
Cтандарт иерархии файловой системы(FHS)¶
FHS предлагает следующую иерархию подкатологов в корневом /:
/bin - основные утилиты, необходимые как в однопользовательском режиме, так и при обычной работе всем пользователям.
/boot - неизменяемые файлы, необходимые для загрузки системы.
/dev - файлы устройств.
/etc - файлы конфигурации системы на данном компьютере.
/home - домашние каталоги пользователей.
/lib - основные разделяемые библиотеки и модули ядра.
/mnt - точку монтирования для временно подключаемых файловых систем.
/root - домашний каталог пользователя root.
/opt - дополнительное программное обеспечение.
/sbin - основные системные программы для администрирования и настройки системы.
/tmp - временные файлы.
/usr - вторичная иерархия для данных пользователя. Содержит большинство пользовательских приложений и утилит, используемых в многопользовательском режиме.
- /usr/bin - дополнительные программы для всех пользователей, не являющиеся необходимыми в однопользовательском режиме.
- Факт: Изначально /usr использовался для хранения домашних директорий. Когда стало нехватать места под bin, было решено создать пользователя bin.
/var - изменяемые файлы, такие как файлы регистрации, временные почтовые файлы.
Systemd¶
Systemd — подсистема инициализации Linux — демон (программа, работающая в фоне) для запуска других демонов в Linux и управления ими в процессе работы системы. Название происходит от принятого в Unix добавления суффикса -d к демонам.
Разработана Леннартом Поттерингом взамен используемого ранее демона init. В свое время вызвала огромное количество не утихающий до сих пор споров. Сейчас исользуется по умолчанию во всех популярных диструбутивах.
Помимо простого запуска и контроля сервисов, systemd предлагает некоторые другие удобные функции, для использования которых ранее системным администраторам приходилось прибегать к помощи дополнительных программ-демонов. Среди таких функций:
- Сокет-активация служб (заменяет inetd).
- Запуск сервисов по расписанию (заменяет cron).
- Работа с аппаратным сторожевым таймером (заменяет watchdog).
- Смена корня (заменяет chroot).
- Автомонтирование томов и сетевых ресурсов (заменяет mount и fstab).
- Удобная работа с логами посредством journald (заменяет syslog)
Установка приложений¶
В отличие от Windows и Mac OS на GNU/Linux строго не рекоммендуется скачивать приложения с сайтов, даже с официальных. Все приложения представлены в виде пакетов, которые хранятся в репозиториях вашего дистрибутива.
Чтобы установить пакет, нужно воспользоваться графической утилитой или пакетным менеджером (В каждом диструбитве свой, например, dnf в Fedora или apt в Debian/Ubuntu). Пример использования смотрите в разделе Список часто используемых команд.