Содержание
В этой небольшой статье представлена довольно исчерпывающая информация о правах доступа в Unix-подобных операционных системах, описаны варианты их изменения, а также расшифровываются некоторые понятия и определения.
Для начала следует разобраться с основными понятиями такими как: кто такой владелец файла в Linux, каким образом к файлу получают доступ другие пользователи, а не только сам владелец и т.д.
В Unix-подобных системах приложение запускается с правами пользователя, вызвавшего указанное приложение. Это обеспечивает дополнительную безопасность, так как процесс с правами пользователя не сможет получить доступ на запись к важным системным файлам, например /etc/passwd, который принадлежит суперпользователю root. Звучит просто, но существует некоторые особенности, которые нужно обязательно знать и учитывать.
Владелец, Группа и Все остальные
Владелец
Владелец файла или директории в Linux – это пользователь, который их создал. Командой chown можно поменять владельца для файла или директории.
Права на чтение, запись и исполнение устанавливаются с помощью числовых кодов 0400, 0200 и 0100 соответственно. Их можно комбинировать. Например, код 0700 позволяет читать, записывать и изменять файлы владельцем.
Группа
Группа — это несколько пользователей Linux, которые могут использовать (при достаточных правах доступа) файлы и папке на уровне с их владельцем. Изменить группу пользователей ассоциированных с файлом или директорией можно командой chgrp.
Права на чтение, запись и исполнение устанавливаются с помощью числовых кодов 0040, 0020 и 0010 соответственно. Их можно комбинировать. Например, код 0070 позволяет читать, записывать и изменять файлы ассоциированной с файлом группой пользователей.
Все остальные
Это собирательное название для тех, кто не является владельцем файла или не относится к группе пользователей, которая может работать с этим файлом или директорией. Хорошая аналогия – это «весь мир», «каждый» или «любой».
Права на чтение, запись и исполнение устанавливаются с помощью числовых кодов 0004, 0002 и 0001 соответственно. Их можно комбинировать. Например, код 0007 позволяет читать, записывать и изменять файлы любому желающему.
Права на чтение, запись и выполнение
Чтение
Позволяет файлу быть прочитанным определенной группой пользователей.
Определяется как «r» в выводе команды ls
Запись
Позволяет изменять файлы или директории.
Определяется как «w» в выводе команды ls
Выполнение
Позволяет запускать бинарные файлы. Кроме этого, проверяет является ли папка доступной для поиска. Например, если у директории выставлены права 0600, то Вы не сможете воспользоваться командой cd, чтобы войти в эту папку или просмотреть ее содержимое командой ls
Определяется как «x» в выводе команды ls
Ну а теперь можно переходить к практике.
Определение и контроль прав доступа в Linux командой ls
С помощью команды ls можно узнать какие права доступа выставлены на файлы в данной или указанной директории:
gruyere@meltingpot /test_perms $ ls -l
total 0
-rw-r—r— 1 gruyere staff 0 27 Feb 19:43 bar
drwxr-xr-x 2 gruyere staff 68 27 Feb 19:45 baz
-rw-r—r— 1 gruyere staff 0 27 Feb 19:43 foo
Как видно из примера выше, команда ls показывает символьный код прав доступа на файлы и директории. В 3 и 4-ой колонке также указывается, кто является владельцем этих файлов или директорий и к какой группе пользователей они принадлежат.
chmod
chmod (change mode) – это широко используемая команда для изменения прав доступа к файлам и папкам в Linux. Она позволяет устанавливать права на доступ как пользователю, так и группе пользователей и для всех остальных.
Кроме этого, серверные язык программирования (вроде php или Python) предоставляют некую копию этой команды в том смысле, что у них схожа нотация установки прав.
Абсолютная и символьная нотация
chmod поддерживает 2 типа синтаксиса для изменения прав доступа:
- Абсолютная нотация – восьмеричное число, указывающее на то, какие биты доступа активировать(ны), например 0777
- Символьная нотация – сочетание букв и цифр устанавливающих бит доступа.
Восьмеричный код более естественен, он гарантирует установку особых прав доступа на файлы и директории, кроме этого, этот подход используется в языках программирования для программного изменения прав доступа.
Символьная нотация используется для добавления или удаления уже определенных прав. Существуют специальные сайты для перевода абсолютной нотации в символьную и наоборот, они позволяют лучше понять как работают все эти права доступа и команда chmod. Вот один из них:
Установка или изменение прав доступа с помощью chmod в Linux
Синтаксис chmod очень прост:
chmod <права доступа> <файл или директория>
Права доступа можно указывать используя числовой или символьный код:
chmod 0755 foo.sh # octal
chmod +x bar.sh # symbolic
Для дополнительной информации о команде воспользуйтесь командой man chmod
Особые права доступа
Существуют также особые флаги прав доступа, которые следует использовать с осторожностью (более подробная информация по ссылке):
Надеюсь, что эта статья была Вам полезна. Продолжайте изучать Linux. Удачи