configurations/linux/chmod.md

205 lines
5.1 KiB
Markdown
Raw Normal View History

2022-05-10 14:24:58 +00:00
# Права доступа
`chmod` (*change mode*) — команда для изменения прав доступа к файлам и каталогам.
Синтаксис:
```sh
chmod опции права /путь/к/файлу
```
где `опции`:
- `-c` - выводить информацию обо всех изменениях
- `-f` - не выводить сообщения об ошибках
- `-v` - выводить максимум информации
- `-R` - включить поддержку рекурсии
2022-05-10 14:24:58 +00:00
## Права и пользователи
Основные права на файл (директорию):
||Атрибут|Описание|
|:-:|:-:|-|
|Первый символ|`r`| чтение (*reading*)|
|Второй символ|`w`| запись (*writing*)|
|Третий символ|`x`| выполнение (*execution*)|
Расширенные права:
|Права|Числовое значение|Относительный режим|Применение к файлам|Применение к каталогам|
|:-:|:-:|:-:|-|-|
|`SUID`|`4`|`u+s`|Пользователь выполняет файл с разрешениями владельца файла|Нет смысла применять|
|`SGID`|`2`|`g+s`|Пользователь выполняет файл с разрешениями владельца группы|Файлы, созданные в каталоге получают одного и того же владельца группы|
|`sticky bit`|`1`|`+t`|Нет смысла применять|Запрещает пользователям удалять файлы от других пользователей|
2022-05-10 14:24:58 +00:00
Категории пользователей, для которых вы можете установить эти права на файл:
- `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
```
2022-05-10 14:24:58 +00:00
Комбинации прав:
```sh
r-- 4 100
-w- 2 010
--x 1 001
2022-05-10 14:24:58 +00:00
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
2022-05-10 14:24:58 +00:00
-wx 3 (2 + 1) 011
r-- 4 100
2022-05-10 14:24:58 +00:00
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
```