Модуль 1 • Урок 1

Структура ОС Linux

Фундаментальное погружение в операционную систему, на которой работает современный интернет. От философии Open Source до управления пакетами.

1. Введение: Философия Linux

Представьте, что вы покупаете автомобиль. В большинстве случаев (Windows, macOS) вы получаете "черный ящик": он едет, но вы не можете заглянуть под капот, не можете его модифицировать или починить самостоятельно. Linux — это как если бы вам дали не только автомобиль, но и полный набор чертежей, инструментов и доступ в мировое сообщество инженеров, готовых помочь вам его улучшить.

В основе Linux лежат три кита:

  • Open Source (Открытый исходный код): Код системы доступен каждому. Это гарантирует прозрачность, безопасность (тысячи экспертов ищут уязвимости) и бесконечные возможности для кастомизации.
  • Стабильность: Linux-системы славятся своей надежностью. Серверы могут работать годами без перезагрузки. Именно поэтому 96.3% из топ-1 миллиона веб-серверов в мире работают на Linux.
  • Контроль: Вы — хозяин своей системы. Нет навязанных обновлений, нет скрытых процессов. Вы можете настроить абсолютно все, от внешнего вида до поведения ядра.

Профессиональный совет: Не путайте Linux и GNU/Linux. Linux — это только ядро (двигатель). GNU — это набор базовых инструментов (коробка передач, руль, колеса). Вместе они образуют полноценную ОС, которую мы и называем GNU/Linux.

2. Установка в VirtualBox: Ваша личная песочница

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

  1. Скачайте и установите Oracle VM VirtualBox.
  2. Скачайте образ Ubuntu 22.04 LTS. LTS означает Long-Term Support — версия с долгосрочной поддержкой, самая стабильная.
  3. Создайте виртуальную машину:
    • Имя: `Cortex-Ubuntu`
    • Память (RAM): Минимум 2048 MB, рекомендуется 4096 MB.
    • Жесткий диск: Создать новый, VDI, динамический, размер 25-30 GB.
  4. Настройте машину (важно!): В настройках машины перейдите в "Система" -> "Процессор" и выделите 2 ядра CPU. В разделе "Дисплей" увеличьте видеопамять до 128 MB.
  5. Запустите и установите Ubuntu: При первом запуске укажите скачанный `.iso` файл. В процессе установки выберите язык, минимальную установку (minimal installation) и опцию "Стереть диск и установить Ubuntu". Это безопасно для вашего основного компьютера.

После установки и перезагрузки у вас будет полноценный рабочий стол Ubuntu. Первым делом откройте терминал (Ctrl+Alt+T) и обновите систему:

sudo apt update && sudo apt upgrade -y

Это хорошая привычка, которая гарантирует, что у вас установлены все последние обновления безопасности.

3. Анатомия Системы: Ядро и Пользовательское пространство

Система Linux четко разделена на два мира: Kernel Space (Пространство Ядра) и User Space (Пользовательское Пространство). Ядро имеет полный доступ ко всему оборудованию. Все ваши программы живут в User Space и могут общаться с "железом" только через специальные запросы к ядру — системные вызовы (syscalls). Это фундаментальный принцип защиты.

+-------------------------------------------------+
|             User Space (Ваши программы)         |
| Браузер  | Текстовый редактор |     Терминал    |
|=================================================| <- System Calls
|             Kernel Space (Полный контроль)      |
|                                                 |
|  Процессы | Память | Файловая система | Сеть     |
|-------------------------------------------------|
|                  Оборудование                   |
+-------------------------------------------------+
                

4. Терминал: Основы Магии

Терминал (или командная строка) — это не пережиток прошлого, а самый эффективный способ взаимодействия с системой. Каждая команда имеет структуру: `команда [опции] [аргументы]`.

4.1. Навигация и Осмотр

pwd - показать текущую директорию. ls -la - показать все файлы в подробном виде. cd [путь] - сменить директорию.

Лайфхаки: cd ~ вернет вас в домашнюю директорию из любого места. cd - вернет в предыдущую директорию. Используйте клавишу Tab для автодополнения команд и путей — это сэкономит вам уйму времени!

4.2. Создание и Уничтожение

mkdir [имя] - создать папку. touch [имя] - создать пустой файл. cp [что] [куда] - скопировать. mv [что] [куда] - переместить или переименовать.

Команда удаления rm требует особого уважения.

rm file.txt # Удалить файл rmdir empty_dir # Удалить ПУСТУЮ папку rm -r dir_with_files # Рекурсивно удалить папку со всем содержимым

ВНИМАНИЕ: В Linux нет "корзины" для терминала. Команда rm удаляет файлы навсегда. Команда rm -rf /, выполненная от имени суперпользователя, уничтожит вашу систему за секунды. Думайте дважды, нажимайте Enter один раз.

4.3. Чтение Файлов

cat [файл] - выводит все содержимое файла в терминал (хорошо для маленьких файлов). less [файл] - открывает файл в интерактивном режиме просмотра (идеально для больших логов, выход - клавиша `q`). head -n 10 [файл] - показать первые 10 строк. tail -n 10 [файл] - показать последние 10 строк.

4.4. Суперсила: Конвейеры и Перенаправление

Это то, что делает терминал невероятно мощным. Вы можете "склеивать" команды.

  • Конвейер `|` (pipe): Передает вывод одной команды на вход другой.
  • Перенаправление `>`: Перенаправляет вывод в файл (перезаписывая его).
  • Перенаправление `>>`: Добавляет вывод в конец файла.
# Найти все файлы в системе и отфильтровать только те, что содержат "ssh" find / | grep "ssh" # Сохранить список процессов в файл ps aux > running_processes.txt # Добавить текущую дату в конец лог-файла date >> my_app.log

5. Файловая Система (FHS)

Все папки в Linux имеют свое четкое предназначение. Понимание этой структуры — ключ к быстрому поиску нужных файлов.

ДиректорияНазначение
/Корень. Начало всего.
/bin & /sbinКлючевые системные команды.
/etcКонфигурации. Все настройки системы и программ лежат здесь.
/home/usernameВаш дом. Все ваши личные файлы.
/varИзменяемые данные. Самое важное здесь - /var/log, где хранятся все системные журналы (логи).
/tmpВременные файлы, которые удаляются при перезагрузке.
/devУстройства. Ваш диск (/dev/sda), мышь, все представлено файлами здесь.
/procВиртуальная файловая система с информацией о запущенных процессах.

6. Пользователи и Права Доступа: Кто что может?

Linux — многопользовательская система. У каждого файла есть владелец, группа и набор прав для трех категорий: владелец (user), группа (group) и остальные (others).

Запустите ls -l и вы увидите что-то вроде -rwxr-xr--. Разберем это:

 d  rwx  r-x  r--
-  ---  ---  ---
|   |    |    |
|   |    |    +-- Права для "остальных" (чтение)
|   |    +------- Права для "группы" (чтение, исполнение)
|   +------------ Права для "владельца" (чтение, запись, исполнение)
+---------------- Тип файла (d - директория, - - файл)
                

Права бывают трех видов: r (read - чтение), w (write - запись), x (execute - исполнение).

Для управления правами используется команда chmod, а для смены владельца — chown. Суперпользователь root может делать с системой абсолютно все. Чтобы выполнить команду от его имени, используется sudo (SuperUser Do).

# Сделать скрипт исполняемым для владельца chmod u+x my_script.sh # Дать права на чтение и запись всем (777 - плохая практика!) chmod 777 sensitive_data.txt # Сменить владельца файла sudo chown new_user report.docx

7. Установка Программ: Менеджер пакетов APT

В Linux программы устанавливаются не скачиванием `.exe` файлов, а через централизованные хранилища — репозитории. Менеджер пакетов (в Ubuntu это APT) сам скачивает программу и все ее зависимости, устанавливает и следит за обновлениями.

Это невероятно удобно и безопасно! Вы всегда получаете проверенное ПО из надежного источника.

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

  • sudo apt update — обновить список доступных пакетов.
  • sudo apt upgrade — обновить все установленные пакеты до последних версий.
  • sudo apt install [имя_пакета] — установить программу (например, sudo apt install neofetch).
  • sudo apt remove [имя_пакета] — удалить программу.
  • apt search [ключевое_слово] — найти пакет в репозиториях.

8. Финальное Практическое Задание

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

  1. Создайте в своей домашней директории папку final_project.
  2. Внутри нее создайте структуру: папки src (для исходников), docs (для документации), data (для данных).
  3. Перейдите в папку docs и создайте файл readme.md.
  4. Запишите в этот файл текущую дату и время, используя перенаправление вывода (команда date).
  5. Перейдите в папку src и создайте файл main.sh.
  6. Сделайте файл main.sh исполняемым только для вас (владельца).
  7. Установите из репозитория утилиту tree (sudo apt install tree).
  8. Вернитесь в папку final_project и выполните команду tree, чтобы увидеть красивое дерево вашего проекта. Сохраните результат в файл project_structure.txt в папке docs.

Если вы справились, вы не просто "познакомились" с Linux. Вы научились им пользоваться. Это прочный фундамент, на котором мы будем строить все дальнейшие знания.