Введение в Linux-администрирование

TIP

Эта статья — часть серии Linux administration, посвящённой самостоятельному администрированию Linux, Self-Hosting и DevOps. Здесь мы разбираем основы, чтобы вы могли уверенно управлять своей инфраструктурой.

📌 О чём эта статья?

Если вы только начинаете путь в мир Linux, DevOps или хотите развернуть собственные сервисы (например, Nextcloud, Home Assistant, Vaultwarden), вам нужно понимать, как устроен Linux и как им управлять. Эта статья — ваш первый шаг в мир системного администрирования на базе Linux.

Мы поговорим о:

  • Что такое Linux и почему он важен для Self-Hosting и DevOps
  • Основных компонентах Linux-системы
  • Работе с терминалом и командной строкой
  • Управлении пользователями, правами и процессами
  • Практических советах по началу работы

🐧 Что такое Linux?

Linux — это свободная операционная система, основанная на ядре Linux (Linux kernel), разработанном Линусом Торвальдсом в 1991 году. В отличие от Windows или macOS, Linux — это не одна система, а семейство дистрибутивов, построенных вокруг одного ядра.

NOTE

Ядро (kernel) — это “сердце” операционной системы. Оно управляет ресурсами: CPU, памятью, устройствами, сетью.
Источник: The Linux Kernel Archives

🔧 Почему Linux?

  • Открытый исходный код — вы можете изучать, модифицировать и распространять код.
  • Стабильность и надёжность — серверы на Linux работают месяцами без перезагрузки.
  • Гибкость — можно настроить под любые задачи: от микрокомпьютера Raspberry Pi до суперкомпьютера.
  • Безопасность — детальная настройка прав доступа, прозрачность, активное сообщество.
  • Поддержка DevOps и автоматизации — большинство инструментов CI/CD, контейнеризации (Docker, Kubernetes) изначально созданы под Linux.

EXAMPLE

Более 90% серверов в облаке работают под управлением Linux (source: Linux Foundation, 2023)


🧩 Архитектура Linux-системы

Простая схема:

+------------------------+
|   Пользовательские     |
|     приложения         |
+------------------------+
|   Оболочка (Shell)     |
+------------------------+
|  Системные библиотеки  |
|   и утилиты (glibc)    |
+------------------------+
|     Ядро (Kernel)      |
+------------------------+
| Аппаратное обеспечение |
+------------------------+

1. Ядро (Kernel)

Управляет взаимодействием между программами и “железом”. Отвечает за:

  • Управление процессами
  • Файловые системы
  • Сеть
  • Драйверы устройств

2. Системные библиотеки

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

3. Оболочка (Shell)

Интерфейс между пользователем и ядром. Самые популярные:

  • bash — по умолчанию в большинстве дистрибутивов
  • zsh — с поддержкой автодополнения, тем и плагинов (например, Oh My Zsh)
  • fish — дружелюбная для новичков

4. Пользовательские приложения

От текстовых редакторов до веб-серверов и контейнеров.


🖥️ Работа с терминалом: основы

Терминал — ваш главный инструмент. Начнём с базовых команд.

🔹 Навигация по файловой системе

pwd                    # Показать текущий путь
ls                     # Список файлов
ls -la                 # Подробный список (включая скрытые)
cd /path/to/dir        # Перейти в директорию
cd ..                  # Вверх на уровень
cd ~                   # В домашнюю директорию

INFO

Файловая система Linux — иерархическая, корень обозначается /.
Документация: Filesystem Hierarchy Standard (FHS)

🔹 Управление файлами

cp file1.txt file2.txt    # Копировать
mv old.txt new.txt        # Переместить/переименовать
rm file.txt               # Удалить файл
rm -r dir/                # Удалить директорию (рекурсивно)
mkdir mydir               # Создать директорию
touch newfile.txt         # Создать пустой файл

🔹 Просмотр содержимого

cat file.txt              # Вывести весь файл
less file.txt             # Просмотр с прокруткой (q — выход)
head file.txt             # Первые 10 строк
tail file.txt             # Последние 10 строк
tail -f logfile.log       # Следить за логом в реальном времени

👤 Пользователи и группы

Linux — многопользовательская система. Каждый пользователь имеет:

  • UID (User ID)
  • Домашнюю директорию (/home/username)
  • Оболочку по умолчанию

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

whoami                    # Кто я?
id                        # Показать UID, GID, группы
users                     # Кто сейчас в системе
sudo useradd newuser      # Создать пользователя
sudo passwd newuser       # Установить пароль
sudo usermod -aG docker newuser  # Добавить в группу

WARNING

Не используйте root для повседневной работы. Вместо этого настройте sudo.
Рекомендации по безопасности: sudo manual


🔐 Права доступа: chmod, chown

Каждый файл имеет права доступа в формате rwx:

  • r — read (чтение)
  • w — write (запись)
  • x — execute (выполнение)

Пример:

-rw-r--r-- 1 user user 1024 Oct 10 12:00 file.txt
  • Владелец: user, права rw- (чтение и запись)
  • Группа: user, права r-- (только чтение)
  • Остальные: r-- (только чтение)

Изменение прав:

chmod 644 file.txt        # Владелец: rw-, группа и другие: r--
chmod 755 script.sh       # Владелец: rwx, остальные: r-x
chown user:group file.txt # Сменить владельца и группу

EXAMPLE


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

Процесс — запущенная программа. Управлять ими можно так:

ps aux                    # Список всех процессов
top                       # Интерактивный мониторинг (выход — q)
htop                      # Улучшенная версия top (установить: apt install htop)
kill 1234                 # Завершить процесс по PID
kill -9 1234              # Принудительное завершение (SIGKILL)
systemctl status nginx    # Проверить статус службы
systemctl start nginx     # Запустить службу
systemctl enable nginx    # Включить автозапуск

INFO

systemd — современный менеджер служб в большинстве дистрибутивов.
Документация: freedesktop.org — systemd


📦 Менеджеры пакетов

Установка программ зависит от дистрибутива:

ДистрибутивМенеджерКоманда установки
Ubuntu/Debianaptsudo apt install nginx
CentOS/RHELyum / dnfsudo dnf install nginx
Arch Linuxpacmansudo pacman -S nginx
openSUSEzyppersudo zypper install nginx

TIP

Всегда обновляйте систему:

sudo apt update && sudo apt upgrade

🌐 Сеть в Linux

Базовые команды:

ip a                      # Показать IP-адреса (вместо устаревшего ifconfig)
ping google.com           # Проверить связь
ss -tuln                  # Показать открытые порты
netstat -tuln             # Альтернатива (требует установки)
curl http://example.com   # Загрузить страницу
wget http://example.com/file.zip  # Скачать файл

INFO

ip и ss — современные замены ifconfig и netstat.
Источник: iproute2 documentation


📁 Файловые системы

Linux поддерживает множество ФС:

  • ext4 — стандарт для дисков
  • XFS, Btrfs — для высокой производительности
  • tmpfs — в оперативной памяти
  • squashfs — сжатые образы (например, Live USB)

Проверка дискового пространства:

df -h                     # Свободное место на дисках
du -sh /home              # Размер директории

🛠️ Полезные советы для новичков

  1. Не бойтесь ошибаться — Linux позволяет восстановить почти всё.
  2. Используйте man — справка по любой команде: man ls
  3. Гуглите ошибки — 99% проблем уже решены на Stack Overflow или Ask Ubuntu
  4. Делайте бэкапы — особенно перед изменениями в системе
  5. Используйте виртуальные машины (например, VirtualBox) или контейнеры (Docker) для тестов

📚 Рекомендуемые ресурсы

  • 📘 The Linux Command Line — бесплатная книга для начинающих
  • 🎥 DistroTube на YouTube — практические уроки
  • 📖 ArchWiki — лучшая документация по Linux (полезна даже не-Arch пользователям)
  • 🧰 ExplainShell.com — расшифровка сложных команд

✅ Заключение

Linux — мощный, гибкий и надёжный инструмент для управления инфраструктурой. Начав с основ, вы сможете:

  • Развертывать собственные сервисы
  • Автоматизировать рутину
  • Понимать, как работает ваш сервер

QUOTE

“Linux — это не просто ОС. Это образ мышления.”
— Линус Торвальдс

Источники: kernel.org, linuxfoundation.org, tldp.org, man7.org, archwiki.org