Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Кратко о задаче
Права доступа в операционной системе Linux представляют собой ключевой элемент безопасности, определяющий, какой доступ имеют пользователи и программы к файлам и каталогам.**** Чтобы посмотреть права пользователя в Linux, необходимо воспользоваться следующей командой:
Данная команда позволит вам посмотреть подробную информацию об указанном каталоге или файле в длинном формате, включая права доступа и другие данные. Пример использования команды продемонстрирован на картинке ниже.
Также, чтобы узнать права пользователя в Linux, можно воспользоваться командой:
На картинке ниже изображен пример для домашней директории юзера timewebtest :
Самих пользователей разделяют на три категории: владелец, группа и остальные. Для каждой из них выделяют три основных атрибута доступа:
- Чтение представляет собой возможность просматривать содержимое файла или каталога. Оно обозначается символом
r, обозначающим английское слово «read»; - Запись дает возможность вносить изменения в файл или создавать новые файлы в каталоге, и обозначается буквой
w, обозначающей английское «write»; - Выполнение представляет собой способность выполнять файл, включая запуск исполняемых файлов или вход в каталог, которое обозначается буквой
x, обозначающей слово «eXecute».
Существуют два основных способа записи прав доступа: символьный и числовой формат. Символьный формат использует читаемые буквы и символы для представления прав доступа, в то время как числовой формат использует числа в восьмеричной системе.
| Права доступа | Символьный формат | Числовой формат |
|---|---|---|
| Чтение | r | 4 |
| Запись | w | 2 |
| Выполнение | x | 1 |
| Нет доступа | - | 0 |
Например, права доступа к домашнему каталогу юзера timewebtest имеют следующий вид:
Здесь, мы видим, что первым символом идет d, который обозначает тип файла, в нашем случае — каталог («directory»). После него идут символы, обозначающие права доступа для разных категорий пользователей по порядку.
В числовом формате, права доступа из примера выше будут следующими:
- Для владельца:
rwxсоответствует числу 7 (4 за чтение + 2 за запись + 1 за выполнение). - Для группы:
r-xсоответствует числу 5 (4 за чтение + 0 за запись + 1 за выполнение). - Для остальных:
---соответствует числу 0 (0 за чтение, 0 за запись и 0 за выполнение).
Таким образом, в числовом формате это будет 750.
Изменение прав доступа к файлу или каталогу
Теперь, когда мы знаем, что такое права доступа и для чего они нужны, необходимо разобраться с тем, как их выдать или изменить при необходимости.
Основной командой для изменения прав пользователя в Linux является chmod. Для выполнения этой команды потребуются привилегии администратора.
Синтаксис этой команды выглядит следующим образом:
chmod [опции] [настройка_прав_доступа] [путь]Чтобы применить изменения рекурсивно при работе с директорией для вложенных каталогов и файлов, необходимо воспользоваться опцией -R.
Параметр настройка_прав_доступа __ можно передавать двумя способами, которые мы рассматривали в прошлой главе:
Данный способ подразумевает использование комбинации букв и символов при передаче параметра «настройки прав доступа». В эту комбинацию входят:
| Категория пользователей | Обозначение | Описание |
|---|---|---|
| User | u | Владелец |
| Group | g | Пользователи группы владельца |
| Others | o | Остальные пользователи |
| All | a | Все пользователи |
Пользователи группы владельца
| Операция | Описание |
|---|
- | Добавление разрешений
- | Удаление разрешений
= | Установка указанных разрешений
Установка указанных разрешений
| Обозначение | Описание |
|---|---|
| r | Права на чтение |
| w | Права на запись |
| x | Права на выполнение |
Примеры использования команды chmod с символьным форматом:
- Добавим права на запись для пользователей группы и все права для остальных пользователей:
chmod g+w,o+rwx /home/timewebtestРезультат работы команды:
- Удалим права на запись у всех категорий пользователей:
chmod a-w /home/timewebtestРезультат работы команды:
- А теперь, установим все возможные права для владельца каталога:
chmod u=rwx /home/timewebtestРезультат работы команды:
Числовой формат в chmod предоставляет более точный, быстрый и гибкий способ установки прав доступа. Как мы уже упоминали в прошлой главе, каждому праву доступа присваивается числовое значение. Далее они суммируются для установки общего числового значения, которое непосредственно передается команде.
Примеры использования команды chmod с числовым форматом:
- Выдадим полные права для всех категорий пользователей:
chmod 777 /home/timewebtestРезультат работы команды:
- А теперь уберем права на выполнение у каждой категории пользователей:
chmod 666 /home/timewebtestРезультат работы команды:
Помимо рассмотренных выше команд, стоит также упомянуть о возможности изменения прав доступа для всех директорий и файлов внутри конкретной папки.
Изменение прав для всех каталогов внутри указанной папки:
find [путь] -type d -exec chmod [права] {} \;Изменение прав для всех файлов внутри указанной папки:
find [путь] -type f -exec chmod [права] {} \;Изменение владельца и группы файла или каталога
При организации нового файла или каталога, их владельцем становится пользователь-создатель. В качестве группы устанавливается его основная группа.
В данном разделе инструкции разберём две команды, с помощью которых вы сможете изменить как владельца файла или каталога, так и его группу.
Первая рассматриваемая команда – это chown.
Синтаксис команды выглядит следующим образом:
sudo chown [опции] [владелец]:[группа] [путь]Например, изменим владельца и группу для домашней директории и всех вложенных подкаталогов и файлов пользователя timewebtest на root:
sudo chown -R root:root /home/timewebtestДля рекурсивного изменения владельца и группы во вложенных данных, мы воспользовались опцией -R. На картинке ниже продемонстрирован результат работы команды:
Таким образом, для предоставления**** доступа пользователю к папке в Linux, необходимо добавить его в группу, к которой она принадлежит, либо сделать его владельцем с помощью команды chown. Кроме того, можно установить права 777 для директории, что позволит всем пользователям, включая владельца, группу и остальных, взаимодействовать с этой папкой.
Также, стоит упомянуть, что команду chown можно использовать конкретно для изменения владельца или конкретно для изменения группы:
sudo chown [новый_владелец] [путь]На картинке ниже изображен пример изменения владельца директории.
sudo chown :[новая_группа] [путь]На картинке ниже изображен пример изменения группы директории.
Помимо рассмотренной выше команды, в Linux есть еще одна — chgrp. Она работает аналогично chown, но предназначена только для изменения группы.
Синтаксис chgrp следующий:
sudo chgrp [опции] [имя_группы] [путь]Пример использования команды:
sudo chgrp sudo /home/timewebtestРезультат работы chgrp продемонстрирован на картинке ниже:
Нужен сервер для практики? Закажите VPS на Simple-Server — root-доступ, NVMe, DDoS-защита и поддержка 24/7.