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

В комментариях к предыдущему посту (Системный администратор Linux. Вопросы) собрались в основном писатели, а не читатели. Чаще всего звучал вопрос: «а это на какой уровень?». Ответ простой - ни на какой. Это всего часть вопросов от простого к сложному. И в данном посте тоже будет только часть.


Вторыми по популярности была критика вида «Ваши вопросы говно» и рекомендации как именно надо проводить собеседования и что спрашивать. По личному опыту, такое обычно звучит от «Диванных эникеев». По этому если у Вас пригорает - я на верном и пути. А главное, помните, Ваше мнение важно для всех людей в этой комнате:

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

Ну а тем, кому интересны вопросы, продолжаем.


В: Как сменить забытый пароль root?

О: Загрузиться с LiveCD, смонтировать файловую систему, сделать chroot, сменить командой passwd. Если файловая система поверх LVM - может понадобиться активировать LV.

В+: А если нет возможности использовать LiveCD?

О+: Можно попробовать загрузиться в Single Mode. В RHEL-based дистрибутивах надо в grub нажать E, найти init и исправить на init=/bin/bash, а так же опцию ro исправить на rw. После этого нажимаем X, система загрузится и сразу запустится shell от root. Далее меняем пароль командой passwd.


В: Вы подключаетесь к серверу по ssh и первое, что надо понять, это физический сервер или виртуальный. Для виртуального надо определить тип гипервизора.

О: Виртуалку можно определить по косвенным признакам. Например, не соответствие количества ядер и названия процессора. Не типовые объёмы диска или памяти. Опять же, вывод dmidecode будет меньше, чем на физическом сервере. В выводе будет фигурировать название гипервизора. Командами lspci, lsusb и dmesg так же можно посмотреть вендора оборудования там тоже будет упоминание гипервизора или вендора гипервизора.

В+: А более гарантировано и проще?

О+: Команда lscpu показывает, что процессор виртуализирован и название вендора гипервизора. На RHEL-based дистрибутивах есть команда virt-what, которая возвращает так же вендор гипервизора.


В: Вы подключились к серверу по ssh, видите, что это нечто линуксоподобное, но надо понять какая именно система перед нами.

О: Можно командой uname -a определить тип архитектуры и версию ядра. Если архитектура sparc - скорее всего перед нами Solaris. Если в названии ядра есть darwin - это macOS. Если в номере версии ядра есть el6, 7 или 8 - это что-то на базе RHEL. Буквы EL - Enterprise Linux. Цифра - мажорная версия. Можно по пакетному менеджеру. Yum, apt, yast, pkg и т.д.

В+: А явно?

О+: В папке /etc должен быть файл с названием, в котором есть слово release. Это centos_release, lsb_release и т.п. Можно сделать cat /etc/*release* и это покажет как название дистрибутива, так и его полную версию. Это работает на Solaris и большинстве Linux дистрибутивов. На mac для этого есть команда sw_vers.


В: При попытке запустить например apache он ругается, что 80 порт занят. Как посмотреть кем?

О: Командой netstat с ключами -p (port) и -l (listen).

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

О+: В частном случае можно поискать в /etc конфиги других web серверов. Или можно воспользоваться командой ss с теми же ключами -lp.

В++: Есть ли какие либо ограничения при использовании этих команд?

О++: Да, PID будет показан только если команда исполняется от superuser, например от root. Либо надо дать право на работу с сокетами непривилегированным пользователям.


В: Выстрел самому себе ногу. Сделали chmod -x /bin/chmod. Как вернуть без перезагрузки?

О: Скопировать с другого сервера или с подключённого внешнего носителя.

В+: А без внешних операций?

О+: В linux при копировании происходит копирование его атрибутов. Можно скопировать любой файл в /bin и командой cat влить в него содержимое /bin/chmod. После чего получившимся файлом вернуть права на исходный.


В: Какие есть варианты авторизации по ssh?

О: По логину и паролю, по логину и ключу.

В+: А ещё?

О+: Через pam можно добавить любой другой метод. Например двухфакторную авторизацию сделать или доменную авторизацию без ввода в домен.


В: Как посмотреть все WWN сервера?

О: systool -c fc_host -v | grep ‘port_name’ или cat /sys/class/fc_host/host*/port_name

В+: А что такое WWN?

О+: Грубо говоря, это аналог mac-адреса, но в san сетях.


В: Мне надо запустить один и тот же скрипт 10 раз параллельно. Например некий нагрузочный тест. Как сделать это и как по завершению теста завершить все скрипты одной командой?

О: Надо иметь некий родительский скрипт, который через «&» запустит дочерние. При этом надо не давать завершиться родительскому скрипту. В таком случае сделав kill -9 pid_родительского_скрипта завершатся и дочерние скрипты.

В+: А если родительский скрипт завершится? Кто станет родителем дочерних?

О+: Процессы не могут существовать без родительского. В таком случае их родителем станет init или процесс с PID 0.

В++: Как посмотреть какие процессы были запущены через «&»?

О++: Командой jobs или аналогами.


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

О: Командой pstree или ptree, в зависимости от дистрибутива.

В+: А более развёрнуто?

О+: Например через ps auxwwf


Продолжение следует. Небольших вопросов осталось примерно на один пост. Последний вопрос самый объёмный и он потянет на целый пост.

GNU/Linux

1.1K постов15.5K подписчиков

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

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

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