220

Системный администратор Linux. Вопросы

Собеседования подходят к завершению, кандидаты согласованы, офферы разосланы. А это значит, что настало время выполнить обещания и выложить вопросы к кандидатам.


Если кто пропустил, вот начало: Системный администратор Linux и продолжение: Продолжение поста «Системный администратор Linux»


В комментариях к предыдущим постам было высказано много мнений по поводу тематики и самих вопросов. Была и критика, и занудство, и здравые мысли. От себя могу сказать, что это не универсальный список вопросов для собеседования. Это то, с чем у нас приходится сталкиваться чаще всего, что надо понимать и без чего рост компетенций будет заметно усложнён. Часть вопросов просто для понимания кругозора кандидата.

Системный администратор Linux. Вопросы Linux, Windows, Сисадмин, Отдел кадров, Пригорело, Собеседование, Длиннопост

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


Вопросы будут в порядке сложности. На многие вопросы я постараюсь давать два ответа. Первый - краткий и достаточный для того, что бы его зачесть. Второй ответ - более правильный или более развёрнутый, дающий кандидату преимущество перед остальными. Некоторые вопросы/ответы будут в форме диалога.


Готовы? Ну тогда поехали!


В: Как посмотреть версию ядра?

О: uname -a

В+: А если только версию?


О+: uname -r


В: Как узнать какие модули ядра загружены?

О: lsmod

В+: Как загрузить и выгрузить модуль?

О+: Загрузить командой modprobe, выгрузить ей же, но с ключом --remove, если модуль не используется.


В: Есть сервер с двумя интерфейсами. Один интерфейс смотрит в интернет, другой в локалку. На обоих адреса прописаны статикой. Как пользователей из локалки выпустить в интернет через этот сервер?

О: Маршрут по умолчанию должен быть назначен на интерфейс с интернетом, нужно поднять NAT через iptables и SNAT/DNAT или MASQUERADE, надо включить forward пакетов.

В+: Как именно это сделать?

О+: Для примера шлюз будет на RHEL-based дистрибутиве. В других дистрибутивах есть созвучные или аналогичные опции. В настройках интерфейса с локалкой надо прописать defroute=no, на интерфейсе с интернетом defroute=yes. Либо можно указать маршрут в файле route-название_интерфейса, который располагается рядом с файлом настроек интерфейса. Настройка NAT будет зависеть от того, фиксирован ли список клиентов в локалке или нет. Если фиксирован - настройка через SNAT, если не фиксирован - MASQUERADE. Так же, если к клиенту будут обращения из внешней сети, придётся использовать DNAT. Включить forward пакетов можно временно командой echo 1 > /proc/sys/net/ipv4/ip_forward или постоянно, прописав net.ipv4.ip_forward = 1 в файл /etc/sysctl.conf и загрузить их из файла командой sysctl -p.

О++: Можно ещё поднять прокси и выпустить через него. Например squid. При этом либо явно указав этот прокси у клиентов, либо прозрачно, через iptables и POSTROUTING.


[Дословный синтаксис команд не нужен. Главное, что кандидат понимает что именно и как он будет делать. Если кандидат расскажет ещё что такое этот ip_forward - это будет дополнительным плюсом.]


В: Есть сервер с двумя интерфейсами, к каждому из которых подключён отдельный интернет провайдер. Например первый 100 мегабит, второй 50. Можно ли как-то получить суммарный внешний канал в 150 мегабит?

О: Штатно - нельзя. Но можно поставить пакет iproute2, который позволяет сделать два маршрута по умолчанию, каждый из которых будет иметь свой вес. Например вес первого интерфейса сделать вес 2, а второго - 1. Тогда трафик будет пытаться направляться в соотношении 2 к 1 относительно интерфейсов. В идеальных условиях это даст суммарные 150 мегабит. В реальных - будет зависимость и «тяжелых» сессий, которые будут привязываться к одному конкретному интерфейсу.


В: Как посмотреть какой DNS использует система? У нас настроен DHCP и «в лоб» в настройках на клиенте ничего нет. Файл /etc/resolv.conf много где считается устаревшим и там может быть пусто.

О: Попробовать отрезольвить любой адрес. Например командами nslookup, host или dig. Они показывают какой DNS сервер был использован.

В+: А если у нас какая нибудь Ubuntu, которая из коробки за собой тянет dnsmasq? В таком случае эти команды будут говорить, что DNS сервером является 127.0.1.1 или 127.0.0.53. Как быть?

О+: Если есть dnsmasq, значит у него есть конфиги и логи, в которых можно посмотреть что он использует. В крайнем случае можно использовать tcpdump и посмотреть какие есть исходящие подключения на 53 порт.


В: Как посмотреть таблицу маршрутизации на любой системе?

О: Это можно сделать командами route -n или ip r

В+: А на любой системе одной и той же командой?

О+: Команда netstat -rn работает везде, на Linux, Windows, MacOS, Solaris. Даже на Android. В некоторых системах это единственный вариант посмотреть маршруты.


В: Есть LVM. На одной VG есть 2 LV. Один смонтирован в корень системы, другой в /home. При создании разделов ошиблись и создали корень слишком маленький, а home слишком большой. Можно ли как-то перекинуть место из одного раздела в другой? Оба раздела содержат данные, которые нельзя удалять. В разделе home есть достаточно свободного места. Систему нельзя перезагружать.

О: Уменьшить можно, если файловая система позволяет уменьшать свой размер. Например ext4 позволяет это сделать, а xfs - нет. Увеличивать разделы можно «на горячую». Для уменьшения надо размонтировать /home, уменьшить файловую систему, уменьшить LV с этим разделом, смонтировать /home, увеличить LV раздела с корнем, увеличить файловую систему. Командой lvextend с ключом -r последние два действия можно совместить.

В+: А есть там xfs?

О+: Тогда придётся использовать временный диск. Скопировать на него данные из /home, пересоздать раздел меньшего размера, скопировать данные обратно. Можно командами pvs или vgs посмотреть свободное место на LVM. Возможно не всё пространство было размечено и его можно будет использовать вместо временного диска.


В: Как определить тип файловой системы, в которую отформатирован LV раздел в LVM? Команда fdisk -l показывает, что код раздела 83 или 8E, т.е. раздел Linux или LVM раздел.

О: Если раздел смонтирован можно командами df -T, mount или findmnt

В+: А если не смонтирован?

О+: Команда lsblk с ключом -f показывает тип файловой системы и метки, например для oracleasm дисков.


В: Как получить сводку о всём железе?

О: Командами группы ls. Например lspci, lsusb и т.д. Либо cat /proc/cpuinfo, cat /proc/meminfo и т.д.

В+: А более развёрнуто? Например с серийными номерами памяти и количеством плашек памяти?

О+: Можно через smbios командой dmidecode. Либо через ipmitool подключиться к менеджменту, если он есть, и через его shell достать данные.


В: Как обновить все пакеты, кроме одного? Например кроме ядра.

О: В RHEL-based командой yum update --exclude kernel*. В других дистрибутивах должен быть похожий ключ, который можно посмотреть в man’е к пакетному менеджеру.

В+: А если постоянно исключить из обновления?

О+: Можно использовать yum versionlock kernel*. В других дистрибутивах так же можно поискать в man’е по словам lock, hold или freeze.


Для начала, думаю, достаточно. Продолжение будет в следующих постах. Постараюсь сильно с ними не затягивать.

GNU/Linux

985 постов15.3K подписчиков

Добавить пост

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

Подробнее
7
Автор поста оценил этот комментарий

"Ответ новичка на вопрос

-Как выйти из vi?

-Перезагрузка(reset)." )))

раскрыть ветку (1)
6
Автор поста оценил этот комментарий

"Все мы в первый раз закрывали консоль для выхода из vi" (c)

показать ответы
Автор поста оценил этот комментарий
Насколько я помню можно собрать bond из нескольких сетевых адаптеров, объединенив их.
роутинг можно смотреть командой ip r, настройки сетевой карты ip a.
если мне память не изменяет, xfs ресайзится в обе стороны... Хотя могу ошибаться
раскрыть ветку (1)
3
Автор поста оценил этот комментарий
Три промаха из трёх. Bond не собирётся на разных провайдерах. Команда ip есть, но речь не про неё. И таки xfs только в бОльшую сторону можно менять.
DELETED
Автор поста оценил этот комментарий

Эт типа на водительское сдавать?

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Это скорее водитель и механик в одном лице.

17
Автор поста оценил этот комментарий

Вопрос о том "как выйти из vi" уже предлагали?

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Ещё нет. Но в следующий раз это будет номером 1 в списке.

показать ответы
Автор поста оценил этот комментарий

> Например командами nslookup, host или dig
Не помню про nslookup но в минимальном центос 6, например, host и dig отсутствуют и надо ставить bind-utils.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

В минимале много чего нет. Вернее мало что есть. На то он и минимал. Опять же, в 6й центосе resolv.conf ещё использовался и можно там посмотреть.

показать ответы
3
Автор поста оценил этот комментарий

В: Есть сервер с двумя интерфейсами.

хм... А вот тут я вам ничего не мог бы сказать. На голом сервере с только что установленными подключениями - легко можно как в О. Но на работающем сервере, где уже что-то бегает... Надо сначала смотреть.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Вопросы про интерфейсы - это как раз на кругозор. Тут важнее понимание сути происходящего, чем конкретные знания.

показать ответы
7
Автор поста оценил этот комментарий

Как-то слабовато.

При нормальном остальном - про LAN+WAN=Internet бред столетний с masquerade, мы ж ничего не знаем про LAN маршруты и может и там ещё гейт есть по дефолту, раскидывание по iproute2 и два WAN туда же - формально решено будет, а вот работать треть софта не будет так, да и те только по TCP, потому как бред, так делать абсолютно точно нельзя, weight по lanmac/lanip разве что, но тогда эффективность никакая даже при 20 клиентах.


Причём на вопрос 100+50 без сотрудничества с провайдером уже как раз именно формальный тестовый ответ -- НИКАК НЕЛЬЗЯ, вообще, совсем. Это уже точка зрения формализации. В НЕКОТОРЫХ СЛУЧАЯХ когда много коннектов, TCP/Static endpoint UDP, все соединения исходящие итд можно воспользоваться таким, но это нечасто, и уж подавно нельзя от балды по весу раскидывать коннекты как в случае выше.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Для начала и это нормально. А вот если ты понимаешь и начинаешь задавать правильные вопросы в ответ - это только плюс тебе, как кандидату.

показать ответы
5
Автор поста оценил этот комментарий
За знания линуха на этом уровне. Имхо если сравнивать с виндой то это уровень продвинутого эникея.
раскрыть ветку (1)
4
Автор поста оценил этот комментарий

Очевидно, предыдущие посты ты не читал? Там была и цена и уровень и регион и описание сути вопросов. Вопросы этого поста - начального уровня. Дальше будет сложнее.

показать ответы
6
Автор поста оценил этот комментарий
Сколько платят за это?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Сколько платят за что?

показать ответы
21
Автор поста оценил этот комментарий

и тут я понял что на самом то деле я ни разу не прошареный пользователь ПК, а баба Клава с соседнего подьезда

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Если не отличаешь ПК от сервера - да.

показать ответы