День 0 · установка · after-install.md

После установки — общее для всех

Рабочий стол внутри виртуалки загрузился, вы вошли. Теперь двадцать минут работы, одинаковых для Windows, macOS и Linux.

Всё дальнейшее делается внутри виртуальной машины. Терминал открывается сочетанием Ctrl + Alt + T, либо: кнопка «Обзор» в левом верхнем углу → напечатать Терминал → Enter.


Про копирование в терминал

Пригодится прямо сейчас, потому что команды ниже проще копировать, чем перепечатывать.

В терминале привычные Ctrl+C и Ctrl+V не работают — они там заняты под другое. Ctrl+C вообще прерывает выполняющуюся команду.

Действие В терминале Linux
Скопировать Ctrl + Shift + C
Вставить Ctrl + Shift + V
Вставить или просто правая кнопка мыши

Из браузера или текста копируется обычным Ctrl+C, а вот вставлять в терминал надо через Ctrl+Shift+V.

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


1. Почему нельзя оставлять всё как есть

Если вы взяли готовый образ, у него логин и пароль, написанные на странице скачивания. Обычно osboxes / osboxes.org или ubuntu / ubuntu.

Эти пароли знает весь интернет: образ скачали десятки тысяч человек, значения лежат в списках, по которым автоматика перебирает пароли.

Машина локальная и снаружи не видна — но:

Учиться правильно проще, чем переучиваться. Меняем.

Ставили систему сами (вариант Б) — свой пользователь у вас уже есть, пункты 1–5 можно пропустить и идти к пункту 6.


2. Разберитесь с root

root — пользователь-администратор, которому можно всё. В Ubuntu его учётная запись по умолчанию заблокирована: войти под ним нельзя, и это правильно. Права администратора берут точечно, через sudo.

Проверьте, работает ли sudo:

▶ Выполните
sudo whoami

Спросило пароль и ответило root — всё в порядке, идите к пункту 3.

Ответило user is not in the sudoers file — прав нет. Тогда:

▶ Выполните
su -

Введите пароль root (в готовых образах он обычно тот же, что у пользователя). Оказавшись под root:

▶ Выполните · выделенное замените своим
usermod -aG sudo ВАШЕ_ИМЯ
exit

Вместо ВАШЕ_ИМЯ — имя пользователя, под которым вы вошли в систему.

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


3. Заведите своего пользователя

Зачем отдельный, если один уже есть:

Имя короче — меньше печатать. Вы будете вводить его при каждом sudo, по многу раз в день, два месяца.

Это ваш пользователь, а не чужой. Старый останется в системе с общеизвестным паролем — его мы уберём.

▶ Выполните · выделенное замените своим
sudo adduser ВАШЕ_ИМЯ

Вместо ВАШЕ_ИМЯ — своё имя: коротко, латиницей, маленькими буквами.

Команда спросит:

Права администратора:

▶ Выполните · выделенное замените своим
sudo usermod -aG sudo ВАШЕ_ИМЯ

Вместо ВАШЕ_ИМЯ — то же имя, что в adduser.

Проверьте:

▶ Выполните · выделенное замените своим
id ВАШЕ_ИМЯ

Вместо ВАШЕ_ИМЯ — то же имя.

Среди групп должна быть sudo.


О длине пароля — честно

На этой машине можно поставить короткий пароль. Она локальная, живёт внутри вашего ноутбука, из интернета недоступна. Удобство здесь важнее.

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

На девятый день программы вы научитесь входить по SSH-ключу и отключите вход по паролю. Это и есть правильный ответ на вопрос «какой пароль ставить» — никакой.

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


4. Перезайдите под собой

Меню в правом верхнем углу → «Завершить сеанс» → войти под своим пользователем.

Проверьте:

▶ Выполните
whoami
id
sudo whoami

Последняя спросит ваш новый пароль и ответит root.


5. Уберите чужого пользователя

Сначала убедитесь, что вошли под собой и sudo работает. Если удалить единственного администратора, не проверив, вы потеряете доступ к машине.

Команда Что должна ответить
whoami ваше имя
sudo whoami root

Убедились — удаляем старого вместе с домашним каталогом:

▶ Выполните · выделенное замените своим
sudo deluser --remove-home СТАРОЕ_ИМЯ

Вместо СТАРОЕ_ИМЯ — реальное имя из образа: osboxes, ubuntu, какое было.

Удалять боязно — просто заблокируйте вход:

▶ Выполните · выделенное замените своим
sudo passwd -l СТАРОЕ_ИМЯ

Вместо СТАРОЕ_ИМЯ — то же имя из образа.


6. Дайте машине понятное имя

По умолчанию машина называется osboxes или ubuntu. Имя видно в терминале, и на третьей неделе, когда машин станет две, вы будете по нему различать, где находитесь.

▶ Выполните
sudo hostnamectl set-hostname lab

Перезайдите — в терминале появится ВАШЕ_ИМЯ@lab:~$.


7. Установите тренажёр

Весь курс — материал, задания, проверки — живёт в одном архиве. Ставится он внутрь виртуальной машины.

7.1. Скачайте архив

Внутри виртуальной машины откройте браузер — Firefox есть на панели слева — и перейдите по адресу, который дал куратор. Откроется вот такая кнопка:

Скачать тренажёрcourse.tar.gz · 1.3 МБ

Нажмите. Файл сохранится в папку Загрузки (~/Downloads).

Проверьте, что он на месте. Откройте терминал (Ctrl + Alt + T):

▶ Выполните
ls -lh ~/Downloads/course.tar.gz

Должна появиться строка с размером файла. Если вместо неё No such file or directory — файл сохранился под другим именем, посмотрите, что вообще скачалось:

▶ Выполните
ls -lh ~/Downloads

7.2. Что такое .tar.gz

Двойное расширение, и каждая часть означает своё.

.tar — несколько файлов, склеенных в один. Название от tape archive, с тех времён, когда данные писали на магнитную ленту. Сам по себе .tar ничего не сжимает, он просто складывает всё в одну коробку.

.gz — эта коробка потом сжата программой gzip.

Получается «сжатая коробка с файлами». В Windows примерно то же делает .zip, только там одна программа выполняет оба шага.

Распаковывает всё это команда tar:

Пример · только посмотреть, набирать не нужно
stagiaire@lab:~$ tar -xzf архив.tar.gz

Три буквы после дефиса — три указания:

Буква Что означает От какого слова
x распаковать extract
z сначала разжать gzip gzip
f дальше идёт имя файла file

Запомнить помогает присказка «xtract ze file». Обратная операция — tar -czf, где c от create.

Посмотреть, что внутри архива, не распаковывая его:

▶ Выполните
tar -tzf ~/Downloads/course.tar.gz | head -20

Здесь t от list — показать содержимое. Полезная привычка: прежде чем распаковывать чужой архив, посмотрите, что в нём и куда оно ляжет.

7.3. Установите

Скопируйте блок целиком и вставьте в терминал через Ctrl + Shift + V. Команды можно вставлять сразу все — они выполнятся по очереди.

▶ Выполните
sudo rm -rf /opt/course
sudo mkdir -p /opt/course
sudo tar -xzf ~/Downloads/course.tar.gz -C /opt/course --strip-components=1
sudo install -m 755 /opt/course/course /usr/local/bin/course
sudo chmod -R a+rX /opt/course
sudo find /opt/course -name '*.sh' -exec chmod 755 {} +

Что здесь происходит, по строкам:

Строка Что делает
rm -rf /opt/course сносит прежнюю версию целиком
mkdir -p /opt/course создаёт каталог, куда ляжет курс
tar -xzf ... -C /opt/course распаковывает архив; -C означает «распаковывай вот в этот каталог», иначе всё легло бы туда, где вы стоите
--strip-components=1 выбрасывает верхнюю папку из архива, чтобы не получилось /opt/course/course/...
install -m 755 ... кладёт команду course туда, где система её найдёт
chmod -R a+rX разрешает читать файлы курса
find ... chmod 755 разрешает запускать скрипты проверок

Почему первая строка сносит каталог. Распаковка поверх добавляет новые файлы, но не убирает те, которых в новой версии больше нет. Если материал дня переписали и страниц стало меньше, старые останутся лежать рядом — и день покажет вперемешку старое и новое. Ваши ответы, время и прогресс живут не здесь, а в ~/.course, поэтому удаление /opt/course для них безопасно.

Эта же команда — правильный способ обновить курс, когда вам скажут, что вышла новая версия: скачать архив и повторить весь блок с первой строки.

Спросит пароль — вводите вслепую, символы не отображаются.

Проверьте, что распаковалось куда надо:

▶ Выполните
ls /opt/course

Ожидается blocks, lib, course, tools. Если вместо них один вложенный каталог — распакуйте заново, не пропустив --strip-components=1.

7.4. Включите журнал команд

Проверки смотрят не только на результат, но и на то, какие команды вы выполняли. Для этого нужен журнал:

▶ Выполните
course setup-shell
source ~/.bashrc

Про журнал честно. Он пишет выполненные команды в ~/.course/cmdlog и раз в день уходит куратору — так мы видим прогресс группы и кому нужна помощь. Это обучение для компании, поэтому важна не скорость, а понимание. Пользоваться подсказками курса, искать в интернете, спрашивать коллег — можно и нужно. Сдавать чужую (в том числе сгенерированную) работу как свою — нет: в конце будет разбор знаний голосом, и там это сразу видно. Посмотреть, что именно отправляется, можно всегда — это ваш же файл: cat ~/.course/cmdlog.

7.5. Проверьте, что всё встало

▶ Выполните
course doctor

Все строки зелёные — отлично. Если написано, что журнал команд не включён, повторите пункт 7.4 и закройте-откройте терминал.

▶ Выполните
course status

Показался список учебных дней — тренажёр готов.

Если что-то пошло не так

Что видите Что делать
course: command not found вернитесь к 7.3, проверьте, что все пять строк выполнились без ошибок
tar: ... No such file or directory архив лежит не в ~/Downloads или называется иначе — посмотрите ls ~/Downloads
День 01 не найден распаковалось не туда: ls /opt/course должен показать blocks и lib
Permission denied при запуске sudo chmod 755 /usr/local/bin/course

8. Материал в браузере, если так удобнее

Читать можно прямо в терминале — course start, и это основной способ. Но если хочется листать страницы в браузере, внутри машины поднимается локальный просмотрщик:

▶ Выполните
course web

Затем откройте в браузере виртуалки http://localhost:8080. Остановить — Ctrl + C в терминале.

Наружу ничего не публикуется, сервер слушает только саму машину.


9. Сделайте снапшот

Сейчас самый правильный момент: система настроена, пользователь заведён, тренажёр стоит, ничего ещё не сломано.

Дальше делайте снапшот в конце каждого учебного дня.


Готово

Команда Что ответит
whoami ваше имя
hostname lab
sudo whoami root
uname -a строка, начинающаяся с Linux
course status список учебных дней

Всё сходится — можно начинать:

▶ Выполните
course start 01

Аккаунт GitLab — завести заранее

С тридцать первого дня работа идёт с настоящим общим репозиторием, а не с учебным каталогом. К этому моменту нужен аккаунт GitLab: заведите его сейчас, чтобы не тратить время в день занятия.

  1. Регистрация: <https://gitlab.com/users/sign_up> — нужна почта, к которой у вас есть доступ. Логин потом видно в ссылках на вашу работу; берите тот, который не стыдно показать работодателю.
  2. Включите двухфакторную аутентификацию: <https://gitlab.com/-/user_settings/profile>, раздел Account. Без неё аккаунт живёт до первой утечки пароля.
  3. Проверьте, что GitLab у вас открывается из той сети, в которой будете заниматься:
▶ Выполните
curl -sI https://gitlab.com | head -1

Ответ вида HTTP/2 200 — всё в порядке. Если ответа нет, скажите куратору до старта: в курсе есть запасной путь с центром на своей машине, но предупредить лучше заранее.

Токен доступа создавать сейчас не нужно — это делается в тридцать первый день, там же объясняется зачем.