В Linux существует 3 основных разрешения для считывания, записи и выполнении файлов. Разрешения имеют разный эффект, когда применяются к файлу или директории.
В таблице ниже представлено описание действий разрешений для файлов и директорий:
Права доступа | Применяется к файлам | Применяется к директориям |
Read (чтение) | Позволяет прочитать содержимое файла | Позволяет просмотреть содержимое директории |
Write (запись) | Позволяет изменять содержимое файла | Позволяет создавать и удалять файлы или поддиректории, изменять разрешения на файлы и поддиректории |
Execute (выполнение) | Позволяет запускать файл как программу (скрипт) | Позволяет переходить в директорию (выполнять команду cd folder) |
Применение разрешений к файлам и директориям
Для применения разрешений используется команда chmod. С помощью нее вы можете установить разрешения для хозяина, группы и других пользователей. Для установки разрешений можно использовать 2 режима относительный или абсолютный.
В абсолютном режиме используется 3 цифры для установки разрешений.
Права доступа | Цифровое представление |
Read (чтение) | 4 |
Write (запись) | 2 |
Execute (выполнение) | 1 |
Для установки нужных разрешений надо сложить числовые значения необходимых прав доступа, например если надо установить права доступа на чтение, запись и выполнение для владельца, чтение и выполнение для группы, чтение и выполнение для всех пользователей, то необходимо выполнить следующее:
chmod 755 /filename
Когда используется chmod в данном виде, то все текущие права заменяются на те, что прописаны.
Если надо поменять текущие права, то тогда надо использовать относительный режим. Надо определиться для кого надо менять текущие права доступа (u) для хозяина, (g) группы, или (o) других пользователей. Затем надо использовать оператор для добавления прав (+) или удаления прав (-). И в конце использовать нужные права на чтение (r), на запись (w), на исполнение (x). Например, чтобы добавить всем пользователям права на исполнение файла, надо выполнить следующее:
chmod +x filename
Если надо добавить несколько прав доступа для разных категорий, например группе добавить права на запись, а остальным пользователям убрать права на чтение, то необходимо выполнить:
chmod g+w,o-r filename
Если необходимо заменить права доступа к директории и во всех файлах и внутренних директорий, то надо использовать параметр -R (рекурсивно), например:
chmod -R o+rx /directory
Если надо заменить только в директориях, то надо использовать заглавную букву, например чтобы установить только для папки и подпапок разрешение на выполнение, то надо выполнить:
chmod -R o+rX /directory