configurations/linux/chmod.md

205 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Права доступа
`chmod` (*change mode*) — команда для изменения прав доступа к файлам и каталогам.
Синтаксис:
```sh
chmod опции права /путь/к/файлу
```
где `опции`:
- `-c` - выводить информацию обо всех изменениях
- `-f` - не выводить сообщения об ошибках
- `-v` - выводить максимум информации
- `-R` - включить поддержку рекурсии
## Права и пользователи
Основные права на файл (директорию):
||Атрибут|Описание|
|:-:|:-:|-|
|Первый символ|`r`| чтение (*reading*)|
|Второй символ|`w`| запись (*writing*)|
|Третий символ|`x`| выполнение (*execution*)|
Расширенные права:
|Права|Числовое значение|Относительный режим|Применение к файлам|Применение к каталогам|
|:-:|:-:|:-:|-|-|
|`SUID`|`4`|`u+s`|Пользователь выполняет файл с разрешениями владельца файла|Нет смысла применять|
|`SGID`|`2`|`g+s`|Пользователь выполняет файл с разрешениями владельца группы|Файлы, созданные в каталоге получают одного и того же владельца группы|
|`sticky bit`|`1`|`+t`|Нет смысла применять|Запрещает пользователям удалять файлы от других пользователей|
Категории пользователей, для которых вы можете установить эти права на файл:
- `u` - владелец файла;
- `g` - группа файла;
- `o` - все остальные пользователи;
- `a` - все пользователи (или `ugo`)
```sh
400 r-- --- --- │
200 -w- --- --- ├── права пользователя (u - user)
100 --x --- --- │
040 --- r-- --- │
020 --- -w- --- ├── права группы (g - group)
010 --- --x --- │
004 --- --- r-- │
002 --- --- -w- ├── права всех остальных (o - other)
001 --- --- --x │
```
Расширенные права:
```sh
400 --s ── SUID
200 --s ── SGID
100 --t ── sticky bit
```
Если в триаде присутствует право на выполнение (`x`), то символ устанавливает строчный, иначе - заглавный:
```sh
drwSr-sr-T 2 alexander alexander 4096 мая 10 19:36 folder
```
Комбинации прав:
```sh
r-- 4 100
-w- 2 010
--x 1 001
rw- 6 (4 + 2) 110
r-x 5 (4 + 1) 101
-wx 3 (2 + 1) 011
rwx 7 (4 + 2 + 1) 111
```
или
```sh
--x 1 001
-w- 2 010
-wx 3 (2 + 1) 011
r-- 4 100
r-x 5 (4 + 1) 101
rw- 6 (4 + 2) 110
rwx 7 (4 + 2 + 1) 111
```
Значениями по умолчанию являются:
- для файлов: `644` (`-rw-r--r--`)
- для каталогов: `755` (`drwxr-xr-x`), где `d` - directory
## Использование
Установка|добавление|изменение|удаление прав может осуществляться как установкой цифровым значением, так и символьным:
- Установка: `=`
- Добавление: `+`
- Удаление: `-`
Например, установка прав:
```sh
u=rwx,g=rx,o=rx
```
или
```sh
u=rwx,go=rx
```
Добавление прав:
```sh
u+s,go+w
```
Удаление прав:
```sh
ug-wx,o=
```
## Примеры
Установка прав на чтение и запись пользователю и группе и на только чтение всем остальным:
```sh
chmod 664 file
```
или
```sh
chmod ug=rw,o=r file
```
результат:
```sh
-rw-rw-r-- 1 alexander alexander 0 мая 10 19:05 file
```
Установить права на чтение, запись и выполнение только пользователю:
```sh
chmod 700 file
```
или
```sh
chmod u=rwx,go= file
```
результат:
```sh
-rwx------ 1 alexander alexander 0 мая 10 19:05 file
```
а теперь добавить только на выполнение группе и всем остальным:
```sh
chmod 711 file
```
или
```sh
chmod go+x file
```
результат:
```sh
-rwx--x--x 1 alexander alexander 0 мая 10 19:05 file
```
Установить права на каталог (`drwxr-xr-x`), чтобы удалить файл внутри каталога мог только владелец файла:
```sh
chmod 1755 folder
```
или
```sh
chmod +t folder
```
результат:
```sh
drwxr-xr-t 2 alexander alexander 4096 мая 10 19:36 folder
```