Яндекс.Практикум

Права доступа в Linux

С первого взгляда может показаться, что в правах доступа к файлам и каталогам в Linux сложно разобраться. Странные последовательности чисел от 0 до 7 пугают. Но, поверьте, достаточно один раз понять принцип организации прав доступа стандарта POSIX, чтобы успешно использовать его практически во всех дистрибутивах GNU/Linux, BSD и т.д.

Пользователи и группы

Стоит отметить, что в Linux присутствует поддержка ACL (Access Control List) для файлов и папок. Этот инструмент позволяет лучше справляться с темой статьи в некоторых ситуациях. Но подобный функционал не используется по умолчанию и необходим лишь в определённых случаях. Здесь же речь будет идти о стандарте POSIX, не затрагивая ACL.

У каждого файла в качестве владельцев есть один пользователь(user) и одна группа(group). С помощью команды ls -l можно узнать кому принадлежат файлы в текущей дериктории. Права доступа стандарта POSIX позволяют контролировать чтение (read), запись (write) и исполнение (execute) для конткретного пользователя, группы и всех остальных (other). Используя эти три параметра для трёх типов пользователей можно просто и понятно разграничить “кто и что может делать” в файловой системе.

Изображение №1 показывает, как может выглядеть вывод файла командой ls -l. Первое поле обычно содержит “d” или ““, оно указывает на папку (directory) или файл. Для файлов биты прав доступа имеют прямой смысл. Если установлен бит чтения (r), то можно получить его содержимое. Если установлен бит записи (w) — записать данные в этот файл. Бит исполнения (x) позволяет выполнить файл в коммандной оболочке. Он обычно устанавливается для скриптов и бинарных файлов программ.

Пример вывода команды ls -l

Изображение №1. Пример вывод команды ls -l

Для папок используется схожий принцип. Чтение (r) даёт возможность посмотреть какие файлы или папки находятся в директории. Запись (w) — создать или удалить файл или папку. Исполнение (x) несёт менее очевидный смысл. Если бит установлен, то можно перейти в эту директорию. То есть комманда cd для перехода внутрь папки будет работать только тогда, когда есть права доступа на исполнения для неё.

Как изменить права доступа в Linux

Хотя все дистрибутивы Linux имеют стандартизированную файловую структуру, в которой уже распределены права доступа, часто приходится вносить некоторые корректировки вручную. Для этого используется утилита chmod. Изменить права доступа в Linux можно следующим образом:

chmod u+rw,g-x,o+rwx example_file

Это достаточно сложный пример, который нуждается в пояснении. Буквы перед + и обозначают:

  • u — пользователя-владельца (user);
  • g — группу-владельца (group);
  • o — остальных пользователей (other).

Затем устанавливаются (+) или снимаются() соответвующие биты прав доступа. Не обязательно указывать все 3 типа пользователя, они объединяются следующим образом:

chmod ugo+x example_file

Так можно дать права на исполнения сразу для владельца, группы и остальных пользователей. Следовательно, следующие комманды приведут к одному результату:

chmod ugo-rx example_file chmod -rx example_file chmod u-rx,g-rx,o-rx example_file

Несмотря на то, что примеры вида “ugo” выглядят достаточно просто и надёжно, иногда достаточно сложно записать строку из плюсов и минусов для получения нетривиального результата. Для сложных случаев лучше использовать числовое представление прав доступа в Linux. При первом знакомстве этот способ может сбить с толку, но он станет гораздо удобнее после освоения.

Числовое представление прав доступа для файлов и папок в Linux

На изображении №2 видно, какое числовое значение соответвует каждому биту прав доступа. С помощью простого сложения можно создать всё многообразие сочетаний этих трёх чисел. На изображении №3 представлено несколько примеров, как это происходит.

Числовое соответствие битов доступа в Linux

Изображение №2. Числовое соответствие битов доступа.

Пример вычисления прав доступа в Linux

Изображение №3. Пример вычисления.

Следовательно, следующие два варианта записи комманды chmod приведут к одному и тому же результату:

chmod ug+rw,ug-x,o+r,o-wx example_file chmod 662 example_file

И,хотя, числовое представление прав доступа не обязательно использовать, но всё же обычно стоит выбрать именно этот способ записи. Для сравнения подходов, попрактикуйтесь с утилитой chmod: сначала задайте права доступа с помощью трёхзначного числа, а потом попробуйте добиться того же результата с помощью строки, содержащей все эти плюсы, минусы и категории пользователей 😉

Понравилась статья? Поделиться с друзьями:
IPCalc Blog