205 lines
5.1 KiB
Markdown
205 lines
5.1 KiB
Markdown
# Права доступа
|
||
|
||
`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
|
||
```
|