Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
выполненные работы / Курсовая ОС Архангельский М.В. БСТ2154.docx
Скачиваний:
20
Добавлен:
07.04.2025
Размер:
10 Мб
Скачать
☆

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 Работа с файлами и каталогами. Управление пользователями

  1. Ознакомиться с содержимым файлов: /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 — Проверка работы приветствия в консоли