# Лабораторная работа №1.

Избирательная модель управления доступом на примере ОС Linux.

1. Создание пользователей

1.1. Создать 3 новых пользвателя (user1, user2, user3). Создать для них домашнии директории и установить shell-оболочку по умолчанию (/bin/sh)

Имена пользователей могут быть любыми.

adduser -h

1.2. Проверить, что пользователи и домашние директории были созданы. Проверить группы, которым принадлежат пользователи.

/etc/passwd & /etc/group

Объясните, что значат числа в /etc/passwd

1.3. Просмотреть файл /etc/shadow, объяснить его структуру.

/etc/shadow

Какой алгоритм хэширования используется? Измените пароль какого-либо пользователя, посмотрите, что изменилось?

1.4. Создайте новую группу, которая будет включать двух из трех пользователей (user1, user2). Удалите группы тех пользователей, которых вы объединили (user1, user2).

addgroup -h & delgroup

2. Разрешения

2.1. Авторизуйтесь под первым пользователем (user1). Создайте файл в домашней директории пользователя, проверьте разрешения по умолчанию.

ls -l

2.2. Измените права таким образом, чтобы пользователь той же группы (user2) мог редактировать файл, а отдельный (user3) - не мог видеть и редактировать.

chmod -h & chown -h

2.3. Измените права на файл таким образом, чтобы владелец (user1) и отдельный пользватель (user3) могли читать и редактировать файл, а второй пользователь (user2) - нет.

2.4. Создайте директорию, поместите в нее несколько файлов. Повторите шаг 2.2 и 2.3 для директории и файлов внутри нее.

2.5. Создайте скрипт на ЯП Python с расширением *.py. Задайте ему шебанг. Попробуйте запустить скрипт самостоятельно, без вызова интерпретатора.

Объясните, что происходит. Сделайте так, чтобы скрипт выполнился (без вызова интерпретатора).

https://medium.com/@codingmaths/bin-bash-what-exactly-is-this-95fc8db817bf#:~:text=%2Fbin%2Fbash%20is%20the%20most,well%20developed%20and%20better%20syntax. 

3. Специальные разрешения

Помимо базовых разрешений:

r - read - читать
w - write - редактировать
x - execute - исполнять

Существует еще 3:

SETUID - установить идентификатор пользователя при исполнении
SETGID - установить идентификатор группы при исполнении
StickyBit - перевести директорию в sticky-режим (sticky mode).

Разрешения SETUID и SETGID позволяют пользователям и группам исполнять файл от имени тех, кем они не являются.

Когда для каталога установлен Sticky Bit, только владелец этого каталога или суперпользователь смогут удалять или переименовывать файлы каталога.

3.1. Что делает следующая команда?

chmod 4762 filename

3.2. Зайдите под первым пользователем (user1) и создайте директорию (например, dir1), внутрь поместите несколько исполняемых скриптов с расщирением *.py. Для этой директории рекурсивно установите UID, GID и Sticky Bit. Дайте скриптам права на исполнение.

Как изменился вывод ls -l?

3.3. Удалите права на исполнения для всего в домашней директории.

Как изменился вывод ls -l?

3.4. Установите для созданной директории (dir1) права таким образом, чтобы пользователи из других групп могли осуществлять навигацию и читать файлы внутри.

Затем измените владельца этой директории на группу отдельного пользователя (user3).

Что изменилось?

3.5. Авторизуйтесь в системе под вторым пользователем (user2) и создайте директорию {user2}_share. Установите разрешения таким образом, чтобы второй пользователь мог делиться файлами с первым (user1) и отдельным (user3).

Первый пользователь (user1) и отдельный (user3) могут читать файлы, создавать и осуществлять навигацию, но не могут редактировать, переименовывать и удалять файлы никакие, кроме своих.

3.6. Создайте файл sensetive_data от имени второго пользователя (user2) и запишите в него какую-либо текстовую информацию. Уберите разрешения для группы и всех остальных.

Авторизуйтесь под отдельным пользователем (user3), попытайтесь прочитать файл sensetive_data с помощью утилиты cat.

Объясните, что происходит.

Попытайтесь прочитать файл с помощью утилиты vi.

Объясните, что происходит.

Установите SUID bit на vi (от имени суперпользователя).

Попробуйте снова прочитать файл под отдельным пользователем (user3).

Что происходит? Объясните.