Эксплуатация Linux
Повседневное администрирование Linux — диск, память, процессы, systemd, права и диагностика.
17 вопросов
JuniorТеорияОчень частоКак найти, какая директория под заданным путём занимает больше всего места на диске?
Как найти, какая директория под заданным путём занимает больше всего места на диске?
du -sh /home/ubuntu показывает суммарный размер одной директории. Чтобы отранжировать несколько, выполните du -sh * | sort -h — du -s суммирует каждый элемент, -h печатает человекочитаемые единицы, а sort -h сортирует эти размеры, и самая большая директория оказывается в конце.
Типичные ошибки
- ✗Путать
du(место, занятое файлами) сdf(свободное место на смонтированном ФС) - ✗Сортировать человекочитаемые размеры через
sort -nвместоsort -h, что неверно упорядочит1Gи900M - ✗Ожидать, что
ls -Sучитывает рекурсивное содержимое директории
Уточняющие вопросы
- →Почему
duиdfпоказывают разные итоги по одному и тому же монтированию? - →Что пропускает
du -sh *и как включить скрытые dot-файлы?
MiddleТеорияОчень частоЧто контролирует /etc/sudoers и что делает sticky bit на директории?
Что контролирует /etc/sudoers и что делает sticky bit на директории?
/etc/sudoers задаёт, какие пользователи могут запускать какие команды от имени другого пользователя (обычно root) через sudo — правится безопасно через visudo. Sticky bit на директории (chmod 1777, показывается как t) ограничивает удаление: в доступной всем на запись директории вроде /tmp удалить файл может только его владелец или root.
Типичные ошибки
- ✗Править
/etc/sudoersнапрямую вместоvisudo, рискуя синтаксической ошибкой, блокирующей sudo - ✗Думать, что sticky bit делает директорию только для чтения, а не ограничивает удаление владельцами
- ✗Путать sticky bit (префикс
1) с setuid (4) или setgid (2)
Уточняющие вопросы
- →Почему
visudoпредпочтительнее правки/etc/sudoersобычным редактором? - →Что делают биты setuid и setgid и почему они опаснее sticky bit?
JuniorТеорияЧастоЧто такое LVM и каковы его слои physical volume, volume group и logical volume?
Что такое LVM и каковы его слои physical volume, volume group и logical volume?
LVM (Logical Volume Manager) — это абстракция хранения между дисками и ФС. Physical volume (PV) — сырой диск или раздел; один или несколько PV образуют volume group (VG), пул хранения; logical volume (LV) выделяется из VG и получает ФС, и его можно менять в размере или растягивать по дискам на лету.
Типичные ошибки
- ✗Путать слои PV/VG/LV — VG это пул, а LV это то, что получает файловую систему
- ✗Думать, что LVM сам по себе файловая система, а не слой под ней
- ✗Считать, что logical volume не может занимать больше одного физического диска
Уточняющие вопросы
- →Какова последовательность команд для расширения logical volume и его ФС на лету?
- →Что захватывает снимок LVM и какова его цена copy-on-write?
JuniorТеорияЧастоКак посмотреть общее использование памяти и какой процесс потребляет больше всего в Linux?
Как посмотреть общее использование памяти и какой процесс потребляет больше всего в Linux?
free -h показывает всю, занятую и доступную RAM плюс swap. Память по процессам смотрят через top (или htop), сортируя по колонке RES — резидентному набору в RAM. VIRT — это виртуальное адресное пространство (часто огромное и разделяемое), а SHR — разделяемая часть, поэтому они не отражают реальную RAM.
Типичные ошибки
- ✗Ранжировать процессы по
VIRTвместоRES, завышая память, ведь виртуальное пространство в основном не подкреплено - ✗Считать
availableвfreeкакfree— кэш высвобождаем и входит в available - ✗Забывать, что
SHRучитывается дважды у процессов, отображающих одну библиотеку
Уточняющие вопросы
- →Почему сумма
RESвсех процессов может превышать физическую RAM без свопинга хоста? - →В чём разница между
freeиavailableпамятью вfree -h?
JuniorТеорияЧастоЧто такое systemd, под каким PID он запускается и как им перезапустить сервис?
Что такое systemd, под каким PID он запускается и как им перезапустить сервис?
systemd — это система инициализации и менеджер сервисов на современном Linux. Ядро запускает его первым, поэтому он работает как PID 1 и становится родителем всех остальных процессов. Юнитом управляют через systemctl: systemctl restart nginx останавливает и запускает сервис, а systemctl status nginx показывает его состояние.
Типичные ошибки
- ✗Думать, что PID 1 — это само ядро, а не процесс init, который ядро запускает
- ✗Считать, что
systemctlлишь читает конфигурацию и не управляет работающим сервисом - ✗Полагать, что
serviceиsystemctlне связаны, а не чтоserviceпроксирует в systemd
Уточняющие вопросы
- →Что происходит с осиротевшими дочерними процессами при смерти родителя и почему PID 1 их усыновляет?
- →Чем
systemctl enableотличается отsystemctl start?
MiddleТеорияЧастоКак остановить работающий процесс и чем отличаются SIGTERM и SIGKILL?
Как остановить работающий процесс и чем отличаются SIGTERM и SIGKILL?
Процессу шлют сигнал по PID: kill <pid> отправляет SIGTERM (15) — запрос, который процесс может перехватить и выйти. kill -9 <pid> отправляет SIGKILL (9), и ядро применяет его сразу — перехватить, заблокировать или проигнорировать нельзя, поэтому очистка не выполняется. Сначала шлют SIGTERM, а SIGKILL — для зависших процессов.
Типичные ошибки
- ✗Сразу брать
kill -9вместо того, чтобы датьSIGTERMзапустить аккуратное завершение - ✗Считать, что
SIGKILLможно перехватить или проигнорировать обработчиком - ✗Думать, что
SIGTERMиSIGKILLведут себя одинаково
Уточняющие вопросы
- →Почему процесс в непрерываемом сне (состояние
D) может игнорировать дажеSIGKILL? - →Что традиционно означает
SIGHUPдля долгоживущего демона?
MiddleТеорияЧастоЧто такое swap, можно ли добавлять и отключать его на лету и как увидеть swap по процессам?
Что такое swap, можно ли добавлять и отключать его на лету и как увидеть swap по процессам?
Swap — это место на диске (раздел или файл), куда ядро вытесняет неактивные страницы памяти при нехватке RAM. Его добавляют на лету через swapon и отключают через swapoff, но swapoff сначала обязан вернуть выгруженные страницы в RAM — и падает, если их больше свободной RAM. Swap по процессам — в /proc/<pid>/status (VmSwap) или smem.
Типичные ошибки
- ✗Считать, что
swapoffвсегда успешен — он падает, когда выгруженных данных больше свободной RAM - ✗Путать swap с кэшем RAM, а не с дисковым переполнением
- ✗Искать swap по процессам в колонке
RESуtop, а не вVmSwap
Уточняющие вопросы
- →Как параметр
vm.swappinessменяет момент, когда ядро решает свопить? - →Почему активный свопинг может поднять load average даже при простаивающем CPU?
JuniorТеорияИногдаГде обычно лежат логи и конфигурационные файлы в Linux и что такое inode?
Где обычно лежат логи и конфигурационные файлы в Linux и что такое inode?
По соглашению логи лежат в /var/log, а конфиги — в /etc, хотя сервисы могут использовать другие пути. Inode — это структура на диске с метаданными файла: размер, владелец, права, метки времени, указатели на блоки, но не имя, которое живёт в записи каталога, ссылающейся на inode.
Типичные ошибки
- ✗Думать, что inode хранит имя файла — имя в записи каталога, а не в inode
- ✗Считать пути логов/конфигов жёсткими правилами, а не соглашениями, которые сервис может переопределить
- ✗Полагать, что у каждой жёсткой ссылки свой inode, а не общий
Уточняющие вопросы
- →Как у ФС могут кончиться inode, пока
df -hещё показывает свободное место? - →Что делает удаление одной из нескольких жёстких ссылок со счётчиком ссылок inode?
JuniorТеорияИногдаКак добавить IP интерфейсу в Linux и как сделать так, чтобы он пережил перезагрузку?
Как добавить IP интерфейсу в Linux и как сделать так, чтобы он пережил перезагрузку?
ip addr add 10.0.0.5/24 dev eth0 добавляет адрес сразу, но он теряется при перезагрузке, так как не сохранён. Чтобы сделать его постоянным, его прописывают в конфиг дистрибутива: YAML Netplan в /etc/netplan на современной Ubuntu, профили NetworkManager или /etc/network/interfaces на старом Debian — затем применяют.
Типичные ошибки
- ✗Думать, что
ip addr addсам сохраняется между перезагрузками - ✗Не знать, какой конфиг использует дистрибутив (Netplan или interfaces)
- ✗Забывать применить конфиг после его правки
Уточняющие вопросы
- →Как Netplan связан с бэкенд-рендерером, которым он управляет (networkd или NetworkManager)?
- →Почему
ip addr addможет пройти, но хост всё равно недоступен по этому IP?
JuniorТеорияИногдаКакие службы поддерживают точное время на Linux-хосте и как проверить статус?
Какие службы поддерживают точное время на Linux-хосте и как проверить статус?
Время синхронизируется по NTP демоном: chrony (chronyd) на современных дистрибутивах или более старый ntpd. На systemd-хостах timedatectl показывает, синхронизированы ли часы и какая служба этим занята, а chronyc tracking сообщает смещение и вышестоящий источник. Точное время важно для логов и TLS.
Типичные ошибки
- ✗Путать аппаратные часы RTC с системными, синхронизируемыми по NTP
- ✗Не знать, что
chronyв основном вытеснилntpdна современных дистрибутивах - ✗Забывать, что
timedatectlсообщает состояние синхронизации, а не только пояс
Уточняющие вопросы
- →Почему несинхронизированные часы ломают проверку TLS-сертификатов?
- →Чем
chronyлучшеntpdсправляется с прерывистым сетевым подключением?
SeniorТеорияИногдаЧто такое OOM-killer и как он выбирает, какой процесс завершить?
Что такое OOM-killer и как он выбирает, какой процесс завершить?
OOM-killer (out-of-memory) — это механизм ядра, освобождающий память завершением процесса, когда RAM и swap кончились и выделение памяти невозможно. Он оценивает каждый процесс через oom_score — в основном по объёму памяти, настраивается через oom_score_adj — и убивает набравшего наибольший балл, чтобы вернуть больше всего памяти.
Типичные ошибки
- ✗Думать, что OOM-killer бьёт по самому старому процессу или с наименьшим PID, а не по наибольшему
oom_score - ✗Считать, что он срабатывает на
ulimitпроцесса, а не на исчерпание памяти системы целиком - ✗Забывать, что
oom_score_adjможет склонить ядро щадить или предпочитать конкретный процесс
Уточняющие вопросы
- →Как установка
oom_score_adjв-1000влияет на процесс при OOM? - →Почему настройки
vm.overcommit_memoryменяют, как часто срабатывает OOM-killer?
JuniorТеорияРедкоДля чего нужны встроенные средства безопасности Linux iptables, firewalld, SELinux и AppArmor?
Для чего нужны встроенные средства безопасности Linux iptables, firewalld, SELinux и AppArmor?
iptables (и его преемник nftables) — это пакетный фильтр ядра, то есть правила хостового файрвола; firewalld — высокоуровневый интерфейс, управляющий ими через зоны. SELinux и AppArmor — слои Mandatory Access Control, ограничивающие процессы сверх прав на файлы: SELinux использует метки и политику, AppArmor — профили по путям. Файрвол фильтрует трафик; MAC ограничивает скомпрометированный процесс.
Типичные ошибки
- ✗Считать SELinux/AppArmor файрволами, а не Mandatory Access Control
- ✗Не знать, что
firewalld— это интерфейс поверхiptables/nftables - ✗Думать, что одни права на файлы дают ту же изоляцию, что и MAC
Уточняющие вопросы
- →Чем модель меток SELinux отличается от профилей AppArmor по путям?
- →Почему Mandatory Access Control полезен даже при корректных правах на файлы?
MiddleТеорияРедкоЧто такое репозиторий пакетов APT/yum, где он настраивается и как поднять свой?
Что такое репозиторий пакетов APT/yum, где он настраивается и как поднять свой?
Репозиторий — это сервер с подписанными пакетами и подписанным индексом, который пакетный менеджер забирает и перед установкой проверяет по доверенному ключу. В Debian/Ubuntu источники лежат в /etc/apt/sources.list и /etc/apt/sources.list.d/; в RHEL — в /etc/yum.repos.d/. Чтобы поднять свой, зеркалируют или собирают репозиторий и отдают по HTTP — это делают Aptly, Pulp или Nexus.
Типичные ошибки
- ✗Не знать, где настраиваются источники (
/etc/aptили/etc/yum.repos.d) - ✗Забывать, что репозиторию нужны подписанные метаданные индекса, а не только файлы пакетов
- ✗Думать, что самохостинг требует зеркалирования всего архива апстрима
Уточняющие вопросы
- →Почему APT отвергает репозиторий, чья подпись файла
Releaseне проходит проверку? - →Когда стоит закрепить версию пакета за конкретным репозиторием вместо стандартного?
MiddleТеорияРедкоКак запретить конкретному пользователю Linux планировать cron-задачи?
Как запретить конкретному пользователю Linux планировать cron-задачи?
Отдельного выключателя на пользователя нет, но у cron есть гейт разрешений: /etc/cron.allow и /etc/cron.deny. Если cron.allow существует, использовать crontab могут только перечисленные в нём; иначе — все, кого нет в cron.deny. Поэтому пользователя вносят в cron.deny (или не вносят в cron.allow) и удаляют его запись в /var/spool/cron, так как deny не останавливает уже запланированные задачи.
Типичные ошибки
- ✗Ожидать одного флага отключения на пользователя, которого нет
- ✗Не знать, что
cron.allowимеет приоритет и меняет поведение по умолчанию - ✗Забывать, что существующая запись в спуле продолжает работать после deny
Уточняющие вопросы
- →Как наличие
cron.allowменяет поведение по умолчанию для непрописанных пользователей? - →Почему добавление в
cron.denyне останавливает уже установленные задачи пользователя?
MiddleТеорияРедкоЧто такое PAM (Pluggable Authentication Modules) и как он формирует аутентификацию в Linux?
Что такое PAM (Pluggable Authentication Modules) и как он формирует аутентификацию в Linux?
PAM — это фреймворк, позволяющий программам делегировать аутентификацию стеку подключаемых модулей вместо жёсткого кодирования. Службы вроде login, sshd и sudo работают через PAM; их конфиг в /etc/pam.d/ перечисляет модули по группам auth, account, password, session. Управляющий флаг (required, sufficient) решает итог, так что 2FA или LDAP добавляются без пересборки службы.
Типичные ошибки
- ✗Думать, что каждая служба реализует свой вход, а не делегирует PAM
- ✗Путать управляющие флаги PAM (
requiredиsufficient) при порядке модулей - ✗Не знать, что PAM делится на группы auth/account/password/session
Уточняющие вопросы
- →Как флаг
sufficientобрывает остаток стека аутентификации? - →Почему неверный порядок в
/etc/pam.d/sshdможет полностью отрезать вас от сервера?
SeniorДебаггингРедкоdu показывает 1 ГБ, а df — 10 ГБ занятыми на том же монтировании — диагностируйте
du показывает 1 ГБ, а df — 10 ГБ занятыми на том же монтировании — диагностируйте
Процесс держит открытый дескриптор на файл, удалённый из каталога. du обходит имена и больше его не видит, но блоки inode живут, пока открыт хоть один дескриптор, поэтому df всё ещё считает место. Найдите через lsof | grep deleted; верните место перезапуском или сигналом держащего процесса либо обнулив его дескриптор через /proc/<pid>/fd.
Типичные ошибки
- ✗Запускать
fsckна живом монтировании вместо поиска процесса, держащего удалённый файл - ✗Считать, что место потеряно навсегда, а не удержано открытым дескриптором
- ✗Удалять ещё файлы, когда настоящий фикс — освободить или перезапустить держащий процесс
Уточняющие вопросы
- →Почему обнуление
/proc/<pid>/fd/<n>освобождает место без убийства процесса? - →Какой распространённый сервис обычно вызывает это удалённым, но ещё пишущимся лог-файлом?
SeniorДизайнРедкоВас просят защитить парк пользовательских Linux-ноутбуков от кражи и вредоносного ПО. Машины выносят за пределы офиса, на них стандартный десктоп, управление централизованное. Опишите многослойный план защиты: что вы закрепите на уровне загрузки/прошивки, на уровне диска, на уровне ОС/рантайма и организационно — и поясните, от какой угрозы защищает каждый слой.
Вас просят защитить парк пользовательских Linux-ноутбуков от кражи и вредоносного ПО. Машины выносят за пределы офиса, на них стандартный десктоп, управление централизованное. Опишите многослойный план защиты: что вы закрепите на уровне загрузки/прошивки, на уровне диска, на уровне ОС/рантайма и организационно — и поясните, от какой угрозы защищает каждый слой.
Слой под каждую угрозу. Загрузка/прошивка: Secure Boot и пароль на GRUB/BIOS, чтобы атакующий не загрузил чужой носитель и не правил параметры ядра. Диск: полнодисковое шифрование (LUKS), чтобы украденный ноутбук не отдал данные. ОС/рантайм: слой MAC (SELinux/AppArmor), хостовый файрвол, блокировка USB, обновления и защита конечной точки (AV/EDR). Организационно: централизованный конфиг, минимум привилегий и аудит-логи вне хоста.
Типичные ошибки
- ✗Считать антивирус всем решением, а не одним слоем
- ✗Пропускать шифрование диска, оставляя данные читаемыми на украденном устройстве
- ✗Игнорировать контроль загрузки/прошивки, давая загрузить чужой носитель
Уточняющие вопросы
- →Как LUKS защищает данные в покое, но не работающую разблокированную машину?
- →Почему централизованное управление конфигом важнее с ростом размера парка?