ADD linux
All checks were successful
Build MkDocs / build-and-deploy (push) Successful in 18s

This commit is contained in:
Илья Макаров 2025-03-22 13:31:23 +03:00
parent e3d5d9e52d
commit a92bf6e8d2

View File

@ -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_name>
# Пример вывода:
# 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-- <file_name>
```
sudo setfacl -R -m u:prometheus:rX /etc/letsencrypt/
#### Разное
Маска прав (`umask`) одна и та же для файлов и директорий, но результат применения маски отличается, поскольку начальные права у файлов и директорий разные (666 для файлов, 777 для директорий). То есть `umask` не различает файлы и директории, она применяется одинаково ко всем объектам, но итоговые права различаются из-за исходных прав.