ОП.05Эксплуатация Linux-сервера

Материалы · эксплуатация Linux-сервера

Методичка

Как вести работу по ТЗ самостоятельно: с чего начать, где искать ответ, как не сломать сервер, как работать в паре через Git и как защитить работу.

Перед началом

  • Сделайте снимок виртуальной машины: VirtualBox, меню «Машина» → «Сделать снимок». Если сломаете sudo или вход в систему, вернётесь к снимку за минуту.
  • Стенд можно разворачивать заново сколько угодно раз. Запутались — разверните стенд и повторите по журналу.
  • Стенды запускаются только в виртуальной машине: они создают и удаляют учётные записи и правила sudo.
  • Если в машине нет git: sudo apt install git.

Порядок работы

  1. Прочитать ТЗ целиком. Оба в паре, до первой команды. Непонятные слова выписать и найти в лекциях.
  2. Составить чек-лист. Каждое требование — строка с номером из ТЗ. По нему пара делит работу и отмечает сделанное.
  3. Осмотреть сервер, ничего не меняя. Что лежит, что работает, от чьего имени, что пишут журналы. Записать в журнал работ.
  4. Составить план. Порядок шагов важен: то, от чего зависят другие шаги, делают первым.
  5. Делать маленькими шагами. Одна команда — проверка результата — строка в журнале. Ошибку проще найти сразу, чем через двадцать команд.
  6. Проверять от имени того, для кого делаете. От своего имени с sudo доступно всё, поэтому доступ роли проверяют через sudo -u ИМЯ.
  7. Прогнать приёмку. FAIL — найти требование по названию пункта и разобраться, почему оно не выполнено.
  8. Финальный прогон с нуля. Стенд заново, решение по скрипту или журналу, приёмка, снимок.

Где искать ответ

man командаполная справка; поиск по тексту — / и слово, следующее совпадение — n, выход — q
команда --helpкраткий список ключей
man -k словокакие команды связаны со словом, например man -k group
man 5 sudoersформат файла настроек: раздел 5 — форматы файлов
сообщение программычитать целиком: в нём обычно есть путь, имя или номер процесса
журналы службкаталоги журналов из ТЗ; tail, less, grep
исходный текст программпрограммы на серверах из ТЗ — скрипты, их можно прочитать: less /usr/local/bin/ИМЯ
лекции курсав каждом ТЗ раздел «Куда смотреть» ссылается на нужные части

Безопасные привычки

  • Перед rm и find -delete выполнить ту же команду со списком и прочитать его.
  • Перед правкой файла настроек сделать копию: sudo cp -a файл файл.bak.
  • Правила sudo — только через visudo.
  • chmod 777 и chmod -R на системных каталогах не решают проблему доступа, а создают новую.
  • Сначала TERM, затем проверка, и только потом KILL.
  • Не работать постоянно из sudo -i: каждая команда через sudo попадает в журнал, команды внутри sudo -i — нет.

Частые сообщения

СообщениеЧто значитС чего начать
Permission deniedу процесса нет нужного права на файл или на один из каталогов путиnamei -l путь, затем id того, от чьего имени работаете
Operation not permittedдействие разрешено только root или владельцу: смена владельца, сигнал чужому процессувыполнить через sudo, если это ваша задача по ТЗ
command not foundпрограммы нет в каталогах PATH или опечаткаtype имя, полный путь /usr/local/bin/имя
sudo: … is not in the sudoers fileу пользователя нет правил sudosudo -l -U имя; правило — через visudo
parse error in /etc/sudoers.d/…синтаксическая ошибка в правиле, sudo может отказать всемправить через visudo -f; если sudo уже сломан — откат к снимку ВМ
useradd: user … already existsшаг уже выполненв скрипте: id имя || useradd …
userdel: user … is currently used by processу пользователя есть процессыpgrep -u имя, завершить, затем повторить
No space left on deviceфайловая система заполненаdf -h путь, du -sh путь/* | sort -h
Device or resource busyраздел или каталог занят процессомвыйти из каталога, найти процессы, у которых он открыт
address already in useпорт занят другим процессомsudo ss -ltnp, найти и остановить процесс
Terminated / Killedпроцесс снят сигналом TERM / KILLкод завершения 143 / 137

Git в паре

Репозиторий создаёт практикант 1: GitHub → New repository, затем Settings → Collaborators → добавить напарника. Каждый работает в своей ветке.

git clone https://github.com/ВЛАДЕЛЕЦ/РЕПОЗИТОРИЙ.git
cd РЕПОЗИТОРИЙ
git switch -c engineer-1
# … работа: файлы, снимки, журнал
git add .
git commit -m "ТЗ 1: учётные записи и правило sudo"
git push -u origin engineer-1

Дальше на GitHub: Compare & pull request. Напарник открывает вкладку Files changed, повторяет команды на своём стенде и оставляет замечания или Approve. После одобрения — Merge, и оба обновляют main: git switch main, git pull.

Конфликт в runbook.md возникает, когда оба дописали строки в одно место. Git покажет обе версии между метками <<<<<<< и >>>>>>>: оставьте строки обоих в порядке времени, удалите метки, затем git add и git commit.

Защита работы

  • Каждый в паре объясняет любую строку журнала, а не только свою часть.
  • Типичные вопросы: почему права именно такие; что будет, если убрать этот шаг; как вы нашли причину; как проверили, что требование выполнено.
  • Пункт приёмки, выполненный без понимания, считается невыполненным.