В 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 |