После установки — общее для всех
Рабочий стол внутри виртуалки загрузился, вы вошли. Теперь двадцать минут работы, одинаковых для 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 ВАШЕ_ИМЯВместо ВАШЕ_ИМЯ — своё имя: коротко, латиницей, маленькими буквами.
Команда спросит:
- пароль — придумайте и введите дважды (вслепую, символы не отображаются);
- Full Name и прочее — можно просто нажимать Enter;
- Is the information correct? —
Y.
Права администратора:
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 ~/Downloads7.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. Сделайте снапшот
Сейчас самый правильный момент: система настроена, пользователь заведён, тренажёр стоит, ничего ещё не сломано.
- VirtualBox: выделить машину → «Снимки» → «Сделать» → назвать
чистая система - UTM: остановить машину → правой кнопкой → Clone → назвать
lab-чистая
Дальше делайте снапшот в конце каждого учебного дня.
Готово
| Команда | Что ответит |
|---|---|
whoami |
ваше имя |
hostname |
lab |
sudo whoami |
root |
uname -a |
строка, начинающаяся с Linux |
course status |
список учебных дней |
Всё сходится — можно начинать:
course start 01Аккаунт GitLab — завести заранее
С тридцать первого дня работа идёт с настоящим общим репозиторием, а не с учебным каталогом. К этому моменту нужен аккаунт GitLab: заведите его сейчас, чтобы не тратить время в день занятия.
- Регистрация: <https://gitlab.com/users/sign_up> — нужна почта, к которой у вас есть доступ. Логин потом видно в ссылках на вашу работу; берите тот, который не стыдно показать работодателю.
- Включите двухфакторную аутентификацию: <https://gitlab.com/-/user_settings/profile>, раздел Account. Без неё аккаунт живёт до первой утечки пароля.
- Проверьте, что GitLab у вас открывается из той сети, в которой будете заниматься:
curl -sI https://gitlab.com | head -1Ответ вида HTTP/2 200 — всё в порядке. Если ответа нет, скажите куратору до старта: в курсе есть запасной путь с центром на своей машине, но предупредить лучше заранее.
Токен доступа создавать сейчас не нужно — это делается в тридцать первый день, там же объясняется зачем.