lab 7
.docxЛабораторная работа №7
Дискреционное управление доступом
Практическая часть
Задание 1.
Поиск файлов с заданными правами доступа:
Найдите все регулярные (обычные, regular) файлы, у которых установлены биты suid и/или sgid. Во время поиска осуществляйте проверку, что найдены именно требуемые файлы.
find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;
/: Это корневой каталог, откуда начнется поиск. Вы можете изменить путь по вашему усмотрению.
-type f: Указывает find искать только регулярные файлы.
\( -perm -4000 -o -perm -2000 \): Эта часть определит условия поиска. -perm -4000 ищет файлы с установленным битом SUID, а -perm -2000 ищет файлы с установленным битом SGID. Опция -o выполняет логическое ИЛИ между двумя условиями.
-exec ls -l {} \;: Позволяет выполнить команду ls -l для отображения подробной информации о найденных файлах.
Сохраните результат поиска (абсолютные имена файлов) в файл suid_sgid.txt
find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \; > suid_sgid.txt
nano (имя файла)
В каких каталогах больше всего файлов с установленными suid и/или sgid битами?
find / -type f \( -perm -4000 -o -perm -2000 \) -exec dirname {} \; | sort | uniq -c | sort -nr
find / -type f \( -perm -4000 -o -perm -2000 \) -exec dirname {} \;: Эта часть ищет регулярные файлы с установленными битами SUID и/или SGID и использует dirname для вывода их каталогов.
sort: Сортирует результаты.
uniq -c: Подсчитывает уникальные значения (количество файлов) в каждом каталоге.
sort -nr: Снова сортирует результаты по убыванию количества файлов.
| (пайп, или канал):
Перенаправляет вывод предыдущей команды на вход следующей команды.
Сколько файлов имеют установленный бит suid?
find / -type f -perm -4000 | wc -l
Сколько файлов имеют установленный бит sgid?
find / -type f -perm -2000 | wc -l
У скольких файлов установлен и suid и sgid биты?
find / -type f -perm -4000 -perm -2000 | wc -l
Задание 2.
Изменение дискреционных прав доступа:
Задайте значение маски режима доступа (пользовательской маски) так, чтобы права были только у владельца
umask 077
Эта команда устанавливает umask в 077, что означает, что права доступа будут только у владельца файла, а группа и остальные не будут иметь прав на чтение, запись и выполнение.
В своем домашнем каталоге создайте ветку каталогов
tmp1/tmp2/tmp3/tmp4/tmp5
mkdir -p ~/tmp1/tmp2/tmp3/tmp4/tmp5
В каталогах tmp2 и tmp4 создайте файлы с именами file2 и file4 соответственно.
touch ~/tmp1/tmp2/file2
touch ~/tmp1/tmp4/file4
Проверьте, какие права доступа установлены на созданные файлы и каталоги.
ls -l ~/tmp1/tmp2 ~/tmp1/tmp4
Используя команду find, измените права доступа на все каталоги начиная с tmp2 так, чтобы группа-владелец имела все права доступа, а все остальные могли бы только просматривать содержимое каталогов. Права доступа на файлы file2 и file4 должны остаться прежними.
find ~/tmp1/tmp2 -type d -exec chmod 750 {} \;
Эта команда ищет все каталоги (-type d) внутри tmp1/tmp2 и использует chmod для установки прав доступа 750. Здесь:
7 означает права доступа для владельца (пользователя): чтение (4) + запись (2) + выполнение (1),
5 означает права доступа для группы: чтение (4) + выполнение (1),
0 означает права доступа для остальных: никаких прав.
Задание 3.
Создание общих каталогов для пользователей с использованием общей группы и установкой бита sgid на каталог
Создайте каталог /home/Dir1.
sudo mkdir /home/Dir1
Создайте учетные записи user1 и user2 (если они не были созданы ранее).
Создайте группу shtat. Поместите пользователей user1 и user2 в группу shtat (вторичная группа)
sudo groupadd shtat
sudo usermod -aG shtat user1
sudo usermod -aG shtat user2
араметр -aG означает "append to group" и "add supplementary groups", что позволяет добавить пользователя в группу, не заменяя его текущие группы.
Сделайте так, чтобы участники группы shtat (пользователи user1 и user2) могли создавать и редактировать файлы в каталоге /home/Dir1. При этом остальные пользователи не должны иметь доступ к файлам в /home/Dir1.
меняю владельца и группу
sudo chown :shtat /home/Dir1
Эта команда устанавливает группу shtat в качестве группы-владельца для каталога /home/Dir1.
Установите права доступа так, чтобы группа shtat имела полные права, а остальные пользователи не имели никаких прав:
sudo chmod 770 /home/Dir1
Эта команда устанавливает права на каталог /home/Dir1 следующим образом:
Владелец (user): чтение, запись, выполнение (4+2+1 = 7),
Группа (shtat): чтение, запись, выполнение (4+2+1 = 7),
Остальные: никаких прав (0).
С помощью PAM-модуля pam_umask.so задать для учетных записей user1 и user2 маски режима доступа (пользовательские маски) так, чтобы группа-владелец имела все права на создаваемые файлы.
Отредактируйте файл /etc/pam.d/common-session:
sudo nano /etc/pam.d/common-session
Добавьте следующую строку в конец файла:
session optional pam_umask.so user1=002,user2=002
Эта строка устанавливает маску режима доступа для user1 и user2 в 002, что означает, что группа-владелец будет иметь все права.
Сохранить и закрыть редактор
Повторить те же шаги для файла /etc/pam.d/common-session-noninteractive:
Зайти под учетной записью user1 и создать файл project1.txt в каталоге /home/Dir1. Записать в этот файл текущую дату.
su - user1
cd /home/Dir1 - перейти в каталог
echo $(date) > project1.txt
Эта команда создаст файл project1.txt и запишет в него текущую дату и время.
Зайти под учетной записью user2 и изменить файл /home/Dir1/project1.txt, добавив информацию о текущей версии Astra Linux.
su - user2
cd /home/Dir1
nano project1.txt
Добавьте информацию о текущей версии Astra Linux в файл и сохраните изменения.
Задание 4.
Создание общих каталогов для пользователей с использованием файловых списков доступа
Создайте каталог /home/Dir2
sudo mkdir /home/Dir2
С помощью пользовательских списков доступа сделайте так, чтобы пользователи user1 и user2 могли создавать/удалять файлы и каталоги внутри /home/Dir2, а также изменять содержимое файлов. При этом, никто другой не может видеть содержимое внутри общего каталога.
sudo chmod 770 /home/Dir2 (права доступа)
sudo setfacl -m u:user1:rwx,u:user2:rwx /home/Dir2
Эта команда устанавливает ACL для user1 и user2, предоставляя им полные права (чтение, запись, выполнение) внутри /home/Dir2.
-m: Этот флаг указывает, что вы хотите изменить (modify) ACL. Вы можете использовать этот флаг вместе с setfacl для добавления или изменения прав доступа.
u:user1:rwx,u:user2:rwx: Это определяет ACL для пользователей user1 и user2. Здесь:
u:user1:rwx устанавливает права (чтение, запись, выполнение) для user1.
u:user2:rwx устанавливает права (чтение, запись, выполнение) для user2.
/home/Dir2: Это путь к файлу или каталогу, для которого вы устанавливаете ACL.
sudo setfacl -m o::--- /home/Dir2
Эта команда устанавливает права для остальных (Others) в ---, что означает отсутствие прав на чтение, запись и выполнение.
Зайти под учетной записью user1 и создать файл project2.txt в каталог /home/Dir2. Записать в этот файл дату и время последней загрузки системы.
sudo -u user1 -i
cd /home/Dir2
echo "Last system boot: $(who -b)" > project2.txt
Эта команда использует who -b, чтобы получить информацию о последней загрузке системы, и записывает эту информацию в файл project2.txt.
Зайти под учетной записью user2 и изменить файл /home/Dir2/project2.txt, добавив информацию о кодовом имени данного выпуска Astra Linux.
su - user2
cd /home/Dir2
nano project2.txt
Добавьте информацию о кодовом имени выпуска Astra Linux в файл и сохраните изменения.
Закройте текстовый редактор.
Задание 5.
Использование атрибута файла a (append)
Создайте в домашнем каталоге файл my.log.
touch ~/my.log
Установите на файл my.log атрибут a (append).
chmod +a <ваше_имя> my.log
Попробуйте: удалить файл, изменить файл в редакторе, добавить информацию в конец файла. Действия делайте как под своей учетной записью, так и под учетной записью root.
rm ~/my.log
nano ~/my.log
echo "Новая информация" >> ~/my.log
под root
sudo rm ~/my.log
sudo nano ~/my.log
Вопросы для проверки
Какая команда разрешит выполнять файл script1 всем пользователям?
У каталога установлены права rwx-sx--x. Переведите права в числовую форму.
Сделайте так, чтобы пользователь user1 мог изменять содержимое новых файлов в каталоге Dir.