Приветствую тебя авантюрист. Сегодня мы продолжаем знакомство с правами доступа к файлам и каталогам. В предыдущей статье я рассказал о работе с владельцами. Настоятельно рекомендую с ней ознакомиться перед прочтением этой статьи (https://dzen.ru/a/YyYUPGiNZSrL1CWU).
Итак, у каждого объекта файловой системы Linux (файл, каталог, процесс, принтер и т.д.) есть 3 разрешения доступа: чтение (r – read), запись (w – write), исполнение (x – execute). Эти разрешения задаются для владельца, для группы владельца, для остальных пользователей. К примеру, мы можем выставить права таким образом, чтобы владелец имел полный доступ, а все остальные не могли даже прочесть объект, и наоборот. В целом такая «простая», на первый взгляд, система дает неплохие возможности и на деле можно настроить довольно гибкие политики доступа.
Давайте создадим файл и посмотрим какие у него будут права по умолчанию. Для создания я использую редактор vi.
Я авторизован под пользователем "zerg", поэтому владелец и группа владельца у нас соответственно «zerg». Пока все окей. Обратим вниманье на буковки слева: -rw– r--r--. Первая черточка показывает тип файла: файл или каталог. В случае каталога там будет буковка d. Далее стоит рассматривать символы по 3. Я думаю, вы уже догадались как это работает. Первые три символа это права для владельца, следующие три для группы и последние 3 для всех остальных. Первый символ в каждой тройке это чтение, второй запись, третий исполнение. Наличие прочерка или буквы означает наличие или отсутствие соответствующего права. Что можно сказать о созданном нами файле? Это файл. У владельца есть право на чтение и запись файла. Пользователи из группы владельца, а так же все остальные могут только читать файл и ничего больше. Вроде не сложно.
Теперь давайте попробуем изменить права доступа. Для этого в любом дистрибутиве есть утилита chmod. Для изменения можно использовать разные варианты синтаксиса. Буквенный или символьный. Я покажу на простом – с использованием символов. В команде необходимо указать для кого вы изменяете права, какие права и что вы с ними хотите сделать (отнять или наделить). Указать цель можно следующими обозначениями: u – пользователь, g – группа, o – остальные, a – все. Назначение или удаление прав указывается плюсом и минусом соответственно. Например, chmod g+w test.txt добавить для группы владельца право на запись в файл text.txt.
Если необходимо изменить несколько значений то их можно указать через запятую, например chmod g+x,o-r,o+w test.txt. В данном примере мы добавляем группе владельца разрешение на выполнение, а всем остальным я запрещаю чтение и разрешаю запись.
У утилиты chmod есть и другие варианты синтаксиса, но, на мой взгляд, вариант с символами наиболее наглядный и понятный, ведь мы пишем материал для новичков.
Стоит разъяснить про параметр исполнение. Если для файла это более менее понятно, то вот для каталога это действие не очевидно. Исполнение для каталога означает разрешение на переход в каталог. Чтение для каталога означает получение списка подкаталогов и файлов внутри каталога. Следовательно, имея разрешение чтения, но, не имея разрешения исполнения, мы сможем узнать, что внутри каталога, но перейти в него не сможем.
На этом с наделением и запрещением прав все. Есть еще некоторые моменты, о которых я расскажу в третей части, но они уже скорее в дополнение. Также советую почитать статьи непосредственно про команду chmod. Ее синтаксис довольно гибкий и знать его стоит, так как работа с правами это довольно частая операция.
Источник: https://vk.com/@easy_linux-prava-dostupa-na-faily-chast-2-atributy-dostupa