- Права доступа
- Что это такое
- Как работают права доступа
- Как узнать разрешения файла
- Как изменить права доступа
- Короткая форма записи прав
- Как просматривать и изменять права доступа в Linux
- Смотрим права доступа
- Как в Linux определить и заменить пользователя и группу
- Меняем права в Линукс для объектов ФС
- Инструкции
- Командная строка Linux: краткий курс для начинающих
- Перенаправление ввода/вывода в Linux
- Работа с файлами и каталогами в Linux
- Как сгенерировать SSH-ключ для доступа на сервер
- Как установить и настроить веб-сервер Apache
- Руководство по написанию скриптов в Linux Bash
- Введение в Git: настройка и основные команды
- Как установить MySQL на Windows
- Как установить и использовать MySQL Workbench
- Создание нового пользователя и настройка прав в MySQL
Права доступа
В этой статье вы узнаете, как работают разрешения в Linux и как ими можно эффективно пользоваться, чтобы повысить безопасность вашей системы.
Что это такое
Права доступа определяют, какие действия конкретный пользователь может или не может совершать с определенным файлами и каталогами.
С помощью разрешений можно создать надежную среду — такую, в которой никто не может поменять содержимое ваших документов или повредить системные файлы.
Как работают права доступа
Есть 3 вида разрешений. Они определяют права пользователя на 3 действия: чтение, запись и выполнение. В Linux эти действия обозначаются вот так:
- r — read (чтение) — право просматривать содержимое файла;
- w — write (запись) — право изменять содержимое файла;
- x — execute (выполнение) — право запускать файл, если это программа или скрипт.
У каждого файла есть 3 группы пользователей, для которых можно устанавливать права доступа.
- owner (владелец) — отдельный человек, который владеет файлом. Обычно это тот, кто создал файл, но владельцем можно сделать и кого-то другого.
- group (группа) — пользователи с общими заданными правами.
- others (другие) — все остальные пользователи, не относящиеся к группе и не являющиеся владельцами.
Как узнать разрешения файла
Чтобы посмотреть права доступа к файлу, нужно вызвать команду ls с опцией -l . Эта опция отвечает за вывода списка в длинном формате.
В приведенном выше примере первые 10 символов вывода показывают разрешения файла.
- Первый символ определяет тип файла. Если первый символ — прочерк — , то это обычный файл. Если первый символ d , то это каталог.
- Следующие 3 символа показывают разрешения для владельца. Буква означает наличие разрешения, а прочерк — — его отсутствие. В нашем примере у владельца есть все разрешения (чтение, запись и выполнение).
- Следующие 3 символа показывают разрешения для группы. В этом примере у членов группы есть разрешение на чтение, но нет разрешений на запись и выполнение. Обратите внимание, порядок записи разрешений всегда такой: чтение, запись, выполнение.
- Последние 3 символа показывают разрешения для всех остальных пользователей. В этом примере у них есть только разрешение на выполнение.
Как изменить права доступа
Для изменения прав доступа к файлу или каталога используется команда chmod (от англ. change mode). Эта команда меняет биты режима файла — если совсем просто, это индикатор разрешений.
Аргументы команды chmod , отвечающие за разрешение, состоят из 3 компонентов:
- Для кого мы меняем разрешение? Обозначается первыми буквами слов: [ugoa] — user (пользователь, он же владелец), group (группа), others (другие), all (все).
- Мы предоставляет или отзываем разрешения? Обозначается плюсом + , если предоставляем, минусом — , если отзываем.
- Какое разрешение мы хотим изменить? Чтение (r), запись (w), выполнение (x).
Разберем на примере. Давайте дадим группе разрешение на выполнение, а затем отзовем разрешение на запись для владельца.
Права доступа необязательно выдавать индивидуально. Можно назначить сразу несколько разрешений.
Может показаться странным, что владелец файла может сам себя лишить прав. Но бывают случаи, когда такая возможность очень полезна. Допустим, у вас есть файл с данными, которые мы не хотели бы случайно изменить.
Да, вы можете лишать себя каких-то разрешений, но у вас всегда остается возможность выдавать права. Всегда сможете вернуть себе отозванное разрешение.
Короткая форма записи прав
Для разрешений можно установить сокращенные формы записи. С их помощью выдавать разрешения будет быстрее. Сокращения полезны, когда нужно регулярно применять набор разрешений для определенных файлов.
Вспомним восьмеричную систему
Чтобы понять, как работает этот сокращенный метод, давайте освежим знания по системам счисления.
Мы используем десятичную систему счисления, в которой 10 цифр: от 0 до 9. Еще есть восьмеричная система счисления, в которой используется 8 цифр: от 0 до 7.
Разрешений — 3 вида, каждый кодируется 1 (разрешение есть) или 0 (разрешения нет). Поэтому для кодирования всех разрешений требуется 2 3 = 8 комбинаций. Соответственно, для записи каждого разрешения используется восьмеричная система счислений. Числа восьмеричной системы счисления можно представить в двоичной системе, в которой всего две цифры: 0 и 1. Вот, как восьмеричные числа выглядят в двоичной с. с.
Источник
Как просматривать и изменять права доступа в Linux
Если вы имеете за плечами хотя бы небольшой опыт работы в Windows, то наверняка вам уже приходилось сталкиваться с такой штукой как права доступа. Последние являются одной из ключевых функций безопасности, отсутствие прав доступа означало бы полную беззащитность системы перед внешними атаками и вирусами, которые с легкостью смогли бы перезаписать любой системный файл. Полагаем, вы уже разобрались, как их задавать, впрочем, иначе не могло и быть, ведь устроены они довольно просто, а самое главное, логично.
Владельцем файла в Windows может быть либо операционная система, либо пользователь, который в свою очередь может иметь права гостя, обычного юзера и администратора, при этом возможности пользователя зависят от его статуса. Например, обычный пользователь не может изменять конкретный файл, тогда как администратор волен делать с файлом всё что ему заблагорассудится. Но когда пользователь Windows пытается применить ту же логику к Linux, то непременно сталкивается с трудностями понимания организации прав доступа.
Удивляться тут особо не приходится, ибо она основательно отличается от того, с чем приходится сталкиваться пользователю в Windows. Так, одним из ключевых отличий распределения прав доступа в Linux является назначение каждому файлу не только хозяина, но и группы. Кроме того, в линукс-системах имеются особые права доступа, позволяющие юзерам запускать приложения от имени суперпользователя без ввода его пароля, но обо всём по порядку.
На базовом уровне в Linux используются три параметра доступа к файлам. К ним относятся:
- Чтение — этот параметр позволяет просматривать содержимое файлов и директорий, но не вносить в них изменения.
- Запись — наличие этого параметра позволяет вносить в файл изменения и создавать/удалять файлы и папки в каталогах.
- Выполнение — особый параметр, предоставляющий разрешение на запуск исполняемых файлов — приложений и скриптов. Без этого ключа файлы приложений не будут идентифицированы как исполняемые.
Кроме того, в Linux имеется три категории пользователей, для которых могут быть изменены права доступа.
Таковыми категориями являются:
- Владелец — входящие в эту группу пользователи обычно имеют полный набор прав на созданные ими файлы, а также на файлы, для которых пользователь назначен владельцем.
- Группа — категория пользователей, связанная с файлом. По умолчанию группа создается для каждого юзера, при этом она имеет то же имя и ID , что и пользователь.
- Все остальные — эту категорию составляют все остальные пользователи, кроме владельца и не привязанных к файлу пользователей групп. Исключением является только суперпользователь (root) , который имеет полный доступ ко всем файлам независимо от их атрибутов.
Стоит также упомянуть о специальных правах доступа, так называемых битах, расширяющих полномочия обычных пользователей.
- SUID — заменяет ID запускающего программу пользователя на ID другого юзера, того же Root .
- SGID — работает так же, как и SUID , только при этом запускающий файл пользователь будет считаться членом группы, с которой этот файл связан.
- Sticky-bit — в настоящее время флаг утратил актуальность, раньше он применялся при создании общих папок. Файлы, для которых он установлен, можно читать и исполнять, но нельзя удалять, если только желающий удалить файл не является его владельцем.
Смотрим права доступа
Но довольно теории, давайте теперь посмотрим, как просматривать и изменять права доступа в Linux. Узнать права доступа для файла или папки можно в свойствах объекта на вкладке «Права», но для получения полной картины лучше использовать терминал.
Откройте его в каталоге с файлами и выполните такую команду:
ls -l
Если нужно просмотреть права конкретного файла, к команде через пробел нужно добавить имя файла, например, ls -l NTUSER.DAT , если речь идет о папке, то указывается ее имя. В результате вы получите в терминале такую картинку.
Обратите внимание на набор из десяти символов в начале каждой строки, это символьное обозначение прав доступа в Линукс.
Первый символ обозначает тип данных, например, дефис означает, что вы имеете дело с обычным файлом, смотрите скриншоты ниже.
В следующих девяти символах «закодированы» права доступа. На самом деле, права указаны в каждой тройке символов, то есть полученную строку rwxrwxrwx можно представить как rwx—rwx—rwx. Первая группа — это права доступа хозяина объекта, вторая группа — это права системной группы, третья тройка символов означает права на файл для всех прочих пользователей.
А вот что означают сами символы:
Зная обозначения, можно легко разобрать любую комбинацию. Например, rwx означает, что пользователь или группа имеет права на чтение, запись и исполнение, r-x — права на доступ и исполнение, но с запретом на изменение или удаление, rw- станет означать наличие прав на чтение и запись, но не право запускать файл как исполняемый.
Как в Linux определить и заменить пользователя и группу
Как вы уже знаете, права в Linux могут иметь не только пользователи, но и группы, в связи с чем может возникнуть вопрос: а как определить имя владельца и название группы? Элементарно, их выводит та же команда ls -l . В третьей колонке слева указано имя владельца объекта, название же связанной с объектом группы указано в четвертой колонке.
При желании вы можете заменить хозяина и группу для файла или папки, воспользовавшись такой командой:
sudo chown u:g file
chown — это сама команда замены, u — имя пользователя, которому желаем делегировать права, g — название группы, а file — название самого файла. В данном случае мы передаем права суперпользователю — root .
Меняем права в Линукс для объектов ФС
Если за замену пользователя и группы в Линукс отвечает команда chown , то для изменения прав доступа в системе предусмотрена команда chmod .
Она имеет следующий синтаксис:
chmod категория действие права объект
Что такое категории вы уже знаете, это владельцы файлов, группы и все остальные пользователи. Обозначаются категории как u, g и o соответственно. Для сразу всех категорий используется обозначение a. Категории можно группировать, например, ug станет означать, что мы хотим изменить права на объект для владельца и группы.
Действие — это изменение прав. Для присвоения прав используется ключ «=», для добавления указывается флаг «+», чтобы забрать права, нужно использовать ключ «-». С обозначениями прав вы также уже знакомы. Всё, можно формировать команды.
Сделаем для примера файл ntuser.ini недоступным для редактирования и исполнения:
chmod ug-wx ntuser.ini
В результате символьное представление прав стало таким: r—r—rwx. Как видите, права на файл были изменены для текущих владельца и группы, но не для категории «Все остальные» , если же бы мы вместо ug указали ugo или a, право на чтение и исполнение потеряли бы все категории. Обратите внимание, что в данном случае мы не использовали sudo в начале команды, поскольку и так являемся владельцем. Если же бы изменяли права root или другого пользователя, использование sudo было бы обязательным.
Ну вот, теперь в самых общих чертах вы знаете, чем отличаются организация прав доступа в Линукс от организации прав доступа в Windows, а самое главное, умеете просматривать и изменять права. Уверены, эти знания очень вам пригодятся, позволяя максимально эффективно управлять доступом к пользовательским и системным файлам.
Источник
Инструкции
27 сентября 2021
Командная строка Linux: краткий курс для начинающих
27 сентября 2021
Перенаправление ввода/вывода в Linux
27 сентября 2021
Работа с файлами и каталогами в Linux
26 сентября 2021
Как сгенерировать SSH-ключ для доступа на сервер
23 сентября 2021
Как установить и настроить веб-сервер Apache
23 сентября 2021
Руководство по написанию скриптов в Linux Bash
21 сентября 2021
Введение в Git: настройка и основные команды
21 сентября 2021
Как установить MySQL на Windows
21 сентября 2021
Как установить и использовать MySQL Workbench
20 сентября 2021
Создание нового пользователя и настройка прав в MySQL
© ООО «Селектел», 2008—2021
Полностью изолированные физические серверы любой конфигурации с облачной готовностью
Виртуальные машины с моментальным масштабированием и поддержкой Infrastructure-as-code
В дата-центрах TIER III Москвы, Санкт‑Петербурга и ЛО
Инфраструктура на базе VMware для бизнес-критичных задач любой сложности
Готовые к работе управляемые базы данных PostgreSQL и MySQL™
Полностью готовый к работе кластер Kubernetes для управления контейнерами
Масштабируемое хранилище данных с гибким ценообразованием, поддержкой FTP и S3 API
Запуск кода по запросу или событию без создания и обслуживания сервера
Источник