Skip to content

Вопросы на собеседовании: Системный администратор

100 реальных вопросов с образцовыми ответами и пояснениями для уровня Junior.

Смотреть пример резюме: Системный администратор

Тренировка флешкарточками

Интервальное повторение · Hunter Pass

Вопросы

linuxstorage

/ является корнем иерархии файловой системы и содержит все остальные пути либо предоставляет к ним доступ.

  • /etc хранит системные файлы конфигурации конкретного компьютера.
  • /var хранит изменяемые данные, например журналы, кеши, очереди и файлы состояния.
  • /home содержит домашние каталоги и личные файлы обычных пользователей.
  • /tmp предназначен для временных файлов и может автоматически очищаться, в том числе при перезагрузке.

Зачем это спрашивают: Эти каталоги разделяют по назначению корневую иерархию, конфигурацию, изменяемые данные, пользовательские данные и временные данные.

Абсолютный путь начинается от корневого каталога, а относительный интерпретируется от текущего рабочего каталога.

  • Абсолютный путь начинается с /, например /etc/hosts.
  • Относительный путь не начинается с /, например documents/report.txt.
  • . обозначает текущий каталог.
  • .. обозначает родительский каталог.

Зачем это спрашивают: Один и тот же относительный путь может указывать на разные объекты при смене текущего рабочего каталога.

linux

Первый символ строки ls -l показывает тип объекта файловой системы.

  • - означает обычный файл, а d означает каталог.
  • l означает символическую ссылку.
  • b и c означают блочное и символьное устройства.
  • p означает именованный канал, а s означает сокет.

Зачем это спрашивают: Этот символ типа отделен от следующих за ним девяти символов прав доступа.

Жесткая ссылка является еще одной записью каталога для того же inode, а символическая ссылка является отдельным файлом, который хранит путь к целевому объекту.

  • Жесткие ссылки используют общий inode и общее содержимое целевого файла.
  • Символические ссылки имеют собственный inode и могут указывать на каталоги.
  • Жесткая ссылка обычно не может пересекать границы файловых систем, а символическая может.
  • Удаление исходного имени не нарушает жесткую ссылку, но может сделать символическую ссылку недействующей.

Зачем это спрашивают: Различие связано с прямой ссылкой на inode и ссылкой на другой путь.

linux

У каждого файла Linux есть один пользователь-владелец и одна группа-владелец, которые учитываются при проверке прав доступа.

  • Права владельца применяются, когда обращающийся пользователь является владельцем файла.
  • Права группы применяются к подходящим участникам группы файла, если права владельца не применяются.
  • Права остальных применяются, если не подходят ни класс владельца, ни класс группы.

Зачем это спрашивают: Владение определяет, какой класс прав пользователя, группы или остальных будет проверен для доступа.

permissions

Биты rwx действуют по-разному для обычного файла и каталога.

  • Для обычного файла r разрешает читать содержимое, w изменять его, а x выполнять файл как программу.
  • Для каталога r разрешает получать список записей, w создавать, удалять или переименовывать записи, а x проходить через каталог и обращаться к записям по имени.
  • Для операций с каталогом часто нужны сочетания прав, например r вместе с x для полноценного просмотра списка или w вместе с x для изменения записей.

Зачем это спрашивают: Права каталога управляют именами и проходом по пути, а не чтением, записью или выполнением самого каталога.

permissionslinux

Символьная запись chmod указывает, чьи права меняются, какую операцию нужно выполнить и какие биты прав затронуты.

  • u, g, o и a выбирают владельца, группу, остальных или все классы.
  • + добавляет права, - удаляет их, а = точно задает выбранные права.
  • r, w и x обозначают права чтения, записи и выполнения.
  • chmod u+x,g-w file добавляет владельцу право выполнения и удаляет у группы право записи.

Зачем это спрашивают: Символьная запись позволяет изменить права, не заменяя несвязанные с изменением биты.

permissionslinux

Числовая запись chmod представляет права каждого класса восьмеричной цифрой, полученной сложением значений прав.

  • Чтение имеет значение 4, запись 2, а выполнение 1.
  • Три цифры обычно обозначают владельца, группу и остальных именно в таком порядке.
  • Каждая цифра принимает значение от 0 без прав до 7 с правами чтения, записи и выполнения.
  • chmod 640 file дает владельцу rw, группе r, а остальным не дает прав.

Зачем это спрашивают: Восьмеричная запись кодирует сочетание rwx каждого класса одной цифрой.

permissionslinux

chown изменяет владельца файла, а chgrp изменяет группу-владельца файла.

  • chown user file задает нового пользователя-владельца.
  • chown user:group file задает одновременно пользователя-владельца и группу-владельца.
  • chgrp group file изменяет только группу-владельца.

Зачем это спрашивают: Эти команды изменяют метаданные владения, а не биты прав rwx.

permissions

umask является настройкой процесса, которая удаляет биты прав из базового режима, запрошенного при создании нового файла или каталога.

  • Для обычных файлов обычно используется базовый режим 666 без битов выполнения.
  • Для каталогов обычно используется базовый режим 777.
  • Каждый установленный в umask бит удаляется из соответствующего базового режима.
  • При umask 022 обычный результат равен 644 для файлов и 755 для каталогов.

Зачем это спрашивают: Umask ограничивает запрошенные права по умолчанию и не добавляет права, которых нет в базовом режиме.

linux

/etc/passwd хранит открытые данные учетных записей, а /etc/shadow хранит защищенные данные о паролях и сроках их действия.

  • Каждая запись /etc/passwd содержит имя пользователя, UID, основной GID, описательное поле, домашний каталог и командную оболочку.
  • В поле пароля файла /etc/passwd обычно стоит x, который указывает, что данные о пароле находятся в /etc/shadow.
  • /etc/shadow содержит хеш пароля или маркер блокировки входа по паролю, но не пароль в открытом виде.
  • /etc/shadow также хранит параметры срока действия пароля и обычно доступен для чтения только привилегированным процессам.

Зачем это спрашивают: Разделение открытых данных учетной записи и защищенных данных аутентификации позволяет обычным программам определять пользователей, не раскрывая хеши паролей.

linux

Группы Linux назначают общий идентификатор и права нескольким пользователям.

  • /etc/group обычно содержит имя группы, заполнитель пароля, числовой GID и список дополнительных участников через запятую.
  • Основная группа пользователя задается через GID в его записи /etc/passwd, поэтому пользователь может отсутствовать в списке участников /etc/group.
  • id показывает UID пользователя, основной GID и дополнительные группы, обычно одновременно в числовом и текстовом виде.
  • groups выводит названия групп текущего или указанного пользователя.

Зачем это спрашивают: Основная и дополнительные группы позволяют выдавать общий доступ без отдельной настройки прав для каждого пользователя.

least-privilegepermissionslinux

sudo запускает разрешенную команду с правами другого пользователя, а su запускает оболочку или команду от имени другого пользователя.

  • sudo обычно проверяет пароль текущего пользователя и применяет правила, настроенные именно для него.
  • su обычно требует пароль целевого пользователя и без указания команды открывает оболочку от его имени.
  • sudo позволяет разрешить узкий набор административных команд и оставляет более понятный журнал, чем общий пароль root.
  • Принцип наименьших привилегий требует выдавать роли только необходимые команды и доступ на необходимый срок.

Зачем это спрашивают: Точные правила sudo уменьшают объем доступных полномочий по сравнению с постоянной работой в неограниченной сессии root.

concurrency

PID идентифицирует запущенный процесс, а PPID идентифицирует процесс, который создал его или принял как родительский.

  • Ядро назначает каждому процессу числовой идентификатор PID.
  • Идентификатор родительского процесса PPID отражает связь процессов в их иерархии.
  • ps выводит снимок процессов и может показывать PID, PPID, пользователя, состояние, процессорное время и команду.
  • Варианты ps -ef, ps aux и ps -o pid,ppid,user,stat,command выбирают разные наборы процессов и форматы вывода.

Зачем это спрашивают: Значения PID и PPID позволяют идентифицировать процессы и понимать их место в иерархии.

jobs

Задание переднего плана занимает терминал, а фоновое задание выполняется, не удерживая приглашение оболочки.

  • Символ & после команды запускает ее в фоне и сразу возвращает приглашение оболочки.
  • jobs выводит задания, которые отслеживает текущая оболочка, включая их номера и состояния.
  • bg продолжает остановленное задание в фоне, обычно по номеру задания, например %1.
  • fg переводит фоновое или остановленное задание на передний план и снова подключает его к терминалу.

Зачем это спрашивают: Управление заданиями позволяет работать с несколькими командами в одном терминале и отличает номера заданий оболочки от системных PID.

concurrency

Сигналы являются асинхронными уведомлениями для процессов, а команда kill отправляет эти сигналы.

  • SIGTERM, сигнал 15, запрашивает штатное завершение и может быть обработан, чтобы процесс успел корректно закончить работу.
  • SIGKILL, сигнал 9, немедленно завершает процесс, и его нельзя перехватить, заблокировать или игнорировать.
  • SIGHUP, сигнал 1, исторически сообщает об отключении терминала, а также часто используется для запроса перезагрузки конфигурации.
  • По умолчанию kill отправляет SIGTERM, но имя или номер позволяет явно выбрать другой сигнал.

Зачем это спрашивают: Разные сигналы передают разные запросы, поэтому kill не всегда означает немедленное принудительное завершение.

Код завершения является целым числом, с помощью которого команда сообщает оболочке об успехе или виде ошибки.

  • По соглашению код 0 означает успех, а ненулевой код означает, что команда не завершилась успешно.
  • Специальный параметр $? раскрывается в код завершения последней выполненной команды или конвейера.
  • Следующая команда заменяет значение, доступное через $?, поэтому его нужно прочитать или сохранить сразу.
  • Конструкции оболочки &&, || и if используют коды завершения для выбора следующей команды или ветви.

Зачем это спрашивают: Коды завершения дают скриптам и интерактивной оболочке стандартный способ принимать решения по результатам команд.

inference

Команды обычно используют три стандартных потока, которые оболочка может соединять с файлами или другими командами.

  • Стандартный ввод имеет файловый дескриптор 0 и обычно получает данные из терминала.
  • Стандартный вывод имеет дескриптор 1 для обычных результатов, а стандартный поток ошибок имеет дескриптор 2 для ошибок и диагностических сообщений.
  • Операторы <, >, >> и 2> перенаправляют ввод, заменяют вывод, дописывают вывод или перенаправляют ошибки.
  • Конвейер | соединяет стандартный вывод команды слева со стандартным вводом команды справа.

Зачем это спрашивают: Раздельные потоки и соединения оболочки позволяют комбинировать небольшие команды и отделять обычные результаты от диагностических сообщений.

config

Переменная оболочки принадлежит текущей оболочке, а экспортированная переменная окружения наследуется дочерними процессами.

  • Присваивание NAME=value создает или обновляет переменную в текущей оболочке.
  • export NAME или export NAME=value помечает переменную для включения в окружение команд, которые будут запущены после этого.
  • Дочерние процессы наследуют копии экспортированных значений, но не получают неэкспортированные переменные оболочки.
  • Дочерний процесс не может напрямую изменить переменную или значение окружения в родительской оболочке.

Зачем это спрашивают: Экспорт определяет, какие значения оболочки пересекают границу процесса и попадают в запущенные из нее программы.

Кавычки и экранирование определяют, какие символы оболочка интерпретирует перед передачей аргументов команде.

  • Одинарные кавычки сохраняют каждый символ внутри них буквально до закрывающей одинарной кавычки.
  • Двойные кавычки сохраняют пробелы и символы шаблонов, но допускают раскрытие переменных и подстановку команд.
  • Обратная косая черта снимает специальное значение следующего символа там, где это допускают правила кавычек оболочки.
  • Незаключенные в кавычки шаблоны, например *.log, оболочка раскрывает в подходящие имена путей до запуска команды.

Зачем это спрашивают: Правильные кавычки определяют, передаст ли оболочка текст буквально или преобразует его с помощью раскрытия.

Закрытые вопросы

  • 21

    Что такое шебанг, бит исполнения, позиционные аргументы и код завершения Bash-скрипта?

    bashscripting
  • 22

    Что делают apt update, apt install, apt remove и apt upgrade в Debian и Ubuntu?

    packages
  • 23

    Какие роли выполняют DNF, YUM и RPM в Linux-системах семейства RHEL?

    linuxpackagessystem-design
  • 24

    Что такое репозитории пакетов, метаданные репозитория и подписи пакетов?

  • 25

    Что такое юниты и сервисные юниты systemd и что делают основные команды systemctl для сервисов?

    linuxsystem-design
  • 26

    Чем systemctl enable и disable отличаются от запуска и остановки службы?

    linuxsystem-design
  • 27

    Что такое цели systemd и что означают After, Requires и Wants в зависимостях юнитов?

    dependencieslinuxsystem-design
  • 28

    Как journalctl фильтрует записи журнала systemd по юниту, загрузке, времени и приоритету?

    linuxloggingsystem-design
  • 29

    Что представляют собой традиционные файлы в /var/log и для чего нужен logrotate?

  • 30

    Что обозначают IPv4-адрес, префикс подсети и шлюз по умолчанию?

    gatewaynetworkingip-addressing
  • 31

    Чем различаются частные, публичные и loopback-адреса IPv4?

  • 32

    Каковы основные различия между TCP и UDP и где обычно применяется каждый протокол?

    networkingprotocols
  • 33

    Что такое порты и слушающие сокеты и как их можно посмотреть в Linux?

    linux
  • 34

    Что делает DNS-резолвер и какие данные хранят записи A, AAAA, CNAME, MX и PTR?

    dnsnetwork-services
  • 35

    Что такое аренда DHCP и какие основные сетевые параметры обычно выдаёт DHCP?

    network-services
  • 36

    Что такое SSH и как идентификация сервера и аутентификация пользователя связаны с SSH-соединением?

    sshremote-accessauth
  • 37

    Как работают открытый и закрытый SSH-ключи пользователя и какие права должны защищать их файлы?

    sshremote-accesspermissions
  • 38

    Чем управляет sshd_config и какие базовые настройки делают доступ по SSH безопаснее?

    sshremote-access
  • 39

    Что делает межсетевой экран хоста и как с ним связаны правила с отслеживанием состояния, UFW и firewalld?

    network-securitynetworking
  • 40

    Как устроена пользовательская запись cron и что нужно знать о её окружении и выводе?

    cronscheduling
  • 41

    В чём основное различие между таймерами systemd и заданиями cron?

    linuxcronscheduling
  • 42

    Что такое блочные устройства и разделы, и что показывают lsblk и blkid?

    partitioning
  • 43

    Что означают создание, монтирование и размонтирование файловой системы?

    storage
  • 44

    Какие поля содержит запись /etc/fstab и почему в ней часто используют UUID?

    primary-keys
  • 45

    Чем отличаются df и du и что такое исчерпание inode?

    storage
  • 46

    Чем отличаются полные и инкрементальные резервные копии и какие базовые правила делают копирование надёжным?

    backupsbackup
  • 47

    Чем архив tar отличается от синхронизации с помощью rsync?

    linuxbackup
  • 48

    Что такое гипервизор и чем гипервизоры первого типа отличаются от второго типа?

    virtualization
  • 49

    Из каких ресурсов состоит виртуальная машина и что такое гостевая операционная система?

    system-designvirtualization
  • 50

    Чем снимок виртуальной машины отличается от резервной копии?

    backupsbackupvirtualization
  • 51

    После перезагрузки веб-сервис под управлением systemd не запускается. Как вы будете искать причину?

    linuxsystem-design
  • 52

    Сервис сообщает об успешном запуске, но через несколько секунд завершается. Что вы проверите?

  • 53

    Нужно применить изменение конфигурации рабочего сервиса. Как сделать это безопасно?

    config
  • 54

    Пользователи жалуются на медленную работу сервера, предположительно из-за высокой нагрузки на процессор. Как вы проведете диагностику?

  • 55

    На сервере занято много памяти и начала использоваться подкачка. Как вы будете диагностировать нехватку памяти?

    memory
  • 56

    Процесс не отвечает, и его необходимо остановить. Как вы поступите?

    concurrency
  • 57

    Сервер работает медленно, и вы подозреваете дисковый ввод-вывод. Как провести диагностику базовыми инструментами?

    storage
  • 58

    Файловая система заполнена. Как найти источник расхода места, не сканируя посторонние точки монтирования?

    storage
  • 59

    На файловой системе есть свободное место, но приложения не могут создавать новые файлы. Как проверить исчерпание inode?

    storage
  • 60

    Смонтированная файловая система внезапно перешла в режим только для чтения. Как вы отреагируете?

    storage
  • 61

    Linux-сервер внезапно потерял сетевое подключение. Как вы проведете диагностику, не меняя конфигурацию преждевременно?

    configlinux
  • 62

    Сервер перестал разрешать имена хостов. Как вы докажете, что проблема связана именно с DNS, и исследуете ее?

    dnsnetwork-services
  • 63

    Пользователи не могут подключиться к TCP-порту удаленного приложения, хотя хост отвечает на ping. Как вы найдете место сбоя?

    networkingprotocols
  • 64

    SSH-подключение либо сообщает connection refused, либо долго ожидает и завершается по тайм-ауту. Чем будет отличаться ваша диагностика этих симптомов?

    sshremote-access
  • 65

    SSH соединяется с сервером, но аутентификация по публичному ключу отклоняется. Как вы безопасно найдете причину?

    sshremote-accessauth
  • 66

    Сайт под управлением NGINX недоступен после изменения. В какой последовательности вы будете искать причину?

    web-server
  • 67

    NGINX отвечает, но для одного домена отдает не тот сайт. Как вы диагностируете выбор виртуального хоста?

    web-server
  • 68

    Linux-хост с DHCP не получает адрес после загрузки. Как вы будете исследовать проблему?

    configlinuxnetwork-services
  • 69

    Нужно разрешить доступ к одной новой службе через UFW или firewalld. Как сделать это без лишнего расширения доступа?

    network-securitynetworking
  • 70

    Пользователи сообщают о периодических задержках и потере пакетов при доступе к Linux-службе. Как вы соберете полезные данные без дополнительного риска?

    latencytroubleshootinglinux
  • 71

    Разработчику нужно перезапускать один сервис приложения на Linux-сервере, но полный доступ администратора ему давать нельзя; как вы создадите учетную запись и выдадите только нужные права?

    linux
  • 72

    Сотрудник увольняется сегодня, но в его домашнем каталоге находятся проектные файлы, которые могут понадобиться команде; как вы безопасно отключите доступ?

  • 73

    Команде нужен общий каталог в Linux, где новые файлы остаются доступными участникам команды, но закрыты для остальных пользователей; как вы его настроите?

    configlinux
  • 74

    Пользователь получает Permission denied при открытии /srv/projects/report/data.csv, хотя сам файл выглядит доступным для чтения; как вы найдете причину?

    permissions
  • 75

    Скрипт обслуживания должна запускать группа эксплуатации, но изменять его могут только администраторы; как вы установите его и настроите права?

    permissions
  • 76

    Вы обнаружили, что права конфигурационного файла случайно изменили на 777; как вы исправите их без догадок?

    config
  • 77

    Новый сотрудник прислал вам открытый SSH-ключ для доступа к Linux-серверу; как вы безопасно его добавите?

    sshlinuxremote-access
  • 78

    Пользователь, который входил вчера, теперь видит сообщение о блокировке или истечении учетной записи; как вы исследуете проблему и восстановите доступ при наличии разрешения?

  • 79

    Сканирование показало неожиданный TCP-порт, который прослушивается на Linux-сервере; как вы определите сервис и уменьшите доступность извне?

    networkingprotocolslinux
  • 80

    Вам поручили плановые обновления безопасности Linux-сервера; как вы безопасно примените их и решите, нужна ли перезагрузка?

    linux
  • 81

    Нужно архивировать журналы приложения старше 14 дней, не затрагивая активные файлы и не перезаписывая существующий архив. Как вы напишете и проверите Bash-скрипт?

    bashscripting
  • 82

    Bash-скрипт обслуживания принимает целевой каталог и режим, а затем запускает несколько команд. Как сделать обработку входных данных и ошибок надежной для запуска по расписанию?

    scripting
  • 83

    Нужно ежедневно запускать /opt/acme/bin/backup.sh через cron в 02:15. Как настроить cron, чтобы окружение было предсказуемым, вывод сохранялся, а запуски не пересекались?

    backupsbackupcron
  • 84

    Команда резервного копирования работает в вашей оболочке, но задание cron не создает копию. Как найти различие, не переписывая скрипт сразу?

    backupsbackupcron
  • 85

    Приложение запускается командой /opt/widget/bin/widget-server и должно постоянно работать из /opt/widget под непривилегированной учетной записью. Какой базовый unit systemd вы создадите и как его проверите?

    linuxsystem-design
  • 86

    Приложению под управлением systemd нужны параметры базы данных и API-токен, а его unit-файл только что изменился. Как безопасно передать значения и применить изменение?

    linuxapidatabase
  • 87

    Приложение непрерывно пишет в /var/log/widget/app.log от пользователя widget. Как настроить logrotate, чтобы хранить и сжимать журналы, но не оставить приложение пишущим в старый файл?

    config
  • 88

    В большом текстовом журнале доступа адрес клиента находится в поле 1, а HTTP-статус в поле 9. Как найти самые частые статусы ошибок и адреса клиентов, которые их создают?

    http
  • 89

    Мониторинг сообщает о повторных неудачных входах по SSH на Linux-сервер. Как выяснить кто, когда и откуда подключался, сохранив достаточно контекста для эскалации?

    monitoringsshlinux
  • 90

    Нужен небольшой playbook Ansible, который устанавливает nginx на нескольких Debian-узлах и обеспечивает его запуск сейчас и после перезагрузки. Как реализовать и проверить это идемпотентно?

    ansibleautomationidempotency
  • 91

    К Linux-серверу подключили новый пустой диск, который должен хранить данные приложения. Как вы безопасно подготовите и смонтируете его?

    storagelinux
  • 92

    Новая файловая система работает при ручном монтировании, и теперь она должна подключаться после перезагрузки. Что вы сделаете?

    storage
  • 93

    После запуска системы отсутствует файловая система, которая должна быть смонтирована. Как вы найдете причину, не рискуя данными?

    storage
  • 94

    Нужно настроить через rsync регулярную базовую копию /srv/data на другую смонтированную файловую систему. Как вы сделаете это безопасно?

    storagelinuxbackup
  • 95

    Задание резервного копирования завершилось успешно, и вас просят доказать, что файлы действительно восстанавливаются. Что вы сделаете?

    backupsbackup
  • 96

    Пользователю нужно восстановить один каталог из большого tar-архива, не перезаписав посторонние рабочие пути. Как вы поступите?

  • 97

    В команде ежедневно создаются резервные копии, но никто давно не проверял, пригодны ли они. Какую процедуру проверки вы предложите?

    backupsbackup
  • 98

    Виртуальная машина нормально загружается, но не может обратиться ни к одному сетевому ресурсу. Как вы локализуете неисправность?

    virtualization
  • 99

    Виртуальная машина сообщает, что ее корневая файловая система почти заполнена. Как вы поступите, если может потребоваться дополнительная емкость?

    capacitystoragevirtualization
  • 100

    Пользователи сообщают, что production-сервер работает крайне медленно и иногда не отвечает. Опишите первичную системную диагностику.

    system-design