1. Создание пользователей. Задание паролей. Сброс пароля пользователя
- Создать две учетные записи пользователей:
vlad
,alex
.
Создание пользователя vlad
Создание пользователя alex
Пароли: 1234
и 2345
соответственно
- Задать пользователям одинаковые пароли
Заданный пароль: 12
- Проанализировать файл
/etc/shadow
и/etc/passwd
. Сделать соответствующие выводы.
Файл /etc/passwd
Файл /etc/shadow
Пароль пользователя parallels
был скрыт.
Видим, что пользователям vlad
и alex
были заданы UID 1001
и 1002
и GID 1001
и 1002
соответственно. Видим, что UID совпадает с GID.
Также несмотря на то, что мы задали одинаковые пароли, хэш паролей различается из-за соли.
- Из файла
/etc/shadow
удалить свертку пароля пользователяvlad
.
Использованная команда для редактирования файла: nano
.
- Проверить, каким образом
vlad
войдет в систему. Сделать выводы.
Вход был выполнен без пароля.
- В файле
/etc/shadow
заменить свертку пароля для пользователяvlad
сверткой пароляalex
.
Использованная команда для редактирования файла: nano
.
- Проверить, каким образом
vlad
войдет в систему. Сделать выводы.
Для входа потребовался пароль. Пароль 12
подошел. То есть, мы видим, что замена хэша пароля меняет пароль.
2. Создание пользователей вручную
- Вручную (без использования команды
useradd
илиadduser
) добавить пользователяdasha
.
Воспользуемся командой vipw
с выбором редактора nano
, чтобы другие команды не пробовали модифицировать его в это же время.
Добавленный пользователь dasha
в файле /etc/passwd
Создание домашней директории для пользователя dasha
Проверка домашней директории для пользователя dasha
- Пароль пользователя задать вручную (без использования команды
passwd
).
С помощью редактора nano
добавим новую строчку, содержащую данные о пользователе dasha
. Хэш пароля возьмем от двух других пользователей.
Добавленный пользователь dasha
в файле /etc/shadow
- Задать ограничения на пароль вручную, время действия пароля 3 дня (без использования команды
passwd
).
Добавление времени действия пароля для пользователя dasha
- Задать ограничения на пароль вручную, предупреждать о смене пароля за 5 дней (без использования команды
passwd
), убедиться в наличии предупреждений.
Добавление количества дней перед уведомлением об истечении срока пароля для пользователя dasha
Проверка предупреждения
3. Добавление пользователей в привилегированную группу (sudoers)
- Добавить пользователю
dasha
возможность выполнять команды от имени пользователяvlad
с запросом пароля.
1
sudo visudo
Добавление пользователю dasha
возможности выполнения команд от имени vlad
- Убедиться в возможности выполнения команд от имени пользователя
vlad
Выполнение команды whoami
от имени пользователя vlad
для dasha
- Добавить пользователю
anna
возможность выполнять команды от имени пользователяalex
без запроса пароля.
Для выполнения задания был создан пользователь
anna
Добавление пользователю anna
возможности выполнения команд от имени alex
Выполнение команды whoami
от имени пользователя alex
для anna
4. Разграничение прав пользователей
- Создать двух пользователей
donald
иrichard
.
Создание пользователя donald
Создание пользователя richard
- В директории
/tmp
создать файлmagic
.
Создание файла magic в директории /tmp
- Настроить его ACL таким образом, чтобы
donald
имел полный доступ к файлу, аrichard
мог только читать из него.
Настройка ACL для пользователей donald
и richard
1
sudo sysctl fs.protected_regular=0s
- Убедиться, что права настроены правильно, для этого записать от имени
donald
данные файл, а затем считать их от имениrichard
. Затем попробовать записать от имениrichard
и убедиться, что это сделать невозможно.
Запись в файл magic
от имени donald
Чтение файла magic
от имени richard
. Попытка записи в файл magic от имени richard
5. Рекурсивная настройка прав директорий
- В директории
/tmp
создать следующую структуру файлов:
Создание структуры файлов в директории /tmp
- Рекурсивно установить ACL права на всю указанную выше структуру так, чтобы
donald
мог писать в каждую поддиректорию.
Установка ACL прав на всю структуру для пользователя donald
- Убедиться в правильности установки прав, создав следующую структуру от имени
donald
:
Создание файлов пользователе donald
Созданные файлы
6. ACL по умолчанию
- В директории
/*tmp
создать поддиректориюincredible
.*
Создание директории incredible
- Установить на эту директорию ACL по умолчанию таким образом, чтобы
donald
мог только читать файлы, размещённые в нём, аrichard
мог только записывать в файлы в нём.
Установка ACL на директорию incredible
для пользователей donald
и richard
- Убедиться, что права настроены правильно, для этого создать файл
method
в этой директории и попробовать записать в него данные сначала от имениdonald
, убедиться, что это невозможно, а затем от имениrichard
. Аналогично, попробовать считать данные по очереди за каждого из созданных пользователей.
Создание файла method
Попытка записи в файл method
пользователем donald
Запись в файл method
и попытка чтения method
пользователем richard
Чтение файла method
пользователем donald
- Создать ещё один файл
cheese
вtmp
. Установить его права в ACL так, чтобыrichard
мог из него читать. Убедиться, чтоrichard
имеет возможность читать изcheese
. Для этого от имениrichard
записать в него данные, а затем вывести его содержимое на экран.
Создание в директории tmp
файла cheese
Установка прав для пользователя richard
для файла cheese
Запись и чтение пользователем richard
файла cheese
7. Эффективная маска
- Создать в директории
/tmp
файлhistory
и записать в него произвольный текст.
Создание файла history
в директории tmp
- Модифицировать ACL: дать пользователю
donald
право на чтение и запись вhistory
.
Установка прав ACL пользователю donald
для файла history
- Установить в ACL этого файла эффективную маску так, чтобы никто не мог записывать в файл.
Установка эффективной маски для файла history
- Убедиться в том, что
donald
не может ничего записать вhistory
, но может из него считать.
Попытка записи и чтение файла history
пользователем donald
8. Копирование ACL
- Создать в директории
/tmp
файлыnotebook
иillusion
и записать в них текстовую информацию. Установить этим файлам стандартные UNIX-права660
, чтобыdonald
иrichard
не имели доступа к файлам.
Создание файлов notebook
и illusion
и запись в них текста
Установка стандартных UNIX–прав для файлов notebook
и illusion
- Настроить ACL правила
notebook
так, чтобыdonald
мог читать из него, а правилаillusion
так, чтобы из него мог читатьrichard
.
Установка прав ACL для файлов notebook
и illusion
- Убедиться, что каждый из пользователей может читать из соответствующего файла.
Чтение файла notebook
пользователем donald
Чтение файла illusion
пользователем richard
- Скопировать ACL из файла
notebook
в файлillusion
.
Копирование ACL из notebook
в illusion
- Убедиться, что из файла
illusion
может читать только пользовательdonald
.
Попытка чтения файла illusion
пользователем richard
Чтение файла illusion
пользователем donald
Выводы
В данной лабораторной работе были отработаны навыки создания пользователей при помощи команд и вручную. Также настройка sudoers для исполнения команд от имени других пользователей. Также были отработаны всевозможные варианты настройки ACL прав.
Контрольные вопросы
1. Перечислите основные команды для работы с пользователями и группами
useradd
&adduser
userdel
&deluser
groupadd
&addgroup
newusers
users
passwd
su
sudo
2. Почему нужны два разных файла `/etc/passwd` и `/etc/shadow`, почему нельзя использовать один из них?
В файле /etc/passwd
хранится общая информация о пользователях.
В файле /etc/shadow
хранится информация о паролях пользователей.
Некоторые командам нужна информация о пользователях, например для нахождения UID по именам пользователей или наоборот. Поэтому файл /etc/passwd
общедоступен и каждый его может прочитать. А критически важная информация уже хранится в /etc/shadow
и доступ к ней имеет только root.
3. Зачем нужны SUID и SGID и Stickybit?
SUID
Пусть пользователь хочет сменить пароль, тогда ему для этого нужны права для записи в файл /etc/shadow
. Однако, файл /etc/shadow
доступен только root. Так, пользователь не смог бы сменить пароль. Но благодаря SUID–биту установленному для команды passwd
, эта команда запускается от имени root, что позволяет пользователю сменить пароль. Так, при использовании команды passwd
с этим битом, пользователь временно получает права root.
SGID
SGID аналогичен SUID — файл будет запущен от имени группы владельца файла.
Обычно его используют для директорий, чтобы автоматически устанавливать группу владельца для поддиректорий такой же как у главной директории.
Sticky bit
Например, мы создали общую папку для пользователей. Пользователь имеет право туда писать. Однако, так, он также может удалить абсолютно всё из этой папки. Но, установив sticky бит на эту директорию, пользователь в этой директории сможет удалить только те файлы, владельцем которых он является.
4. Зачем в Linux были введены списки контроля доступа?
Потому что с обычными правами невозможно задать права для нескольких пользователей или групп сразу.
5. Какие базовые утилиты используются для управления ACL?
getfacl
setfacl
6. Зачем нужны ACL по умолчанию?
Для того, чтобы эти ACL автоматически устанавливались для новых созданных файлов или директорий.
7. Как понять, что для файла установлен ACL?
При вызове команды ls -l
в конце прав будет символ +
.
8. Чем лучше воспользоваться, когда необходимо разрешить
выполнение конкретного исполняемого файла конкретному пользователю, ACL или прописать правило в sudoers?</font>
В случае, если выполнение нужно было бы от имени root, я бы воспользовался ACL, так как, удалив файл, удалятся и привилегии. А, если мы удалили этот исполняемый файл, но sudoers не изменили, то можно создать файл и запустить его. С точки зрения пентеста.
В ином случае, лучше воспользоваться sudoers.