From a92bf6e8d20f35c20ad7d72350c35ca2877b7ee2 Mon Sep 17 00:00:00 2001 From: ilyamak04 Date: Sat, 22 Mar 2025 13:31:23 +0300 Subject: [PATCH] ADD linux --- docs/linux/Заметки.md | 86 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/docs/linux/Заметки.md b/docs/linux/Заметки.md index 101c82c..2d54a11 100644 --- a/docs/linux/Заметки.md +++ b/docs/linux/Заметки.md @@ -132,6 +132,92 @@ echo `date` ``` Bash сначала выполнит команду `date` (внутри кавычек), затем передаст её результат команде `echo`. +### ACL + +ACL (Access Control Lists) — позволяет более гибко управлять правами доступа к файлам в Linux. ACL позволяет назначать права для конкретных пользователей и групп, не меняя владельца файла или группу. + +Для работы с ACL используются две основные команды: + +- `setfacl` - устанавливает ACL для файлов и каталогов +- `getfacl` - показывает текущие ACL для файлов и каталогов + + **Синтаксис `setfacl`:** +```bash + setfacl [опции] [действие] [пользователь/группа]:[права] файл +``` + +**Опции:** + +- `-m` (modify) — изменить ACL. +- `-x` (remove) — удалить ACL. +- `-b` (remove all) — удалить все ACL. +- `-R` (recursive) — применить рекурсивно ко всем файлам и подкаталогам. +- `-d` (default) — установить ACL по умолчанию для новых файлов в каталоге. + +**Действия:** + +- `u:пользователь:права` — установить права для пользователя. +- `g:группа:права` — установить права для группы. +- `m::права` — изменить маску (максимальные права для группы и других). + +**Права:** + +- `r` — чтение. +- `w` — запись. +- `x` — выполнение (для каталогов — доступ). +- `X` — выполнение, только если это каталог или файл уже имеет право на выполнение. +- `-` — отсутствие прав. + +**Примеры использования:** + +```bash +# Дать пользователю prometheus права на чтение файла +sudo setfacl -m u:prometheus:r /etc/letsencrypt/live/prometheus.mcarov.pro/fullchain.pem +``` + +```bash +# Дать пользователю prometheus права на чтение и выполнение для каталога +sudo setfacl -m u:prometheus:rX /etc/letsencrypt/live/prometheus.mcarov.pro/ +``` + +```bash +# Удалить ACL для пользователя prometheus +sudo setfacl -x u:prometheus /etc/letsencrypt/live/prometheus.mcarov.pro/fullchain.pem +``` + +```bash +# Удалить все ACL +sudo setfacl -b /etc/letsencrypt/live/prometheus.mcarov.pro/fullchain.pem +``` + +```bash +# Просмотр ACL +getfacl + +# Пример вывода: + +# file: file.txt +# owner: user1 +# group: group1 +user::rw- +user:username:rwx +group::r-- +mask::rwx +other::r-- +``` + +**Маска (mask)** — это специальная запись ACL, которая ограничивает максимальные права доступа для всех записей ACL, кроме владельца файла и группы. Права владельца файла (owner) и группы (group), указанные в стандартных правах доступа (например, через chmod), не ограничиваются маской. Маска влияет только на дополнительные записи ACL, созданные для конкретных пользователей или групп. + +Например, если маска установлена на r--, то даже если пользователю назначены права rwx, он сможет только читать файл. + +```bash +# Задать маску +setfacl -m m::r-- +``` + +sudo setfacl -R -m u:prometheus:rX /etc/letsencrypt/ + + #### Разное Маска прав (`umask`) одна и та же для файлов и директорий, но результат применения маски отличается, поскольку начальные права у файлов и директорий разные (666 для файлов, 777 для директорий). То есть `umask` не различает файлы и директории, она применяется одинаково ко всем объектам, но итоговые права различаются из-за исходных прав.