- •«Московский технический университет связи и информатики» (мтуси)
- •Цель и задачи курсовой работы
- •Введение
- •Краткая теория
- •Знакомство с командной строкой Linux
- •Работа с файлами и каталогами. Управление пользователями
- •Ядро Linux
- •Управление процессами
- •Управление памятью
- •Диски и файловые системы
- •Основная часть
- •4.1 Знакомство с командной строкой Linux
- •1) Первые команды в консоли Linux
- •3) Создать следующую структуру каталогов и файлов:
- •4) Проконтролировать структуру созданных вами каталогов и просмотреть содержимое файлов.
- •6. Разработать скрипт на языке bash, осуществляющий вывод меню, состоящего из следующих пунктов:
- •4.2 Работа с файлами и каталогами. Управление пользователями
- •4.3 Ядро Linux Задание 1. Анализ системных вызовов при выполнении команд с помощью утилиты strace
- •Задание 2. Системные вызовы вашей программы
- •Задание 3. Сборка и загрузка модуля в ядро Linux
- •4.4 Управление процессами
- •Задание 2. Создание скрипта для получения статистики
- •Задание 3. Создание автозапускаемой службы
- •Задание 4. Создание таймера
- •4.5 Управление памятью Задание 1. Получение карты виртуальной памяти процесса
- •Задание 2. Настройка файла подкачки
- •Задание 3. Тестирование памяти
- •Дополнительное задание
- •4.6 Диски и файловые системы Задание 1. Разметка диска, создание файловой системы
- •Задание 2. Создание raid-массива
- •Задание 3. Получение информации о файловой системе
- •Дополнительное задание
- •5. Заключение
- •Список использованных источников
6. Разработать скрипт на языке bash, осуществляющий вывод меню, состоящего из следующих пунктов:
текущий пользователь;
объем используемой памяти;
объем дискового пространства;
список запущенных процессов;
список процессов, запущенных текущим пользователем;
системные дата и время;
время запуска системы;
выход;
и вывод соответствующей информации в зависимости от выбранного пункта меню. Процесс повторять до тех пор, пока не будет выбран пункт меню «выход».
Создам файл для скрипта под названием «script_lab1», выдам соответствующие права на исполнение. Напишу скрипт:
Рисунок 21 — Исходный код скрипта «Меню»
Проверим скрипт, запустим его
Рисунок 22 — Запуск скрипта «Меню»
Имеется 8 пунктов меню, проверим работоспособность каждого из них
Рисунок 23 — Проверка пункта «1. Текущий пользователь»
Рисунок 24 — Проверка пункта «2. Объем используемой памяти»
Рисунок 25 — Проверка пункта «3. Объем дискового пространства»
Рисунок 26 — Проверка пункта «4. Список запущенных процессов»
Рисунок 27 — Проверка пункта «5. Список процессов, запущенных текущим пользователем»
Рисунок 28 — Проверка пункта «6. Системные дата и время»
Рисунок 29 — Проверка пункта «7. Время запуска системы»
Рисунок 30 — Проверка пункта «8. Выход»
4.2 Работа с файлами и каталогами. Управление пользователями
Ознакомиться с содержимым файлов: /etc/passwd; /etc/shadow; /etc/group.
Рисунок 31 — Содержимое файла passwd
Рисунок 32 — Содержимое файла shadow
Рисунок 33 — Содержимое файла group
2. Создать следующие группы: Workers; Teachers; Students.
3. Создать пользователей user_[номер варианта]_N, где N =1, 2, .., 5, uid учетной записи должен быть равен 1000+N. Пользователей с N равным 1 и 2 добавить в группу workers вручную, внеся изменения в конфигурационный файл.
Рисунок 34 — Создание групп и пользователей
После добавления пользователей осуществить проверку файла /etc/group на ошибки.
Рисунок 35 — Проверка файла group после добавления пользователей
Пользователей с N равным 3, 4 и 5 добавить в группу students при помощи команд администрирования. Проверьте результат, выполнив действия п.1.
Рисунок 36 — Добавление пользователей в группу Students
Рисунок 37 — Проверка файла group после добавления пользователей
4. Создать пользователя teacher_[номер варианта]. В комментарии к учётной записи должны быть Ваше имя и фамилия. uid учётной записи должен быть равен 3000. Пользователя добавить в группу teachers.
Рисунок 38 — Создание пользователя teacher_2
5. Для всех пользователей задайте пароли, используя команду passwd.
Рисунок 39 — Создание паролей для пользователей
6. Создать директорию labs в корневом каталоге. В нем создать каталоги library и tests.
Рисунок 40 — Создание каталога labs и его подкаталогов
7. Создать файлы book_[фамилия студента]_N и поместить их в library.
Рисунок 41 — Создание файлов
8. Создать текстовый файл test_[имя студента], и поместить в tests. Файлы должны содержать скрипт на создание пользователя user[номер варианта] и задание ему пароля pass[номер варианта]. Сделайте эти файлы исполняемыми для пользователей группы students.
Рисунок 42 — Создание файла скрипта и выдача разрешений
Создаем вышеуказанный скрипт.
Рисунок 43 — Исходный код требуемого скрипта
9. В директории labs создать файл list, который должен содержать список файлов директории /etc.
Рисунок 44 — Создание файла list
Рисунок 45 — Содержимое файла list
Эта команда использует find для рекурсивного поиска файлов в /etc и перенаправляет результат в файл list в директории /labs. Таким образом, в файле list окажется полный список файлов и подкаталогов из /etc. На следующих скриншотах видно расположение файла list и его содержимое.
Рисунок 46 — Содержимое фалйа list после выполнения команды
10. Дать право на изменение файла только пользователю teacher_[номер варианта], а на чтение пользователям группы workers.
Пропишем chown для переопределения прав на teacher_2.
И chgrp для доступа к файлу группе (g) Workers с правами на чтение (r) g+r
Рисунок 47 — Выдача прав на файл
11. Настроить права доступа к каталогу library и tests, таким образом, чтобы пользователи группы teachers могли изменять и создавать там файлы, а пользователи группы students имели доступ на чтение.
Для Teachers: дадим права g+rw (права на чтение и запись), для Students: g+r (только чтение)
Рисунок 48 — Выдача прав на каталог
12. Просмотрите файл /etc/shadow. У всех ли пользователей содержимое второго поля выглядит приблизительно одинаково?
Рисунок 49 — Просмотр файла shadow
Выглядит примерно одинаково, т.к. все пароли зашифрованы и в открытом виде их не увидеть.
13. Какие символы могут содержаться в шифрованной строке пароля в /etc/shadow?
В строке пароля в файле /etc/shadow символ $ используется как разделитель между различными компонентами строки, такими как алгоритм хэширования, параметры и сам хэш пароля. Каждый $ обозначает начало и конец одного из этих компонентов. “y” – скорее всего символ какого-то метода шифрования.
Символы, которые могут встречаться в хэше, зависят от используемого алгоритма хэширования. Обычно это закодированные в Base64 символы и символы, используемые в URL (base64url encoding).
Каждый алгоритм может определять свой набор символов для представления хэша пароля.
14. Зарегистрируйте пользователя test1, для которого запрещен вход в сеанс, имеющего домашний каталог /home/nouser и являющегося членом групп user и mail. Пользователь должен иметь UID равный 2000.
Предварительно создадим группы user и mail. Группа mail уже была создана ранее исходя из ответа терминала.
Создадим пользователя test1 с помощью команды:
useradd -M -s /usr/sbin/nologin -d /home/nouser -g user -G mail -u 2000 test1
Где:
-M отключает создание домашнего каталога.
-s /usr/sbin/nologin устанавливает оболочку nologin, что предотвращает вход в сеанс.
-d /home/nouser задает домашний каталог.
-g user устанавливает основную группу пользователя в "user".
-G mail добавляет пользователя в группу "mail".
-u 2000 устанавливает UID пользователя в 2000.
Проверим результат командой: id test1
Рисунок 50 — Добавление групп user и mail, и пользователя test1
Рисунок 51 — Проверка созданного пользователя
15. Создайте учетную запись для пользователя test2 с настройками по умолчанию. Проверьте, создался ли домашний каталог пользователя, наполнен ли он файлами и какому пользователю он принадлежит?
Рисунок 52 — Добавление пользователя test2
Рисунок 53 — Проверка созданного пользователя
После создания пользователя test2 стандартным путём через команду «useradd test2» не создался домашний каталог.
16. Измените имя пользователя test2 на test3.
Переименуем с помощью команды «usermod -l». Проверим изменения с помощью команды «id».
Рисунок 54 — Переименование пользователя и проверка
17. Удалите пользователя test3.
Удалим пользователя test3 командой «userdel -r», проверим выполнение командой «id».
Рисунок 55 — Удаление пользователя и проверка
18. Помимо файла /etc/default/useradd имеется еще один конфигурационный файл, влияющий на поведение команды useradd. Найдите его и изучите его содержание. Какая настройка позволяет изменять минимальный UID для новых пользователей?
На большинстве систем Linux файл /etc/login.defs является конфигурационным файлом, влияющим на поведение команды useradd. Вы можете изучить его содержание, например, с помощью команды: cat /etc/login.defs
В этом файле мы можем найти параметр UID_MIN, он же и устанавливает минимальное значение для UID.
Рисунок 56 — Просмотр файла login.defs
19. Зарегистрируйте пользователя test4 с настройками по умолчанию и установите для него пароль. Изучите содержимое соответствующей записи в /etc/shadow.
Рисунок 57 — Назначение пароля пользователю
Рисунок 58 — Хэш пароля пользователя
После создания пользователя и задания ему пароля, можно заметить, что в файле /etc/shadow отображается хэш пароля пользователя. В операционной системе Астра Линукс, которую я использую для выполнения лабораторных работ, для генерации хэша используется функция gost12_512_crypt() входящая в состав пакета libgost. Пакет libgost устанавливается в Astra Linux по умолчанию. Генерируется хэш по алгоритму ГОСТ Р 34.11-2012.
20. Установите дату устаревания пароля для пользователя на 31 декабря текущего года. Проверьте, что изменилось в /etc/shadow.
Установим дату устаревания пароля с помощью команды:
chage -E $(date -d "12/31/$(date +%Y)" '+%Y-%m-%d') test4
date +%Y: Эта часть команды возвращает текущий год.
date -d "12/31/$(date +%Y)" '+%Y-%m-%d': здесь используется date -d для создания даты, представляющей 31 декабря текущего года. Флаг '+%Y-%m-%d' форматирует эту дату в форму ГГГГ-ММ-ДД.
chage -E $(...) test4: здесь используется chage -E, чтобы изменить дату устаревания пароля для пользователя test4 на результат, полученный из предыдущей команды.
После установки даты устаревания пароля в /etc/shadow в конце строки test4 появился доп. параметр в виде цифр 20088.
Рисунок 59 — Установка даты устаревания пароля
21. Удалите пароль пользователя и проверьте изменения в /etc/shadow.
После удаления пароля пропал хэш пароля
Рисунок 60 — Проверка хэша после удаления пароля
22. Заблокируйте учётную запись test4.
Команда «passwd -l test4» заблокирует учетную запись пользователя test4.
Рисунок 61 — Блокировка учетной записи
23. Создайте группу пользователей xusers с GID, равным 1010.
С помощью команды:
groupadd -g 1010 xusers
Создать не получилось, т.к. этот GID занят группой user созданной ранее
Рисунок 62 — Неудачная попытка создания группы
Создал группу xusers с GID 1011
Рисунок 63 — Создание группы xusers
24. Зарегистрируйте себя в качестве участника группы xusers. Проверьте результат выполненного действия.
Для добавления своего пользователя в группу узнаём имя пользователя командой whoami, прописываем команду: usermod -aG xusers max , где max – имя моего пользователя.
С помощью команды groups max проверяем, что внесение в группу произошло.
Рисунок 64 — Проверка добавления пользователя в группу
25. Как изменить имена и GID групп? Измените имя группы на yusers.
Можно использовать команду: groupmod -n yusers xusers
-n указывает новое имя группы yusers вместо xusers
Проверим смену названия группы через команду groups max
Рисунок 65 — Переименование группы
26. Сделайте так, чтобы при запуске оболочки из командной̆ строки выдавалось приветствие.
Чтобы это сделать следует в файле ~/.bashrc в самом конце прописать необходимую фразу.
Пропишем echo "Приветствую тебя, линуксоид"
Рисунок 66 — Настройка приветствия в консоли
Чтобы изменения вступили в силу нужно выполнить команду
source ~/.bashrc
Рисунок 67 — Применение настроек приветствия в консоли
Теперь при каждом запуске консоли будет появляться приветствие
Рисунок 68 — Проверка работы приветствия в консоли
