Лабораторная работа. Администрирование Linux Подготовка стенда Установка системы (CentOS) Автоматическая и ручная разметка диска
1. Создайте новую виртуальную машину (ВМ) со следующими параметрами:
RAM 4Gb HDD 120Gb (динамический) Сетевой адаптер (NAT) DVD
Количество ядер CPU и другие параметры можно оставить по умолчанию.
2. Смонтируйте образ дистрибутива (ISO) к DVD ВМ.
3. Запустите ВМ
4. Следуя диалогам на экране, выполните установку в варианте
Workstation, использование диска по умолчанию. Настройка сети – по информации от инструктора.
5. В процессе установки задайте пароль для пользователя root и создайте пользователя-администратора.
Дождитесь завершения процесса установки.
6. Выполните вход в систему для проверки работоспособности системы.
Модуль 2. Основы работы с конфигурационными файлами Система помощи и ее возможности Текстовый редактор vim Символы групповых операций ( bash ) Потоки ввода вывода Каналы Практика
2. Ознакомьтесь со справочной системой по графической среде (GNOME HELP)
Меню Activities->Help
3. Для нас важнее help-система, работающая из командной строки.
Откройте терминал (командную строку)
Меню Activities->Terminal
4. Команда man поможет получить информацию по различным утилитам и конфигурационным файлам системы:
Информация по самой утилите man (обратите внимание на список секций)
$ man man
Для выхода из режима просмотра нажмите "q"
5. Информация по утилите passwd (используется для изменения пароля)
6. Возможно совпадение имен утилит и файлов конфигурации. Например, чтобы узнать подробности и структуре файла /etc/passwd, используйте команду:
$ man 5 passwd
5 – это номер секции. Конфигурационные файлы относятся к 5 секции.
7. Редактор vi (vim)
Откройте для редактирования файл /etc/passwd:
$ vi /etc/passwd
vi очень сложен для неподготовленного пользователя, поэтому всегда можно воспользоваться редакторами с более привычным интерфейсом, например nano:
$ nano /etc/passwd
8. Работу терминала обеспечивает приложение bash, позволяющее нам выполнять различные команды с файлами:
$ ls # показывает все файлы в текущей директории
$ ls *.txt # показывает все файлы в текущей директории с расширением *.txt
9. По умолчанию утилиты выдают результат работы в терминал (на экран)
$ ls -l
Мы можем перенаправить вывод результатов в другое место, например в файл
$ ls -l > file1.txt
В текущей директории будет создан файл file1.txt, посмотреть содержимое которого можно текстовым редактором или утилитой cat
$ cat file1.txt
10. Иногда необходимо результат работы одной утилиты передать для обработки другой утилитой. В этом случае используем символ <|>
$ cat file1 | grep Music
Утилита grep показала только те строки из файла file1.txt, в которых есть слово Music
Модуль 3 Управление файлами из командной строки Иерархия файловой системы Основные команды работы с файлами Жесткие и символические ссылки
1. Откройте терминал
2. Посмотрите содержание корневого каталога:
$ ls /
3. Посмотрите содержание каталога /home
$ ls /home
Команда ls имеет множество опций. Посмотрите список файлов в домашнем каталоге:
$ ls
и сравните с расширенным списком:
$ ls -l
4. Выполните команду перехода в домашний каталог пользователя:
$ cd
или
$ cd
5. Создайте файл file1 в текущем каталоге:
$ touch file1
6. Проверьте наличие файла:
$ ls file1
7. Используя любой текстовый редактор, внесите произвольный текст в file1:
$ nano file1
8. Создайте копию файла file1 с именем file2:
$ cp file1 file2
9. Посмотрите содержимое file2:
$ cat file2
содержимое должно быть идентично file1.
10. Создайте в домашнем каталоге новый каталог с именем dir1:
$ mkdir dir1
11. Переместите файл file2 в каталог dir1:
$ mv file2 dir1
12. Снова посмотрите содержимое file2:
Выдается сообщение об ошибке. Почему?
13. Используя относительный путь к файлу, посмотрите содержимое file2:
$ cat dir1/file2
14. Удалите каталог dir:
$ rmdir dir1
Выдается ошибка - в каталоге имеются файлы
15. Можно предварительно удалить все файлы в каталоге, затем
повторить команду удаления:
$ rm dir1/*
$ rmdir dir1
или воспользоваться командой rm для удаления каталога вместе со всем содержимым:
$ rm -r dir1
16. Посмотрите содержимое файла /etc/passwd:
$ cat /etc/passwd
На экран выводится достаточно длинный список системных пользователей.
17. Найдем в этом списке строки, содержащие слово root:
$ grep root /etc/passwd
18. Для просмотра больших текстовых файлов удобна утилита less:
$ less /etc/passwd
Вы попадаете в режим просмотра с возможностью перемещения по тексту и поиска.
Для перемещения можно использовать клавиши со стрелками, для поиска используется клавиша "/" и далее текст для поиска, для выхода из режима просмотра - клавиша "q".
19. Для вывода только начальных или только последних строк большого текстового файла можно использовать утилите head и tail:
$ head /etc/passwd
$ tail /etc/passwd
По умолчанию показывается 10 строк. Это количество можно указывать:
$ head -3 /etc/passwd
$ tail -5 /etc/passwd
20. Удалите файл file1:
$ rm file1
Модуль 4. Потоковые редакторы Регулярные выражения Потоковые редакторы (sed , awk) Архиваторы ( tar, gzip, bzip2 )
1. Откройте терминал
2. Создайте копию файла /etc/passwd в своей домашней директории:
$ cp /etc/passwd
3. Посмотрим начало файла passwd
$ head passwd
Первая строка содержит описание пользователя root. Заменим слово root на слово test
$ sed -e 's/root/test/g' passwd | head
4. При поиске и замене текста можно использовать регулярные выражения
$ sed -e 's/bash$/sh/g' passwd | head
Была выполнена замена слова bash на слово sh, но только в том случае, если слово bash завершало строку
5. awk – это скорее язык программирования, позволяющий быстро решать несложные задачи в командной строке
Сравните результат работы команд
$ ls -l
и
$ ls -l | awk ' {print $1,$3,$5} '
Вторая команда показала только первый, третий и пятый столбец
6. Утилита gzip позволяет сжать файл:
$ gzip passwd
Выполните команду
$ ls -l
Обратите внимание, что файла passwd был заменен файлом passwd.gz
Распаковать файл можно командой
$ gunzip passwd.gz
В результате файл passwd будет восстановлен в исходном виде
7. Утилита bzip2:
Сжать файл:
$ bzip2 passwd
В результате появляется файл passwd.bz2
Распаковать файл
$ bunzip2 passwd.bz2
8. Утилита tar
Создать архив без компресии:
$ tar -cvf passwd.tar passwd
Создать архив с компресией:
$ tar -czvf passwd.tar.gz passwd
Сравните размеры файлов passwd.tar и passwd.tar.gz
$ ls -l passwd.tar*
Удалите файл passwd
$ rm passwd
Восстановим файл из несжатого архива:
$ tar -xvf passwd.tar
Восстановим файл из сжатого архива:
$ tar -xzvf passwd.tar.gz
Модуль 5. Основы работы в терминале Виртуальные терминалы Повышение привилегий пользователя ( su , sudo ) Подключение к системе по протоколу ssh Генерация ключей ssh
1. В Centos8 по умолчанию используются 6 терминалов, включение которых выполняется клавишами ++ ... ++
Графическая среда занимает терминал № 1. При включении остальных терминалов графика выключается и мы попадаем в командную строку.
В разных версиях графика может занимать другие терминалы. В Centos 8 выход в терминал без графики приводит к блокировке сессии в терминале 1 (графика)
2. Выполнение команд можно продолжать как в псевдотерминале на десктопе GNOME, так и в любом виртуальном терминале.
Откройте терминал
Для выполнения некотрых привилегированных действий требуются права администратора (root)
Команда sudo позволяет выполнить любую команду с правами администратора
$ ls /root # выдает ошибку - не хватает прав
$ sudo ls /root # работает после ввода пароля
Уберем запрос пароля
$ sudo visudo
Поставим комментарий в строку (# в начале строки)
%wheel ALL=(ALL) ALL
Уберем комментарий в строке
# %wheel ALL=(ALL) NOPASSWD: ALL
Сохраним изменения:
, <:>, ,
Команда
$ sudo su /root
не должна запрашивать пароль
3. Команда su позволяет открыть сессию от именно пользователя root
$ su -
Запрашивается пароль root.
$ sudo su -
пароль не запрашивает
После выполнения команды su мы находимся в сессии root, о чем говорит символ # в командной строке
После выполнения всех команд, которые мы хотели выполнить в сессии root, закрыть ее командой exit
$ exit
и мы возвращаемся в ту сессию, откуда вызывали su
4. Для подключения к удаленным компьютерам можно использовать ssh
$ ssh root@localhost
запрашивается пароль root. При первом подключении выдается запрос на обмен ключами шифрования, следует ответить
5. Подключение по ssh без пароля.
Генерируем ключи шифрования:
$ ssh-keygen
на запросы нажимаем
В результате создается директория .ssh и несколько файлов в ней.
Отправим открытый ключ на хост-получатель:
$ ssh-copy-id -i .ssh/id_rsa.pub root@localhost
Далее мы можем подключаться по ssh без пароля
$ ssh root@localhost
Или можем сразу передать команду для выполнения
$ ssh root@localhost ls -l
Модуль 6. Управление локальными пользователями и доступом к файлам при помощи разрешений файловой системы Linux Пользователи и группы Менеджмент учетных записей Права доступа Права при создании объектов ( umask ) Специализированные права доступа ( SUID / SGID / Sticky bit ) Файл /etc/passwd - список пользователей Файл /etc/group - список групп Файл /etc/shadow - БД паролей и параметров безопасности
1. Команды для работы с пользователями:
Выполняем с правами root:
$ sudo su -
Создание нового пользователя:
# useradd test
Установка домашнего каталога:
# usermod -d /home/test/ test
Изменение пароля пользователя:
# passwd test
Другие утилиты для изменения пароля:
# chpasswd
Добавление новой группы:
# groupadd group1
Принадлежность к группам:
# usermod -G group1 -g test test
Проверка:
# id test
Блокировка:
# passwd -l test
Снятие блокировки - задать новый пароль.
Команда chage - изменение срока жизни пароля и др. параметров
в файле /etc/shadow
2. Атрибуты файлов, определяющие доступ:
rwx - чтение, запись, исполнение
Три уровня доступа - владелец, группа, все остальные
rwxrwxrwx
Команда ls -l
Создайте файлы file1, file2, file3
# touch file{1,2,3}
Изменение владельца файла:
# chown test:test file1
# chgrp group1 file2
Изменение атрибутов файлов:
# chmod ugo+rwx file3
# chmod 777 file4
3. При создании файлов из маски 666 вычитается значение umask
# umask
0022
# touch file10
# ls -l file10
При создании директории вычитание umask производится из 777
# mkdir d1
# ls -l
Значение umask можно изменить:
# umask 0021
4. SUID, SGID, Sticky bit
SUID и SGID позволяют процессам запускаться с правами владельца файла, а не наследовать права запускающего.
Установка SUID:
$ cp /usr/bin/touch .
$ ls -l touch
$ chmod u+s touch
$ ls -l touch
$ chmod g+s touch
$ ls -l touch
Sticky bit устанавливается для директорий, и позволяет удалять только те файлы, которые принадлежат пользователю, даже если на уровне директории имеется полный доступ к другим файлам.
Установка:
$ mkdir d2
$ ls -l
$ chmod +t d2
$ ls -l
Модуль 7. Использование возможностей ACL Лист контроля доступа ( ACL ) Примеры использования ACL
1. Создадим текстовый файл /abcd.txt от имени root
# echo "12345">/abcd.txt
Обычный пользователь тест не может модифицировать этот файл:
$ touch /abcd.txt
touch: cannot touch '/abcd.txt': Permission denied
С помощью механизма ACL разрешим доступ
# setfacl -m "u:test:rwx" /abcd.txt
# ls -l /abcd.txt
знак <+> в списке атрибутов говорит о наличии ACL
Посмотрим список ACL
# getfacl /abcd.txt
Теперь команда
$ touch /abcd.txt
от имени пользователя test должна выполняться без ошибок
Можно устанавливать ACL для групп
# setfacl -m g:group1:r-x /abcd.txt
Можно установить для директории набор атрибутов ACL, которые будут наследоваться всеми файлами, создаваемыми в этой директории
# mkdir cool
# setfacl -d -m u:test:rw- cool
# cd cool
# touch f1
# getfacl f1
Удаление всех ACL
# setfacl -b /abcd.txt
Удаление конкретных ACL
# setfacl -x u:test /abcd.txt
Модуль 8. Настройка сети в Linux Основы работы с сетью Маршрутизация Настройки DNS Инструменты сетевой диагностики
1. Убедитесь, что сетевой адаптер активен в виртуальной машине файлы конфигурации сети:
/etc/sysconfig/network-scripts
/etc/resolv.conf
/etc/hosts
/etc/hostname
Исправления, вносимые в resolv.conf, перезатираются сервисом NetworkManager при рестарте, если используется DHCP. Можно запретить NetworkManager:
systemctl disable NetworkManager
или
systemctl mask NetworkManager
Если запретили NetworkManager, желательно установить пакет network-scripts
# yum install network-scripts
Тестирование сети:
# ping mail.ru
# ping 8.8.8.8
# ifconfig
# ip a show
# hostname
Установите статический адрес для сетевого адаптера, перезагрузитесь, проверьте работу сети.
Перед установкой статического адреса запомните динамический, его далее и используйте в качестве статического:
# ip a show
Измените адрес DNS-сервера в /etc/resolv.conf, проверьте его работу
В качестве DNS можно попробовать использовать общедоступные адреса
Google DNS: 8.8.8.8
8.8.4.4
Yandex DNS: 77.88.8.8
77.88.8.1
Модуль 9. Мониторинг и управление процессами в Linux Процессы и сигналы Использование памяти Монитор производительности ( top ) Сигналы Изменение приоритетов процесса
1. Откройте терминал
2. Получите список выполняемых процессов:
$ ps
В терминале увидите примерно такой результат:
Мы получили номер процесса (PID), терминал откуда процесс был запущен (pts/0), затраченное процессорное время и команду, запустившую процесс.
3. Для запуска программы необходимо, чтобы исполняемый файл находился в одном из каталогов переменной PATH, либо необходимо указывать путь к исполняемому файлу
Посмотрите содержимое переменной PATH:
$ echo $PATH
4. Выполните команду
$ which ls
Получим примерно следующее:
Нас интересует путь "/usr/bin/ls"
Создайте копию программы ls в домашнем каталоге:
Мы можем выполнить две разные программы ls - одну из каталога /usr/bin/, или ее копию из домашнего каталога. Для запуска ls из каталога /usr/bin/ достаточно выполнить команду
$ ls
Даже если наш текущий каталог - домашний, будет выполнена именно программа из файла
/usr/bin/ls (сработает поиск по каталогам из переменной PATH)
Для запуска программы из домашнего каталога нужно указать путь к программе – или абсолютный, или относительный. Варианты запуска:
Из текущего каталога:
$ ./ls
Из домашнего каталога:
$ /ls
Из любого другого каталога:
$ /dir1/dir2/dir3/prog_to_run (это только пример)
5. Команда ps используется для получения информации о процессах:
$ ps
Имеет различные опции
$ ps aux
6. Команда top включает режим мониторинга наиболее активных процессов с периодическим обновлением списка. Выход из режима мониторинга клавиша "q". Позволяет выполнять различные действия с процессами – останавливать, менять приоритет.
$ top
7. Управлять запущенными процессами можно с помощью сигналов, передаваемых процессам. Утилита kill позволяет передавать различные сигналы, чаще всего используется для завершения процессов. Выполните команду:
$ cat /dev/zero /dev/null &
команда cat будет выполняться в фоновом режиме и получит какой-то PID. Узнаем PID процесса для команды cat:
$ ps
В примере выше это 12893. Остановим процесс командой kill:
$ kill 6698
Проверьте, что процесс отсутствует в списке
$ ps
Иногда процесс в результате каких-то ошибок не реагирует на сигнал завершения от команды kill. В этом случае можно использовать более "жесткий" вариант завершения:
$ kill -9 6698
8. Узнать код завершения процесса можно, обратившись к переменной $?
$ echo $?
Значение переменной следует проверять сразу после завершения процесса.
9. По умолчанию программы запускаются в режиме "foreground". Запустить в режиме "background" можно с помощью символа "&" в командной строке:
$ cat /dev/zero /dev/null &
Или, если программа уже работает в foreground, можно нажать CTRL/Z, чтобы процесс остановился и был переведен в background.
Получить список программ в background можно командой jobs:
$ jobs
Можно перевести процесс в foreground командой fg:
$ fg 1
Номер задания в квадратных скобках (не путать с номером процесса, PID)
Задание со статусом "Остановлен" можно запустить в фоновом режиме командой bg:
$ bg 1
После этого по команде jobs ьы увидим изменение статуса задания.
10. Остановите все запущенные процессы cat с помощью команд ps и kill.
Модуль 10. Установка и обновление программных пакетов Установка и удаление программ Поиск необходимых программ в репозитории Знакомство с группами пакетов Репозитории ( разворачивание локального репозитория )
1. Установка ПО из пакетов (rpm)
Проверим, установлен ли пакет:
# rpm -q wget
Список файлов пакета:
# rpm -ql wget
Удалим пакет wget:
# rpm -e wget
Найдем установочный файл для пакета wget:
# find / -name wget*
Установим пакет:
# <путь к файлу из команды find>
2. Использование менеджеров пакетов и репозиториев (yum, dnf)
yum и dnf - умеют разрешать зависимости и работать с репозиториями
Удалим пакет wget:
# dnf remove wget
или
# yum remove wget
Установим пакет:
# dnf install wget
или
# yum install wget
Поиск пакета в доступных репозиториях:
yum search wget*
Настройка репозиториев:
3. Обновление системы и ПО
Команда:
# yum update
Выполняться будет долго, если список изменений большой
|