This commit is contained in:
parent
e3d5d9e52d
commit
a92bf6e8d2
@ -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` не различает файлы и директории, она применяется одинаково ко всем объектам, но итоговые права различаются из-за исходных прав.
|
||||
|
Loading…
x
Reference in New Issue
Block a user