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