1. Архитектура Linux, управление процессами и правами доступа
Архитектура Linux, управление процессами и правами доступа
Добро пожаловать в мир профессионального администрирования Linux. Чтобы эффективно управлять серверами, контейнерами и облачной инфраструктурой, недостаточно просто знать команды. Необходимо понимать, как операционная система устроена изнутри. Мы начнем с фундамента: архитектуры ядра, жизненного цикла процессов и системы прав доступа.
Архитектура операционной системы Linux
Linux — это не просто программа, которую вы запускаете. Это слоистая структура, обеспечивающая взаимодействие между вашим кодом и физическим железом сервера.
!Слои архитектуры Linux: от аппаратного обеспечения к пользовательским приложениям
1. Аппаратное обеспечение (Hardware)
Это физический уровень: процессор (CPU), оперативная память (RAM), жесткие диски и сетевые карты. Сами по себе эти компоненты не знают, как запустить веб-сервер Nginx или базу данных.2. Ядро (Kernel)
Сердце системы. Ядро — это программа, которая загружается первой и управляет всем оборудованием. Оно решает, какой процесс получит доступ к процессору прямо сейчас, а какой подождет. Оно выделяет память и обрабатывает запросы от программ.3. Пространство пользователя (User Space)
Здесь работают все ваши программы: от командной оболочки Bash до Docker-контейнеров. Важно понимать: программы в User Space не имеют прямого доступа к железу. Если Nginx хочет записать лог на диск, он не пишет на диск сам. Он делает системный вызов (syscall) к ядру: «Пожалуйста, запиши эти данные». Ядро проверяет права и выполняет операцию.Принцип «Всё есть файл»
Одной из ключевых концепций Linux является философия: «Всё есть файл». Это означает, что для системы нет принципиальной разницы между текстовым документом, директорией, жестким диском или сокетом сетевого соединения./dev/sda — это файл, представляющий ваш жесткий диск./proc/cpuinfo — это файл (виртуальный), содержащий информацию о процессоре./dev/null — это файл-«черная дыра», куда можно отправить ненужный вывод.Понимание этого принципа критически важно для DevOps-инженера, так как это позволяет использовать одни и те же инструменты (например, cat, grep, перенаправление потоков) для работы с логами, устройствами и процессами.
Управление процессами
Когда вы запускаете программу, она становится процессором. У каждого процесса есть свой уникальный идентификатор — PID (Process ID).
Жизненный цикл процесса
В Linux процессы образуют иерархическое дерево. При загрузке системы ядро запускает самый первый процесс. В современных дистрибутивах (Ubuntu, CentOS 7+) это systemd, и он всегда имеет PID 1.Все остальные процессы являются «детьми» PID 1 или его потомков. Когда процесс порождает новый процесс, используется механизм fork (копирование родителя) и exec (замена кода копии на новую программу).
Мониторинг процессов
Для администратора важно уметь находить «прожорливые» или зависшие процессы.#### Команда ps Показывает моментальный снимок текущих процессов.
Разберем ключи:
a — показать процессы всех пользователей.u — вывести подробную информацию (пользователь, время старта, потребление памяти).x — показать процессы, не привязанные к терминалу (демоны).#### Команда top и htop
top показывает процессы в реальном времени. htop — более удобный и красочный аналог.
В top обратите внимание на параметр Load Average (три числа вверху справа). Они показывают среднюю нагрузку на систему за 1, 5 и 15 минут. Если Load Average выше количества ядер вашего процессора, значит, сервер перегружен и процессы стоят в очереди на выполнение.
Сигналы: управление жизнью процесса
Как остановить зависший процесс? Мы посылаем ему сигнал.Команда kill по умолчанию не «убивает», а отправляет сигнал. Самые важные сигналы:
kill PID.nginx -s reload посылает этот сигнал мастер-процессу).Пример жесткого завершения процесса с PID 1234:
Права доступа и пользователи
Безопасность Linux строится на разграничении прав доступа. Каждый файл и процесс принадлежит определенному пользователю (User) и группе (Group).
Чтение, запись, исполнение
Права доступа определяются для трех категорий:Для каждой категории можно установить три типа прав:
Посмотрим на вывод ls -l:
Здесь -rwxr-xr-- расшифровывается так:
- означает, что это файл (если бы было d, это была бы директория).rwx (первая тройка) — владелец admin может читать, писать и исполнять.r-x (вторая тройка) — группа devs может читать и исполнять, но не менять.r-- (третья тройка) — остальные могут только читать.Числовое представление прав (Octal)
В администрировании часто используют числовую запись. Каждое право имеет свой вес:Где:
Например, права rwx (полный доступ) рассчитываются так:
Где:
rwx.Права r-x (чтение и исполнение):
Где:
r-x.Таким образом, права rwxr-xr-- из примера выше записываются как 754.
Команды управления правами
chmod (change mode) — изменение прав доступа.chown (change owner) — смена владельца и группы.Специальные биты: SUID, SGID, Sticky Bit
Для продвинутого администрирования важно знать специальные права./usr/bin/passwd. Она принадлежит root. Когда обычный пользователь меняет свой пароль, программа должна записать его в защищенный файл /etc/shadow. Благодаря SUID, обычный пользователь запускает passwd, и она работает как root.
Обозначение:* Буква s вместо x у владельца (rwsr-xr-x)./tmp. Все могут писать туда, но вы не можете удалить временный файл соседа.
Обозначение:* Буква t в конце (rwxrwxrwt).Лабораторная работа
Выполните следующие задания в вашем терминале (локально или на виртуальной машине), чтобы закрепить материал.
Задание 1: Работа с процессами
ps или pgrep:/proc (подставьте ваш PID):Задание 2: Права доступа
sudo):Итоги
ps и top, для управления — сигналы через kill.