Введение в Linux

Контест: Linuxcourse

О системе

Введение

Linux - ядро ОС, разработка начата финским студентом Линусом Торвальдсом.

  • Ядро - наиболее низкий уровень абстракции для доступа приложений к ресурсам системы, необходимым для их работы.

GNU/Linux - операционные системы, основанные на ядре Linux и системных библиотеках GNU (а часто и другом ПО)

_images/gnulinux.png

Системы GNU/Linux распространяются на условиях лицензии особого рода, известной под названием GNU-лицензии (GNU General Public License, или GPL). Она устанавливает несколько условий на распространение и изменение свободного программного обеспечения. GNU-лицензия делает программное обеспечение свободно распространяемым, но не передаёт его в пользование обществу, а защищает права автора.

Согласно GNU программа свободна, если у ее пользователей есть четыре важнейших свободы:

  • Свобода выполнять программу как вам угодно в любых целях (свобода 0).
  • Свобода изучать работу программы и модифицировать программу, чтобы она выполняла ваши вычисления, как вы пожелаете (свобода 1). Это предполагает доступ к исходному тексту.
  • Свобода передавать копии, чтобы помочь другим (свобода 2).
  • Свобода передавать копии своих измененных версий другим (свобода 3). Этим вы можете дать всему сообществу возможность получать выгоду от ваших изменений. Это предполагает доступ к исходному тексту.

Ядро

Ядро Linux - очень большая программа, представляющая следующие функции:

Хранение данных:

  • RAM - Чтение и запись данных в оперативную память.
  • Постоянное хранение - Чтение и запись данных на постоянные запоминающие устройства.
  • Виртуальная файловая система.

Доступ к сетям:

  • Работа с физическими сетями (Ethernet, Wireless, LTE, коммутаторы, Bluetooth.
  • Виртуальные сети.

Планирование задач:

  • Совместное использование процессорного времени программами.
  • Балансировка нагрузки процессора и приоритеты.

Поддержка внешних устройств:

  • Съемные USB носители.
  • Веб-камеры.
  • Мыши и клавиатуры.

Безопасность:

  • Права доступа к файлам для пользователей и групп;
  • Разрешение доступа к ресурсам системы;

Спор об именовании

Если вы называете нашу операционную систему “Linux”, это передаёт неверное представление о её истоках, истории и назначении. Если вы называете её “GNU/Linux”, это передаёт (хоть и не во всех подробностях) правильное представление.

- Gnu.org

Операционные системы, основанные на ядре Linux и системных библиотеках GNU , часто называют просто Linux. Однако проект GNU настаивает на названии GNU/Linux. Особо сильно на это реагриуерт Ричард Мэттью Столлман(RMS), основатель движения свободного ПО и проекта GNU.

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

RMS:

_images/rms.jpg

Дистрибутивы

Дистрибутив GNU/Linux — общее определение операционных систем, использующих ядро Linux, представляющий собой настроенную систему с предустановленным комплектом приложений. У каждого дистрибутива свои правила и свое сообщество.

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

Современные диструбутивы берут начало от трех старейших: Slackware, Debian, Red Hat.

_images/distros.jpg

GNU/Linux Distributions Timeline

Применение

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

  • Лидер на рынке серверных ОС.
  • Лидер на рынке мобильных ОС (Ядро ОС Android - Linux).
  • Лидер на рынке встраеваемых систем.
  • Главный элемент кластеров и моделей распределенных вычислений.
  • 100% суперкомпьютеров из ТОП-500 мира работают на Linux.
  • Востребован наукоемкими специальностями благодаря высокой скорости вычислений.
_images/lintop.png

Работа c cистемой

Графический интерфейс

Внешний вид cистемы очень близок к популярным Windows или Mac OS, поэтому новым пользователям не придется долго привыкать к системе. С другой стороны, под Linux существует множество графических оболочек на любой вкус, цвет и характеристики компьютера. Любую из них можно настроить до мелочей.

Примеры:

Консоль

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

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

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

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

[название команды] <опции> [аргументы]
_images/cowsay.png
Название 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). Пример использования смотрите в разделе Список часто используемых команд.