Лабораторная работа 0. Работа с консолью Linux и редактором Vim
Источник: методичка по консоли Linux. Команды адаптированы для Ubuntu Server 24.04 LTS.
Цель
Вы научитесь работать с файлами, пользователями и текстом в Linux, а также редактировать файлы в Vim.
Задачи
- Создайте файлы и измените права доступа.
- Установите пакет и проверьте его версию.
- Создайте пользователя и проверьте его окружение.
- Отредактируйте файл в Vim.
- Обработайте текст конвейером команд.
Рабочее окружение
Сначала подготовьте ВМ. Все команды вводите в Ubuntu-ВМ под своим учебным пользователем. Интернет понадобится только для установки пакетов. В остальных заданиях вы будете работать с локальными файлами. Укажите в отчёте, сколько времени заняла работа.
whoami
pwd
sudo -v
test -r ~/labs-mag/terraform/files/clients.txtЗадание 1. Работа с файлами и Vim
1. Проверьте, установлен ли Vim. Если нет, установите его и wget:
sudo apt-get update
sudo apt-get install vim wget
vim --version
wget --versionВ подготовленной ВМ пакеты уже есть; повторная установка для автономной работы не нужна. update обновляет список пакетов, install устанавливает пакет.
2. Пройдите интерактивный курс:
vimtutor ru3. Создайте рабочий каталог и файл:
mkdir -p ~/task00
cd ~/task00
vi userНажмите i и введите три строки о работе. Чтобы сохранить файл и выйти, нажмите Esc, введите :wq и нажмите Enter. Снова откройте файл: скопируйте строку командой yy, вставьте её командой p, удалите строку командой dd и отмените удаление командой u. Сохраните изменения.
4. Скопируйте файл и посмотрите права:
cp user root
sudo chown root:root root
sudo chmod 664 root
mv user lock
chmod 400 lock
ls -l
cat root
cat lockОбъясните каждую цифру в 664 и 400. Кто может изменить каждый файл?
Задание 2. Ошибка доступа
1. Добавьте строку в файл lock от своего пользователя:
printf 'new line\n' >> lockВы получите отказ в доступе. Проверьте владельца и права файла, затем верните разрешение на запись:
ls -l lock
chmod 600 lock
printf 'new line\n' >> lock
cat lock2. Самостоятельно разрешите чтение группе, оставив запись только владельцу. Перед изменением запишите, какое числовое значение прав нужно задать.
Задание 3. Пользователь и окружение
1. Создайте отдельного учебного пользователя. Если newuser уже существует, проверьте id newuser и выберите другое имя во всех командах задания.
sudo useradd -m -s /bin/bash newuser
sudo passwd newuser
sudo usermod -aG sudo newuser
su - newuser
whoami
id
pwd
sudo -vЗадайте собственный учебный пароль. В Ubuntu административная группа называется sudo. Новые права группы начнут действовать после повторного входа.
2. Посмотрите окружение и создайте переменную:
echo "$USER"
echo "$SHELL"
printf '%s\n' "$PATH"
COURSE=linux
export COURSE
bash -c 'printf "%s\n" "$COURSE"'
unset COURSE
bash -c 'printf "%s\n" "${COURSE:-не задана}"'Объясните назначение export и отличие переменной оболочки от переменной окружения дочернего процесса.
3. Посмотрите доступные оболочки, выйдите и смените оболочку пользователя:
cat /etc/shells
exit
sudo usermod -s /bin/sh newuser
su - newuser
echo "$0"
exit
sudo usermod -s /bin/bash newuser
getent passwd newuser$SHELL описывает оболочку входа; $0 помогает определить текущую оболочку.
Задание 4. Обработка текста в Bash
1. Скопируйте учебный файл. Terraform для этого не нужен:
cd ~/task00
cp ~/labs-mag/terraform/files/clients.txt .
head clients.txt
wc -l clients.txt
grep Client24 clients.txt
grep Client2 clients.txtВ исходном файле 50 строк без заголовка: имя, внутренний IP, MAC, внешний тестовый IP. Объясните, почему два поиска вернули разное количество строк.
2. Выберите клиентов, имя которых заканчивается на 4:
grep -E '^Client[0-9]*4 ' clients.txtПолучаются Client4, Client14, Client24, Client34, Client44. Выражение привязано к началу строки и концу первого поля.
3. Выведите имя и MAC прописными буквами, замените двоеточия дефисами:
grep -E '^Client[0-9]*4 ' clients.txt | awk '{print $1" "toupper($3)}' | sed 's/:/-/g' > newfile.txt
cat newfile.txt
test "$(wc -l < newfile.txt)" -eq 5Объясните |, >, $1, $3. Самостоятельно получите имена клиентов, заканчивающиеся на 7, и их внешний IP; отсортируйте результат по имени.
Отчёт и вопросы для защиты
Приложите права до и после исправления, результат id, изменённый в Vim файл, оба конвейера с выводом и прогноз самостоятельного изменения. Ответьте:
- Чем отличаются владелец, группа и остальные пользователи?
- Почему
sudo echo text > rootне гарантирует успешную запись? - Чем отличаются
su -,sudoи запуск новой оболочки? - Что произойдёт при повторном выполнении команды с
>и с>>?
Сохранение и завершение
mkdir -p ~/reports/lab0
cp -r ~/task00 ~/reports/lab0/
sudo rm ~/task00/root
rm ~/task00/lock ~/task00/clients.txt ~/task00/newfile.txt
rmdir ~/task00
sudo userdel -r newuserЕсли вы создали другие файлы, сначала просмотрите их через ls -la и сохраните нужное. Для повторения заново создайте task00 и пользователя.