Как изменить права доступа и владельца/группу для файлов и каталогов
В этой инструкции разберем как изменять владельца/группу, а также права доступа к файлам и директориям. Вступительную теоретическую информацию по этой теме, а именно какие существуют права доступа и пользователи в системе Linux, можно найти в нашей статье здесь.
Перед началом проведения корректировки и изменения прав доступа нужно четко понимать, что за что отвечает, неверная установка может привести к неработоспособности частей кода и траты кучи времени на откат и восстановление.
Изменение владельца/группы для файлов и каталогов
Изменить владельца папки/файла имеет возможность специальный пользователь root. Для этих целей наиболее часто используется команда chown, но как вариант возможно и через команду find.
- для изменения владельца для папки/файла
chown [владелец] [путь к папке/файлу]
Например, изменим владельца на maria для файла newdata.txt
chown maria /orders/newdata.txt
- изменение группы папки/файла
chown [:группа] [путь к папке/файлу]
- изменение и владельца и группы папки/файла
chown [владелец:группа] [путь к папке/файлу]
Опция -R используется для рекурсивного изменяя прав владения в полностью всей директории (сразу у всех подкаталогах и для всех файлов в этих подкаталогах).
- рекурсивно сменить владельца
chown -R [владелец:группа] [путь к папке/файлу]
- через find изменение владельца папки
find [путь к папке] -type d -exec chown [владелец] {} \
- аналогично изменяем для группы
find [путь к папке] -type d -exec chown [:группа] {} \
- через find изменение владельца файла
find [путь к файлу]-type f -exec chown [владелец {} \
- через find изменение группы
find [путь к файлу] -type f -exec chown [:группа] {} \
Изменение прав доступа для файлов и каталогов
Для изменения прав доступа существует специальная команда chmod, с помощью которой можно в численном, либо в символьном представлении подать права нужным пользователям на указанные файлы или папки. Возможность надавать права доступа также имеет владелец соответствующего файла/папки. Рассмотрим ниже более детально, начнем с подачи прав в символьном виде, для этого используются операторы:
- + - предоставляем указанное право;
- – - лишаем соответствующего права;
- = - присвоение аналогичных прав.
В таком случае общий синтаксис команды chmod:
chmod [пользователь(и)_оператор_права] [путь к папке/файлу]
Пример 1, уберем для группы пользователей (group, g) право на чтение (read, r) файла newdata.txt
chmod g-r /orders/newdata.txt
Пример 2, установим права на запись (write, w) для всех типов пользователей для файла newdata.txt
chmod ugo+w /orders/newdata.txt
Пример 3, установим аналогичные права для группы и других пользователей системы для файла newdata.txt
chmod g=o /orders/newdata.txt
Также здесь есть дополнительный символ a, all - используется для обозначения сразу всех пользователей.
Пример 4, убираем у всех пользователей право на чтение файла newdata.txt.
chmod a-r /orders/newdata.txt
При числовом указании прав синтаксис похож:
chmod [права] [путь к папке/файлу]
Пример 5: в владельца есть все права, в группы только на запись, и в остальных пользователей только на чтение на файл newdata.txt
chmod 724 /orders/newdata.txt
Пример 6: для всех типов пользователей предоставляем все права доступа на файл newdata.txt.
chmod 777 /orders/newdata.txt