Лабораторная работа 1. Работа с консолью в Linux.
Цель
Получение базовых навыков при работе с консолью в операционной системе Linux (CentOS 7).
Задачи
- Подключиться к виртуальной машине в RESDS Dashboard.
- Выполнить базовые действия с файлами и папками.
- Установить пакет wget.
- Научиться работать с переменными окружения.
- Создать нового пользователя и подключиться к нему. Поменять shell у пользователя.
- Изучить работу с текстом в Bash.
Схема виртуального стенда
Для работы с облачной платформой необходимо прочитать инструкцию.
Переключиться на проект [GROUP]:[team]-lab:1-2.
Подключиться к labnode
, логин - labuser
, пароль - labpass1!
Задание 1. Работа с файловой системой.
- Создать директорию task01. Перейти в неё.
mkdir task01
cd task01
- Создать в домашнем каталоге текстовый файл user при помощи текстового редактора
vi
, и заполнить его произвольными символами.
vi user
- Скопировать файл
user
в новый файл с именемroot
.
cp user root
- Посмотреть права доступа на файлы можно с помощью команды:
ls -l
- Задать владельца root и группу root на файл root. (sudo позволяет выполнять команды от
root
; ввести пароль в диалоговом окне, при этом символы отображаться не будут; пароль -labpass1!
)
sudo chown root:root root
- Переименовать (т.е. переместить с новым именем) файл
user
в файлlock
.
mv user lock
- На файл root поставить доступ на чтение и запись группе и владельцу остальным только на чтение.
sudo chmod 664 root
- На файл lock поставить доступ на чтение владельцу, группе и остальным пользователям убрать доступ на чтение запись и исполнение.
chmod 600 lock
- Вывести содержимое файла root в терминал.
cat root
- Отредактировать файл root случайным образом и вывести его содержимое в консоль.
sudo vi root
cat root
- Удалить каталог task01.
cd
sudo rm -rf task01
Задание 2. Установка пакетов.
Для установки, удаления, обновления пакетов в ОС CentOS 7 используется утилита yum (аббр. Yellowdog Updater, Modified).
В процессе установки/обновления/удаления пакетов нужно будет подтвердить установку новых версий, нажав y
. Или же использовать флаг -y
.
Для установки/удаления пакетов существуют команды:
sudo yum install -y package_name
sudo yum remove -y package_name
В качестве примера необходимо установить программу для скачивания файлов по web-протоколам - wget
.
sudo yum install wget
Можно проверить версию установленного пакета:
wget –-version
Задание 4.3. Создание пользователей.
Создать нового пользователя newuser с паролем newpass1!
. Сделать его администратором.
sudo adduser newuser
sudo passwd newuser # Ввести пароль newpass1!, при этом пароль отображаться не будет
sudo usermod -aG wheel newuser # Добавить пользователя newuser в группу wheel, что даст ему права на исполнение команд с sudo
Для того, чтобы выполнять команды от имени пользователя newuser
, необходимо сменить текущее окружение на окружение пользователя newuser командой - su
. При этом нужно будет ввести пароль пользователя newuser
.
su - newuser
Имя пользователя изменилось с labuser
на newuser
. Также, имя пользователя хранится в переменной окружения $USER
. Просмотреть значение переменной можно с помощью команды echo
.
echo $USER
Чтобы узнать, в каких группах состоит текущий пользователь, используется команда groups
. В данном случае это должны быть группы newuser
и wheel
.
groups
Для выхода из оболочки используется команда exit
. При этом выход идет в оболочку, запущенную пользователем labuser
.
exit
Теперь нужно сменить оболочку, запускаемую по умолчанию при входе пользователя newuser
. Чтобы узнать список доступных в системе оболочек, используется следующая команда:
cat /etc/shells
Сейчас должна быть запущена оболочка /bin/bash
. Чтобы узнать, какая оболочка запущена сейчас, можно вывести на экран значение переменной $0
.
echo $0
Чтобы просто запустить оболочку, достаточно просто набрать путь к ней. Запустить оболочку - sh
, и вывести на экран переменную - $0
. После выйти обратно в bash
.
/bin/sh
echo $0
exit
Чтобы сменить оболочку по умолчанию для пользователя, можно отредактировать файл /etc/passwd
, либо можно использовать утилиту usermod
. Необходимо посмотреть, какая оболочка сейчас является оболочкой по умолчанию для пользователя newuser
, сменить её на /bin/sh
, и проверить изменения.
sudo grep newuser /etc/passwd # grep - программа для поиска по тексту. В данном случае, выведет все строки, содержащие newuser.
sudo usermod --shell /bin/sh newuser
sudo grep newuser /etc/passwd # Данная команда произведет поиск по файлу
# /etc/passwd, и отобразит в консоли все
# строки, в которых присутствует слово
# newuser. В этой же строке будет указано,
# какая оболочка используется данным
# пользователем
Теперь необходимо переключиться в режим работы от имени пользователя newuser
, и проверить, какая оболочка используется. После выйти из этого режима, и удалить пользователя.
su - newuser
echo $0
exit
sudo userdel -r newuser # флаг r используется, когда вы хотите удалить также домашний каталог пользователя.
Задание 5.4. Работа с текстом в bash.
Для практики нужно воспользоваться текстовым файлом, специально созданным для выполнения задания - таблица подключений OpenVPN, состоящая из имени клиента, IP адреса, MAC адреса устройства и внешнего IP, с которого клиент подключился. Необходимо загрузить файл, воспользовавшись специальной утилитой s3cmd, загружающего файлы с облачного хранилища, работающему по специальному протоколу s3(simple storage server):
sudo yum install s3cmd
cd ~
cp /var/lib/cloud/s3cfg .s3cfg
s3cmd get s3://lab1/clients.txt ~/
Вывести содержимое файла в консоль (Тут для удобства можно пользоваться встроенными в консоль горячими клавишами: Ctrl+L - Очистить содержимое консоли, Shift+PgUp - Прокрутить консоль вверх, Shift+PgDn - Прокрутить консоль вниз).
cat ~/clients.txt
Для того, чтобы вывести строки, содержащие подстроку, можно использовать grep. Необходимо вывести информацию о клиенте под номером 24 (grep - регистрозависимый, Client24 начинается с заглавной буквы).
grep Client24 ~/clients.txt
В результате исполнения команды должна быть выведена одна строка. Если было несколько строк, содержащих подстроку Client24, то в результате выведется несколько строк. Далее необходимо ввести команду:
grep Client2 ~/clients.txt
Необходимо попробовать понять, сколько будет выведено строк и почему именно они.
Помимо обычных строк grep поддерживает также регулярные выражения. При этом регулярные выражения должны экранироваться символом . С помощью регулярных выражений можно задать абсолютно любой паттерн. Относительно простой - вывести всех клиентов, имя которых заканчивается на 4. Точка в выражении означает любой символ.
grep Client\.4 ~/clients.txt
grep также умеет работать с пайплайном (вертикальная черта). С помощью пайплайна можно передавать вывод от одной программы другой, по принципу конвейера. Например, можно вывести текст через cat, и передать этот вывод на вход команды grep, для его обработки этой командой.
cat ~/clients.txt | grep Client\.4
Пайплайнов может быть несколько. Так, например, воспользовавшись программой AWK можно вывести только имя клиента и его внешний адрес - то есть первый и четвертый столбцы. (Внимание на пробел в двойных кавычках между номерами столбцов. Это разделитель, который будет между столбцами в конечном результате. Пробел можно заменить на любой другой символ, например, на дефис -, или символ табуляции \t. Можно попробовать это сделать)
cat ~/clients.txt | grep Client\.4 | awk ‘{print $1” “$4}’
AWK также поддерживает функции в своем синтаксисе. Например, чтобы вывести имя клиента и MAC, при этом чтобы MAC печатался заглавными буквами, нужно использовать следующую конструкцию.
cat ~/clients.txt | grep Client\.4 | awk ‘{print $1” “toupper($3)}’
Далее необходимо вывести MAC адрес, чтобы он был разделён не двоеточиями, а дефисами, тогда можно воспользоваться sed. Нужно лишь задать параметры для замены. После этого результат можно вывести не в консоль, а в новый файл (набирать в одну строку):
cat ~/clients.txt | grep Client\.4 | awk ‘{print $1” “toupper($3)}’ | sed -r ‘s/:/-/g’ > newfile.txt