Вопросы по Linux на собеседовании: 24 вопроса с ответами
На собеседовании по Linux чаще всего спрашивают про устройство файловой системы и inode, жёсткие и символические ссылки, права доступа и sudo, процессы и сигналы, загрузку системы, а также сеть: как проверить открытые порты, как работает DNS-резолвинг и что делать, если сервер недоступен.
Linux спрашивают на собеседованиях DevOps-инженеров, системных администраторов, SRE и бэкенд-разработчиков. Интервьюеры редко ждут наизусть флагов: им важно, понимаете ли вы, как устроена система, и сможете ли найти причину проблемы. Ниже собраны вопросы по Linux на собеседовании, которые встречаются чаще всего, — от базовых до диагностических, с ответами и командами.
Совет: отвечая, называйте команду, которой вы бы проверили своё утверждение. Фраза «посмотрю через ss -tlnp» звучит убедительнее общих слов.
Файловая система
1. Что такое FHS и что лежит в основных каталогах?
FHS (Filesystem Hierarchy Standard) — стандарт расположения каталогов. Всё дерево начинается с корня /, отдельных дисков с буквами нет: другие файловые системы монтируются в каталоги дерева.
/etc— конфигурация системы и служб;/var— изменяемые данные: логи (/var/log), кэш, очереди, базы;/home— домашние каталоги пользователей,/root— домашний каталог root;/usr— программы и библиотеки,/binи/sbinв современных дистрибутивах обычно ссылки на/usr/binи/usr/sbin;/tmp— временные файлы,/boot— ядро и загрузчик;/procи/sys— виртуальные файловые системы с информацией о процессах и ядре,/dev— файлы устройств.
2. Что такое inode?
Inode — структура файловой системы, хранящая метаданные файла: тип, права, владельца, размер, временные метки, число жёстких ссылок и указатели на блоки с данными. Имени файла в inode нет: имя хранится в каталоге как запись «имя → номер inode».
Номер inode показывает ls -i, подробности — stat file. Количество inode на файловой системе ограничено, и df -i показывает, сколько их занято. Отсюда классическая ситуация: «места на диске много, а файл создать нельзя» — inode закончились из-за миллионов мелких файлов.
3. Чем жёсткая ссылка отличается от символической?
Жёсткая ссылка (ln file link) — ещё одно имя для того же inode. Оба имени равноправны, данные удаляются, только когда счётчик ссылок станет нулём. Ограничения: нельзя ссылаться на каталог и нельзя выходить за пределы одной файловой системы.
Символическая ссылка (ln -s target link) — отдельный файл со своим inode, внутри которого записан путь к цели. Она может указывать на каталог и на другую файловую систему, но «ломается», если цель удалить или переместить.
4. Место на диске закончилось, но du показывает меньше, чем df. Почему?
Чаще всего файл удалили, но какой-то процесс всё ещё держит его открытым — например, удалили большой лог работающего сервиса. Имени уже нет, поэтому du его не видит, а блоки остаются занятыми, и df их учитывает.
Найти такие файлы: lsof +L1 или lsof | grep deleted. Решение — перезапустить процесс или усечь файл через его дескриптор: : > /proc/PID/fd/N. На будущее логи чистят через truncate или ротацию logrotate, а не через rm.
5. Как проходит загрузка Linux?
Прошивка (BIOS или UEFI) инициализирует оборудование и передаёт управление загрузчику, обычно GRUB. Загрузчик читает конфигурацию, загружает в память ядро и initramfs — временную корневую файловую систему с драйверами, нужными для доступа к настоящему корню.
Ядро инициализирует устройства, монтирует корневую файловую систему и запускает первый процесс пространства пользователя с PID 1 — в большинстве дистрибутивов это systemd. Он поднимает службы до цели по умолчанию, например multi-user.target. Время этапов показывает systemd-analyze.
6. Что делает команда mount и где описывается автоматическое монтирование?
mount подключает файловую систему с устройства к каталогу (точке монтирования): mount /dev/sdb1 /mnt/data. Текущие монтирования показывают findmnt или mount без аргументов.
Монтирование при загрузке описывают в /etc/fstab. Устройства там лучше указывать по UUID (его покажет blkid), а не по имени /dev/sdb1, которое может смениться. Перед перезагрузкой изменения проверяют командой mount -a: ошибка в fstab может остановить загрузку.
Пользователи и права
7. Как устроены права доступа в Linux?
У каждого файла есть владелец, группа и три набора прав: для владельца, для группы и для всех остальных. Каждый набор — это r (чтение), w (запись), x (выполнение). В числовой форме r=4, w=2, x=1, поэтому chmod 640 file даёт владельцу чтение и запись, группе чтение, остальным ничего.
$ ls -l app.conf
-rw-r----- 1 deploy www-data 512 Oct 12 10:03 app.conf
Владельца меняют командой chown user:group file, права — chmod.
8. Что означают права r, w, x для каталога?
Для каталога смысл другой: r — можно получить список имён, w — можно создавать, удалять и переименовывать файлы внутри, x — можно войти в каталог и обращаться к файлам по имени.
Отсюда важное следствие: удалить файл может тот, у кого есть право записи в каталог, даже если сам файл ему не принадлежит. Без x на каталоге не поможет даже r: имена видны, но открыть файлы нельзя.
9. Что такое SUID, SGID и sticky bit?
SUID на исполняемом файле запускает программу с правами её владельца, а не пользователя. Классический пример — /usr/bin/passwd: он принадлежит root и может изменить /etc/shadow. SGID на файле делает то же для группы, а на каталоге — заставляет новые файлы наследовать группу каталога, что удобно для общих папок.
Sticky bit на каталоге разрешает удалять файлы только их владельцу, даже если каталог доступен на запись всем. Так устроен /tmp: в ls -ld /tmp вы увидите drwxrwxrwt. Найти все SUID-файлы для аудита: find / -perm -4000 -type f 2>/dev/null.
10. Что такое umask?
umask — маска, которая убирает права у новых файлов и каталогов. Базовые права — 666 для файлов и 777 для каталогов, umask вычитает из них биты. При типичной umask 022 файлы создаются с правами 644, каталоги — 755. Текущее значение показывает команда umask.
11. Где хранятся пользователи и пароли?
Учётные записи — в /etc/passwd: имя, UID, GID основной группы, домашний каталог и оболочка. Хеши паролей вынесены в /etc/shadow, который читает только root, — так хеши не доступны обычным пользователям для перебора. Группы описаны в /etc/group.
Информацию о пользователе удобно смотреть командами id user и getent passwd user — вторая учитывает и внешние источники вроде LDAP.
12. Как работает sudo и чем он лучше входа под root?
sudo выполняет команду от имени другого пользователя (по умолчанию root) по правилам из /etc/sudoers и файлов в /etc/sudoers.d/. Пользователь вводит свой пароль, а не пароль root, и каждое действие пишется в журнал с указанием, кто его сделал.
Правило может разрешать всё (alena ALL=(ALL:ALL) ALL) или конкретные команды. Редактировать sudoers нужно через visudo: он проверяет синтаксис перед сохранением, и ошибка не лишит вас sudo. На Ubuntu права администратора дают членством в группе sudo, в RHEL-подобных — в группе wheel.
13. Как добавить пользователя в группу и почему изменения не применились?
Команда usermod -aG docker alena добавляет пользователя в дополнительную группу. Флаг -a обязателен: без него -G заменит весь список групп.
Изменения вступают в силу при новом входе в систему: текущая сессия хранит старый список групп. Можно перелогиниться или открыть оболочку с новой группой командой newgrp docker. Проверить — id.
Процессы
14. Что такое процесс, PID и как посмотреть процессы?
Процесс — запущенная программа со своим адресным пространством, открытыми файлами и идентификатором PID. У каждого процесса есть родитель (PPID); общий предок — процесс с PID 1. Список процессов показывают ps aux и ps -ef, дерево — pstree или ps -ef --forest, в реальном времени — top и htop.
15. Чем отличаются сигналы SIGTERM и SIGKILL?
kill PID по умолчанию отправляет SIGTERM (15) — вежливую просьбу завершиться. Процесс может его перехватить, закрыть соединения, сохранить данные и выйти. SIGKILL (9, kill -9) перехватить нельзя: ядро завершает процесс немедленно, без очистки.
Правильный порядок — сначала SIGTERM, и только если процесс не реагирует — SIGKILL. Ещё один частый сигнал — SIGHUP: многие демоны по нему перечитывают конфигурацию.
16. Что такое зомби-процесс?
Зомби — процесс, который уже завершился, но родитель ещё не прочитал его код возврата вызовом wait(). Ресурсов он почти не занимает, но держит запись в таблице процессов. В ps его состояние — Z.
Убить зомби нельзя: он уже мёртв. Нужно, чтобы родитель его «похоронил», — исправить родительскую программу или завершить родителя, тогда зомби унаследует PID 1 и тот его уберёт.
17. Что показывает load average?
Три числа в uptime и top — среднее количество процессов в очереди на выполнение за 1, 5 и 15 минут. В Linux сюда входят и процессы в непрерываемом ожидании (состояние D), обычно — ожидание диска.
Значение сравнивают с числом ядер (nproc): load 4 на 4 ядрах — полная загрузка, на 16 ядрах — четверть. Высокий load при низкой загрузке CPU намекает на проблему с вводом-выводом; это проверяют через iostat или поле wa в top.
Сеть
18. Как посмотреть IP-адреса, маршруты и открытые порты?
Адреса интерфейсов — ip a, таблица маршрутизации — ip r. Старые ifconfig и netstat из пакета net-tools во многих дистрибутивах по умолчанию не установлены.
Слушающие порты и процессы, которые их открыли, показывает ss -tlnp: t — TCP, l — только слушающие, n — без преобразования в имена, p — с процессом. Для UDP — ss -ulnp.
$ sudo ss -tlnp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=812,fd=6))
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=640,fd=3))
19. Сервис слушает 127.0.0.1:8080 — можно ли к нему подключиться снаружи?
Нет. Адрес 127.0.0.1 — петлевой интерфейс, доступный только с этой же машины. Чтобы принимать внешние подключения, сервис должен слушать адрес внешнего интерфейса или 0.0.0.0 (все IPv4-адреса). Это частая причина «порт открыт, а снаружи не работает», наряду с файрволом.
20. Как Linux превращает имя хоста в IP-адрес?
Порядок источников задаёт строка hosts: в /etc/nsswitch.conf, обычно сначала файл /etc/hosts, затем DNS. Адреса DNS-серверов берутся из /etc/resolv.conf; в системах с systemd-resolved там указан локальный адрес 127.0.0.53, а реальные серверы показывает resolvectl status.
Для проверки используют dig example.com или dig @1.1.1.1 example.com (запрос к конкретному серверу). Важная тонкость: dig и nslookup обращаются к DNS напрямую и не читают /etc/hosts, а getent hosts example.com проходит тем же путём, что и приложения.
21. Чем TCP отличается от UDP?
TCP устанавливает соединение (трёхстороннее рукопожатие SYN, SYN-ACK, ACK), гарантирует доставку и порядок данных, повторяет потерянные пакеты. На нём работают HTTP, SSH, большинство баз данных. UDP отправляет датаграммы без соединения и гарантий, зато с меньшими задержками — его используют DNS-запросы, видеозвонки, игры.
22. Сайт не открывается. Как будете искать причину?
Идти по слоям, от имени к приложению:
- Резолвится ли имя:
dig site.example, совпадает ли адрес с ожидаемым. - Доступен ли хост:
ping(может быть закрыт),tracerouteилиmtr. - Открыт ли порт:
nc -zv host 443илиcurl -v https://site.example. - На сервере: работает ли служба (
systemctl status nginx), слушает ли порт (ss -tlnp), не режет ли файрвол (sudo nft list ruleset,sudo ufw status). - Логи приложения и
journalctl -uслужбы.
Интервьюеру важен именно системный порядок, а не конкретный набор утилит.
23. Что такое состояние TIME_WAIT?
После закрытия TCP-соединения сторона, закрывшая его первой, держит сокет в TIME_WAIT некоторое время, чтобы опоздавшие пакеты старого соединения не попали в новое с теми же адресами и портами. Большое число TIME_WAIT нормально для нагруженного сервера или клиента, делающего много коротких соединений. Посчитать их можно командой ss -tan state time-wait | wc -l.
24. Чем отличаются /etc/hosts и DNS, и когда нужен первый?
/etc/hosts — локальная статическая таблица «адрес — имя» на конкретной машине. Она проверяется раньше DNS (при стандартном nsswitch) и удобна для тестов: например, направить домен на новый сервер до смены DNS-записей. DNS — распределённая система, ответы которой видят все клиенты. Ошибка в /etc/hosts — частая причина ситуации «у меня сайт открывается, а у всех — нет».
Итог
Типичные вопросы по Linux на собеседовании проверяют три вещи: понимаете ли вы модель системы (inode, права, процессы, загрузка), знаете ли инструменты диагностики (ss, dig, journalctl, lsof) и умеете ли искать причину по шагам. Отвечайте с командами и примерами из практики. Файловая система, права и сеть подробно разобраны на практике в курсе по Linux.
Частые вопросы
Что спрашивают по Linux на собеседовании junior DevOps?
Обычно базу: навигацию и права, работу с процессами и systemctl, просмотр логов, сетевые команды ip, ss, dig и curl, основы Bash-скриптов. Часто дают практическую задачу вроде «найдите, что занимает диск».
Нужно ли знать наизусть флаги команд?
Нет, допустимо сказать, что уточните флаг в man. Важнее понимать, какой инструмент решает задачу и что означает его вывод.
Какой дистрибутив учить для собеседования?
Подойдёт любой популярный серверный: Ubuntu или Debian либо RHEL-совместимый вроде Rocky Linux. Основы общие, различаются в основном менеджер пакетов и имена некоторых служб.
Как подготовиться к практической части собеседования по Linux?
Поднимите виртуальную машину и решайте реальные задачи: настройте веб-сервер как службу systemd, вход по SSH-ключу, файрвол, найдите процесс по порту. Объяснять вслух свои шаги — тоже часть подготовки.
Эта тема подробно разобрана с практикой в курсе «Linux: с нуля до уверенного администрирования».
- Как устроена файловая система Linux: от корня до загрузки ядра
- Пользователи, права доступа и sudo: кто и что может делать в системе
- Сеть в Linux: от IP-адреса до сокета и DNS