В Linux вы можете назначить разрешения на чтение, запись и выполнение файлов и папок для трех категорий пользователей: владельца, группы и других (не являющихся ни владельцем, ни членами группы).
Права доступа к файлам и папкам в Linux
На скриншоте выше разрешения представлены в виде строки символов drwxr-xr-x. Первый символ (d или -) указывает на то, что это каталог или файл, соответственно. Остальные девять символов определяют разрешения для владельца (пользователя), группы и других лиц.
Эти девять символов сгруппированы в наборы по три, каждый из которых представляет собой разрешения для определенной категории пользователей (r - чтение, w - запись, x - выполнение, и - - отсутствие разрешения). В нашем примере разрешения следующие:
| Категория | Буква | Разрешение | Октал | Чтение | Запись | Выполнение |
| User (root) | u | rwx | 7 | Да | Да | Да |
| Group (root) | g | r-x | 5 | Да | Нет | Да |
| Other | o | r-x | 5 | Да | Нет | Да |
Каждая категория представлена одной буквой (u, g, o). Для представления разрешений в виде одного числа используется восьмеричная нотация. Например, r-x преобразуется в двоичное 101, а затем в восьмеричное 5. Вот краткая справочная таблица:
| Октал | Бинарные | Разрешение |
| 0 | 0 | нет |
| 1 | 1 | выполнить |
| 2 | 10 | писать |
| 3 | 11 | писать, выполнять |
| 4 | 100 | читать |
| 5 | 101 | читать, выполнить |
| 6 | 110 | читать, писать |
| 7 | 111 | читать, писать, выполнять |
Существуют и другие методы и уровни разрешений файлов и папок в Linux, такие как ACL, SELinux и AppArmor. Однако они выходят за рамки данного руководства.
Шаги по установке прав доступа к файлам и папкам в Linux
Проверьте текущие разрешения файла.
| 1 | stat -c "%a : %A" /var/www/html/index.html |
| 1 | 644 : -rw-r--r-- |
Добавьте разрешение на запись для группы.
| 1 | sudo chmod g+w /var/www/html/index.html |
Удалите разрешение на чтение для других.
| 1 | udo chmod o-r /var/www/html/index.html |
Установите разрешения на чтение и выполнение для владельца (пользователя).
| 1 | sudo chmod u=rx /var/www/html/index.html |
Проверьте текущие разрешения файла.
| 1 | stat -c "%a : %A" /var/www/html/index.html |
| 1 | 560 : -r-xrw---- |
Установите разрешения с использованием восьмеричной нотации и подстановочных знаков для всех файлов и папок.
| 1 | sudo chmod 560 /var/www/html/* |
Применяйте разрешения рекурсивно ко всем файлам и папкам.
| 1 | sudo chmod -R 560 /var/www/html/ |
Проверьте текущие разрешения для всех файлов и папок.
| 1 | sudo ls -l /var/www/html/ |
| 1 2 3 4 | total 20 dr-xrw---- 2 root root 4096 Jan 24 09:58 css -r-xrw---- 1 root root 10918 Jan 23 19:57 index.html dr-xrw---- 2 root root 4096 Jan 24 09:57 js |
