diff --git a/labs/lab3/report.typ b/labs/lab3/report.typ
index 7e712bc..0d6386d 100644
--- a/labs/lab3/report.typ
+++ b/labs/lab3/report.typ
@@ -31,8 +31,8 @@
#align(center)[Направление подготовки 11.03.02]
\
\
-#align(center)[Лабораторная работа №2]
-#align(center)[Создание и использование размерных типов данных]
+#align(center)[Лабораторная работа №3]
+#align(center)[Подсистема хранения]
\
\
\ //#align(center)[Вариант 19]
diff --git a/labs/lab4/assets/1.png b/labs/lab4/assets/1.png
new file mode 100644
index 0000000..ac2d611
Binary files /dev/null and b/labs/lab4/assets/1.png differ
diff --git a/labs/lab4/assets/10.png b/labs/lab4/assets/10.png
new file mode 100644
index 0000000..c6490b9
Binary files /dev/null and b/labs/lab4/assets/10.png differ
diff --git a/labs/lab4/assets/11.png b/labs/lab4/assets/11.png
new file mode 100644
index 0000000..b71f8ca
Binary files /dev/null and b/labs/lab4/assets/11.png differ
diff --git a/labs/lab4/assets/12.png b/labs/lab4/assets/12.png
new file mode 100644
index 0000000..524854d
Binary files /dev/null and b/labs/lab4/assets/12.png differ
diff --git a/labs/lab4/assets/13.png b/labs/lab4/assets/13.png
new file mode 100644
index 0000000..73e7abb
Binary files /dev/null and b/labs/lab4/assets/13.png differ
diff --git a/labs/lab4/assets/14.png b/labs/lab4/assets/14.png
new file mode 100644
index 0000000..bcfbe24
Binary files /dev/null and b/labs/lab4/assets/14.png differ
diff --git a/labs/lab4/assets/15.png b/labs/lab4/assets/15.png
new file mode 100644
index 0000000..8507561
Binary files /dev/null and b/labs/lab4/assets/15.png differ
diff --git a/labs/lab4/assets/16.png b/labs/lab4/assets/16.png
new file mode 100644
index 0000000..cd50735
Binary files /dev/null and b/labs/lab4/assets/16.png differ
diff --git a/labs/lab4/assets/17.png b/labs/lab4/assets/17.png
new file mode 100644
index 0000000..cbc13ad
Binary files /dev/null and b/labs/lab4/assets/17.png differ
diff --git a/labs/lab4/assets/18.png b/labs/lab4/assets/18.png
new file mode 100644
index 0000000..ccfcabc
Binary files /dev/null and b/labs/lab4/assets/18.png differ
diff --git a/labs/lab4/assets/19.png b/labs/lab4/assets/19.png
new file mode 100644
index 0000000..f518fdf
Binary files /dev/null and b/labs/lab4/assets/19.png differ
diff --git a/labs/lab4/assets/2.png b/labs/lab4/assets/2.png
new file mode 100644
index 0000000..cbd8b7a
Binary files /dev/null and b/labs/lab4/assets/2.png differ
diff --git a/labs/lab4/assets/20.png b/labs/lab4/assets/20.png
new file mode 100644
index 0000000..8d814e4
Binary files /dev/null and b/labs/lab4/assets/20.png differ
diff --git a/labs/lab4/assets/21.png b/labs/lab4/assets/21.png
new file mode 100644
index 0000000..c841d5e
Binary files /dev/null and b/labs/lab4/assets/21.png differ
diff --git a/labs/lab4/assets/22.png b/labs/lab4/assets/22.png
new file mode 100644
index 0000000..91976cb
Binary files /dev/null and b/labs/lab4/assets/22.png differ
diff --git a/labs/lab4/assets/23.png b/labs/lab4/assets/23.png
new file mode 100644
index 0000000..b18bfba
Binary files /dev/null and b/labs/lab4/assets/23.png differ
diff --git a/labs/lab4/assets/24.png b/labs/lab4/assets/24.png
new file mode 100644
index 0000000..cf95f27
Binary files /dev/null and b/labs/lab4/assets/24.png differ
diff --git a/labs/lab4/assets/25.png b/labs/lab4/assets/25.png
new file mode 100644
index 0000000..032de28
Binary files /dev/null and b/labs/lab4/assets/25.png differ
diff --git a/labs/lab4/assets/26.png b/labs/lab4/assets/26.png
new file mode 100644
index 0000000..34198de
Binary files /dev/null and b/labs/lab4/assets/26.png differ
diff --git a/labs/lab4/assets/27.png b/labs/lab4/assets/27.png
new file mode 100644
index 0000000..ac787de
Binary files /dev/null and b/labs/lab4/assets/27.png differ
diff --git a/labs/lab4/assets/28.png b/labs/lab4/assets/28.png
new file mode 100644
index 0000000..94fa71e
Binary files /dev/null and b/labs/lab4/assets/28.png differ
diff --git a/labs/lab4/assets/29.png b/labs/lab4/assets/29.png
new file mode 100644
index 0000000..0e98cd0
Binary files /dev/null and b/labs/lab4/assets/29.png differ
diff --git a/labs/lab4/assets/3.png b/labs/lab4/assets/3.png
new file mode 100644
index 0000000..b90870b
Binary files /dev/null and b/labs/lab4/assets/3.png differ
diff --git a/labs/lab4/assets/30.png b/labs/lab4/assets/30.png
new file mode 100644
index 0000000..af7ea0e
Binary files /dev/null and b/labs/lab4/assets/30.png differ
diff --git a/labs/lab4/assets/31.png b/labs/lab4/assets/31.png
new file mode 100644
index 0000000..fc09df4
Binary files /dev/null and b/labs/lab4/assets/31.png differ
diff --git a/labs/lab4/assets/32.png b/labs/lab4/assets/32.png
new file mode 100644
index 0000000..b18e7c9
Binary files /dev/null and b/labs/lab4/assets/32.png differ
diff --git a/labs/lab4/assets/33.png b/labs/lab4/assets/33.png
new file mode 100644
index 0000000..6b3156c
Binary files /dev/null and b/labs/lab4/assets/33.png differ
diff --git a/labs/lab4/assets/34.png b/labs/lab4/assets/34.png
new file mode 100644
index 0000000..47566d0
Binary files /dev/null and b/labs/lab4/assets/34.png differ
diff --git a/labs/lab4/assets/35.png b/labs/lab4/assets/35.png
new file mode 100644
index 0000000..c1ec0d2
Binary files /dev/null and b/labs/lab4/assets/35.png differ
diff --git a/labs/lab4/assets/36.png b/labs/lab4/assets/36.png
new file mode 100644
index 0000000..82a9e49
Binary files /dev/null and b/labs/lab4/assets/36.png differ
diff --git a/labs/lab4/assets/37.png b/labs/lab4/assets/37.png
new file mode 100644
index 0000000..3134a1a
Binary files /dev/null and b/labs/lab4/assets/37.png differ
diff --git a/labs/lab4/assets/38.png b/labs/lab4/assets/38.png
new file mode 100644
index 0000000..ab9478e
Binary files /dev/null and b/labs/lab4/assets/38.png differ
diff --git a/labs/lab4/assets/39.png b/labs/lab4/assets/39.png
new file mode 100644
index 0000000..08a921b
Binary files /dev/null and b/labs/lab4/assets/39.png differ
diff --git a/labs/lab4/assets/4.png b/labs/lab4/assets/4.png
new file mode 100644
index 0000000..7b9be5a
Binary files /dev/null and b/labs/lab4/assets/4.png differ
diff --git a/labs/lab4/assets/40.png b/labs/lab4/assets/40.png
new file mode 100644
index 0000000..30b183e
Binary files /dev/null and b/labs/lab4/assets/40.png differ
diff --git a/labs/lab4/assets/41.png b/labs/lab4/assets/41.png
new file mode 100644
index 0000000..8804736
Binary files /dev/null and b/labs/lab4/assets/41.png differ
diff --git a/labs/lab4/assets/42.png b/labs/lab4/assets/42.png
new file mode 100644
index 0000000..a03a43d
Binary files /dev/null and b/labs/lab4/assets/42.png differ
diff --git a/labs/lab4/assets/5.png b/labs/lab4/assets/5.png
new file mode 100644
index 0000000..f5fceb7
Binary files /dev/null and b/labs/lab4/assets/5.png differ
diff --git a/labs/lab4/assets/6.png b/labs/lab4/assets/6.png
new file mode 100644
index 0000000..743d862
Binary files /dev/null and b/labs/lab4/assets/6.png differ
diff --git a/labs/lab4/assets/7.png b/labs/lab4/assets/7.png
new file mode 100644
index 0000000..9b9c2cd
Binary files /dev/null and b/labs/lab4/assets/7.png differ
diff --git a/labs/lab4/assets/8.png b/labs/lab4/assets/8.png
new file mode 100644
index 0000000..156c7e6
Binary files /dev/null and b/labs/lab4/assets/8.png differ
diff --git a/labs/lab4/assets/9.png b/labs/lab4/assets/9.png
new file mode 100644
index 0000000..e99de56
Binary files /dev/null and b/labs/lab4/assets/9.png differ
diff --git a/labs/lab4/report.pdf b/labs/lab4/report.pdf
new file mode 100644
index 0000000..255b1ea
Binary files /dev/null and b/labs/lab4/report.pdf differ
diff --git a/labs/lab4/report.typ b/labs/lab4/report.typ
new file mode 100644
index 0000000..0e366e2
--- /dev/null
+++ b/labs/lab4/report.typ
@@ -0,0 +1,255 @@
+#set text(size: 1.3em)
+#set page(footer: context {
+ if counter(page).get().first() > 1 [
+ #align(center)[
+ #counter(page).display("1")
+ ]
+ ]
+})
+
+
+#show raw.where(block: false): box.with(
+ fill: luma(240),
+ inset: (x: 3pt, y: 0pt),
+ outset: (y: 3pt),
+ radius: 2pt,
+)
+
+#show raw.where(block: true): block.with(
+ fill: luma(240),
+ inset: 10pt,
+ radius: 4pt,
+)
+
+// title
+
+#align(center)[Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики]
+\
+\
+\
+#align(center)[Факультет инфокоммуникационных технологий]
+#align(center)[Направление подготовки 11.03.02]
+\
+\
+#align(center)[Лабораторная работа №4]
+#align(center)[Элементы безопасности в Linux]
+\
+\
+\ //#align(center)[Вариант 19]
+\
+\
+\
+\
+\
+\
+\
+#align(right)[Выполнил:]
+#align(right)[Дощенников Никита Андреевич]
+#align(right)[Группа: К3221]
+#align(right)[Проверил:]
+#align(right)[Береснев Артем Дмитриевич]
+\
+\
+#align(center)[Санкт-Петербург]
+#align(center)[2025]
+
+#pagebreak()
+
+=== Цель работы:
+
+Получить практические навыки работы с сетевой подсистемой в Linux, научится управлять пользователями, правами на файлы и каталоги, научиться
+настраивать сетевые интерфейсы, NAT и настраивать ssh.
+
+=== Часть 1. Подготовка конфигурации.
+
+У себя на машине я создал новую виртуальную сеть:
+
+```bash
+virsh net-define /tmp/intnet.xml
+virsh net-autostart intnet
+virsh net-start intnet
+```
+
+Содержание файла `/tmp/intnet.xml`:
+
+```xml
+
+ intnet
+
+
+```
+
+К первой машине я добавил дополнительный интерфейс, подключенный к сети intnet:
+
+```bash
+virsh attach-interface --domain ubuntu24.04 --type network --source intnet --model virtio --config --live
+```
+
+Вторую машину я полностью перевел во внутреннюю сеть:
+
+```bash
+virsh detach-interface --domain ubuntu24.04-clone --type network --mac 52:54:00:76:1f:db --config --live
+virsh attach-interface --domain ubuntu24.04-clone --type network --source intnet --model virtio --config --live
+```
+
+#align(center)[#image("assets/1.png")]
+#align(center)[#image("assets/2.png")]
+
+На `c7-1`:
+
+#align(center)[#image("assets/3.png")]
+#align(center)[#image("assets/5.png")]
+#align(center)[#image("assets/6.png")]
+#align(center)[#image("assets/8.png")]
+
+На `c7-2`:
+
+#align(center)[#image("assets/4.png")]
+#align(center)[#image("assets/7.png")]
+#align(center)[#image("assets/9.png")]
+
+
+=== Часть 2. Создание пользователей и настройка OpenSSH Server (sshd).
+
+Я создал пользователя на каждой машине:
+
+#align(center)[#image("assets/10.png")]
+#align(center)[#image("assets/11.png")]
+
+Затем я настроил `ssh` на обеих машинах:
+
+#align(center)[#image("assets/12.png")]
+
+И перезапустил daemon:
+
+#align(center)[#image("assets/13.png")]
+
+Все те же действия я проделал на второй машине.
+
+Попробовал подключиться с `c7-1` на `c7-2`:
+
+#align(center)[#image("assets/14.png")]
+
+=== Часть 3. Подключение к виртуальной машине c7-1 по ssh через NAT VirtualBox.
+
+У себя на машине:
+
+#align(center)[#image("assets/15.png")]
+
+#align(center)[#image("assets/16.png")]
+#align(center)[#image("assets/17.png")]
+
+Копирование файла с `c7-2` на `c7-1`:
+
+#align(center)[#image("assets/18.png")]
+
+Копирование с `c7-2` на `c7-1`:
+
+#align(center)[#image("assets/19.png")]
+
+=== Часть 4. Установка и настройка NAT в iptables.
+
+Я установил `iptables`:
+
+#align(center)[#image("assets/20.png")]
+
+Настроил клиентский NAT, то есть настроил связь между `10.0.0.0/24` и `enp1s0` через роутер `c7-1`.
+
+#align(center)[#image("assets/21.png")]
+
+Затем я разрешил форвардинг трафика на `c7-1`:
+
+#align(center)[#image("assets/22.png")]
+
+После этого я проверил работу интернета с `c7-2`:
+
+#align(center)[#image("assets/23.png")]
+
+Я настроил проброс порта:
+
+#align(center)[#image("assets/24.png")]
+
+На `c7-1`:
+
+#align(center)[#image("assets/25.png")]
+
+Локально:
+
+#align(center)[#image("assets/26.png")]
+
+Текущие правила:
+
+#align(center)[#image("assets/27.png")]
+
+Настройки не сбрасываются после перезагрузки:
+
+#align(center)[#image("assets/28.png")]
+
+=== Часть 5. Настройка прав на файлы и каталоги.
+
+Я создал скрипт `mkuser.sh`:
+
+```bash
+#!/usr/bin/env bash
+set -euo pipefail
+count="${1:?}"
+start="${2:?}"
+for ((i=0;i/dev/null 2>&1 || adduser --disabled-password --gecos "" "$u"
+ echo "${u}:${p}" | chpasswd
+done
+```
+
+#align(center)[#image("assets/29.png")]
+#align(center)[#image("assets/30.png")]
+
+Затем я создал группу:
+
+#align(center)[#image("assets/31.png")]
+
+Членам группы я выдал полный доступ, а остальным только чтение:
+
+#align(center)[#image("assets/32.png")]
+#align(center)[#image("assets/33.png")]
+
+Проверим:
+
+#align(center)[#image("assets/34.png")]
+
+Я сделал так, чтобы в `/DATA/sec1` любой мог писать, но удалять - только свои файлы:
+
+#align(center)[#image("assets/35.png")]
+
+Проверим:
+
+#align(center)[#image("assets/36.png")]
+
+`/DATA/sec2` настроен на полный доступ для спец. пользователя, для пользователей `uN` только чтение, для прочих нельзя.
+
+#align(center)[#image("assets/37.png")]
+
+Проверим:
+
+#align(center)[#image("assets/38.png")]
+
+В `/DATA/sec3` скопировал `nano` и любой пользователь смог изменять с помощью его файлы в нем.
+
+#align(center)[#image("assets/39.png")]
+
+Проверим:
+
+#align(center)[#image("assets/40.png")]
+#align(center)[#image("assets/41.png")]
+
+Права:
+
+#align(center)[#image("assets/42.png")]
+
+=== Часть 6. Настройка аутентификации по ключу.
+
+=== Часть 7. Sudo.
+
+=== Часть 8. Получение информации о пользователях.