Последние несколько месяцев я прохожу курс по Linux, и один аспект Linux, который меня всегда смущал, — это то, как работают разрешения. Например, когда я однажды загрузил файл на свой веб-сервер и получил сообщение об ошибке, мой веб-хостинг посоветовал мне изменить права доступа к файлу на 755.
Я понятия не имел, что это значит, хотя изменение разрешений решило проблему. Теперь я понял, что разрешения Linux не так уж и сложны, нужно просто понимать систему. В этой статье я расскажу о разрешениях Linux на высоком уровне и покажу, как использовать команду chmod для изменения разрешений для файлов и папок.
Разрешения и уровни Linux
В Linux обычно есть три разрешения, о которых вам обычно приходится беспокоиться: чтение, запись и выполнение. Все три из них довольно очевидны. Теперь, когда эти разрешения применяются к файлу, они применяются по уровням.
В Linux существует три уровня разрешений: владелец, группа и другие. Владелец — это пользователь, которому принадлежит файл/папка, группа включает в себя других пользователей в группе файла, а "другие" просто представляет всех остальных пользователей, которые не являются владельцем или в группе.
Чтение, запись и выполнение представлены либо символьными символами, либо восьмеричными числами. Например, если вы выполните ls -l в каталоге с некоторыми файлами, вы увидите символическое представление разрешений.
Разрешения записываются следующим образом: первый бит — либо тире, либо буква d. Тире означает файл, а d означает каталог. Обратите внимание, что первый бит также может быть l , если имя файла является ссылкой. Далее идут три группы по три бита. Первый бит в каждой группе предназначен для чтения, второй бит — для записи, а третий бит — для выполнения. Первые три бита предназначены для владельца, вторые три бита — для группы и третьи три бита — для других. Вот более наглядное объяснение.
Если вместо буквы вы видите прочерк, это означает, что владелец, группа или все остальные пользователи не имеют такого разрешения. В приведенном выше примере владелец, группа и все остальные имеют разрешения на чтение, запись и выполнение.
Если вы посмотрите на вывод команды ls -l, вы заметите, что мой текстовый файл практики имеет следующие разрешения:
-rw-rw-rw-
Это означает, что у всех есть права только на чтение/запись файла. Вот еще один пример:.
drwxr--r--
Глядя на первый бит, мы видим, что разрешения предназначены для каталога. У владельца есть разрешения на чтение, запись и выполнение, но у группы и других пользователей есть только разрешение на чтение.
Восьмеричное представление
Вот как разрешения отображаются в Linux с помощью символов. Второй способ представления тех же разрешений — использование восьмеричных чисел. Когда мы позже воспользуемся командой chmod, вы увидите, что вы можете изменить разрешения, используя либо символы, либо восьмеричные числа.
Так как же Linux представляет чтение, запись и выполнение с использованием восьмеричных чисел? По сути, каждому разрешению просто присваивается номер, как показано ниже.
Разрешение на чтение представлено цифрой 4, запись — 2, а выполнение — 1. Все, что вам нужно сделать, это сложить их, чтобы получить восьмеричное разрешение. Например, давайте возьмем пример выше, где у каждого есть все разрешения:
-rwxrwxrwx
У владельца есть rwx, поэтому мы добавим 4 + 2 + 1, чтобы получить значение 7. Мы делаем то же самое для группы и то же самое для других. Последнее восьмеричное значение — 777. Давайте посмотрим на пример, где мы предоставили только права на чтение/запись:
-rw-rw-rw-
Первое восьмеричное число будет 4 + 2, поскольку мы добавляем чтение и запись. Второе будет таким же, как и третье восьмеричное число. Здесь у нас есть итоговое восьмеричное значение 666.
Итак, давайте попробуем по-другому. Скажем, мы хотим знать, что представляют собой разрешения 755 ? Что ж, это довольно легко выяснить, если разбить это на отдельные цифры. Первое число — 7, которое мы можем получить, только сложив 4 + 2 + 1, что означает, что владелец имеет разрешение на чтение/запись/выполнение. Пять можно получить, только сложив 4 + 1, что означает, что группа и другие пользователи имеют разрешения на чтение и выполнение.
Надеюсь, это хорошее объяснение того, как представлять разрешения в Linux с помощью восьмеричных чисел. В целом все довольно просто.
Использование chmod для изменения разрешений
Теперь, когда мы понимаем, как читать разрешения, давайте поговорим о том, как их можно изменить. Самая простая утилита для этой цели — команда chmod. Вот как это работает. Лучший способ объяснить команду — рассмотреть пример.
Давайте начнем с разрешений, о которых мы говорили выше, а именно:
-rw-rw-rw-
Если бы мы хотели добавить разрешение на выполнение для владельца, группы и других, мы могли бы сделать это двумя способами. Мы могли бы использовать символьный метод или восьмеричный метод. Для метода символа мы сделали бы следующее, как показано ниже:.
Точная команда:
chmod a+x filename
Синтаксис следующий: буква или буквы, обозначающие владельца (u ), группу (g ), другое (o ). или все (a ), за которым следует + для добавления разрешений или – для удаления разрешений, а затем буква разрешения (r для чтения, w для записи и x для выполнения).
В приведенном выше примере я добавил разрешение на выполнение для всех пользователей. Результат, как вы можете видеть на скриншоте выше, — это x для владельца, группы и других. Теперь предположим, что я хочу удалить разрешения на запись и выполнение только для группы и других пользователей.
Как вы можете видеть здесь, для этого я использовал следующую команду:
chmod go-wx filename
Поскольку я хочу изменить разрешения для группы и других, я использую букву g и букву o . Я хочу удалить разрешения, поэтому использую знак – . Наконец, я хочу удалить разрешения на запись и выполнение, поэтому использую w и x . Вот удобная таблица использования символов:
Вот и все, что нужно для использования метода символа. Теперь давайте поговорим о восьмеричном методе, который мне кажется немного проще. Octal удобен тем, что вы можете добавлять или удалять разрешения за один раз.
Если мы начнем со следующих разрешений для файла, давайте посмотрим, как мы можем изменить их с помощью восьмеричного метода:
-rw-rw-rw-
Выше вы можете видеть, что я использовал следующую команду:
chmod 744 filename
По сути, это означает, что владелец получает разрешение на чтение/запись/выполнение, а группа и другие пользователи получают разрешение только на чтение. Как видите, добавить или удалить разрешения легко с помощью одной простой команды. Давайте продолжим и скажем, что я хочу снова изменить разрешения.
Теперь я использовал следующую команду, опять же очень простую:
chmod 640 filename
Здесь мы предоставили владельцу разрешения на чтение/запись, группе — только разрешение на чтение, а другой группе — никаких разрешений. Вы используете ноль для обозначения отсутствия разрешений. Довольно просто, да?
В заключение, это очень простой обзор разрешений Linux, и он может оказаться намного сложнее, но для новичков это хорошее место для начала. В будущем я буду публиковать больше статей о более продвинутых разрешениях. Если у вас есть какие-либо вопросы, не стесняйтесь комментировать. Наслаждайтесь!.