Как рекурсивно изменить права доступа на файлы в каталоге
Перейти к содержимому

Как рекурсивно изменить права доступа на файлы в каталоге

  • автор:

Смена прав доступа пользователю в Linux

Режим доступа к файлу можно изменить с помощью команды chmod. Изменять права доступа к файлу позволено только его владельцу либо пользователю root. В UNIX-системах код задается в виде восьмеричного числа. Также поддерживается система мнемонических (буквенных) обозначений. Первый способ удобнее для системного администратора, но при этом можно задать только абсолютное значение режима доступа. А используя мнемонический синтаксис, вы можете сбрасывать и устанавливать отдельные параметры, к примеру, добавить право на чтение либо убрать право на запись.

Первым аргументом команды chmod является спецификация прав доступа, то есть восьмеричное число (774, 777 и т.д.) либо мнемоническое обозначение (r+o, w-u и т.д.). Второй и последующий аргументы — имена файлов, права доступа к которым подлежат изменению. При использовании восьмеричной нотации первая цифра относится к владельцу, вторая — к группе, а третья — к остальным пользователям.

Права доступа к файлам подразделяются на следующие:
r — право на чтение данных.
w — право на изменение содержимого (запись – только изменение содержимого, но не удаление).
x — право на исполнение файла.

Теперь о правах доступа к папке (директории):
r — право на чтение директории (можно прочитать содержимое директории, т.е. получить список объектов, находящихся в ней)
w — право на изменение содержимого директории (можно создавать и удалять объекты в этой директории, причем если вы имеете право на запись, то удалять вы сможете даже те файлы, которые вам не принадлежат)
x — право, которое позволяет вам войти в директорию (это право всегда проверяется в первую очередь, и даже если вы имеете все нужные права на объект, который закопан глубоко в цепочке директорий, но не имеете права “X” для доступа хотя бы к одной директории на пути к этому файлу, то к нему вы так и не пробьетесь)

В таблице указано восемь возможных комбинаций:

Восьмеричное число Двоичное число Режим доступа
0 000
1 001 —x
2 010 -w-
3 011 -wx
4 100 r—
5 101 r-x
6 110 rw-
7 111 rwx
chmod 711 myfile

предоставляет владельцу все права, а всем остальным пользователям — только право выполнения, а команда:

chmod 775 myfile

предоставляет владельцу и группе все права, а остальным пользователям запрещает изменение файла. Для смены прав доступа необходимо находиться в директории, где расположен файл, либо указывать полный путь:

chmod 775 /var/www/myfile

Для применения прав доступа ко всем вложенным в директорию файлам и папкам (рекурсивно) необходимо в команду добавить ключ -R. То есть команда будет выглядеть как:

chmod -R 711 myfile

Примеры мнемонических спецификаций команды chmod:

Спецификация Значение
u+w Владельцу файла дополнительно дается право выполнения.
ug=rw,o=r Владельцу и группе предоставляется право чтения/записи, остальным пользователям — право чтения.
a-x Все пользователи лишаются права выполнения.
ug=srx,o= Владельцу и группе дается право чтения/выполнения, устанавливается также бит SUID; остальным пользователям запрещен доступ к файлу.
g=u Группе назначаются такие же права, что и владельцу

Символ u (“user”) обозначает владельца файла, символ g (“group”) — группу, символ о (“others”) — других пользователей, символ a (“all”) — всех пользователей сразу.
То есть, если необходимо убрать право на редактирование всех вложенных файлов и папок у других пользователей, то с помощью мнемонических обозначений команда будет выглядеть следующим образом:

chmod o-w -R myfile

В качестве примера мы будем устанавливать права доступа 777 для папки /var/www/mysite и всех вложенных в нее файлов и каталогов.
ВНИМАНИЕ! Установка прав доступа 777 используется исключительно в качестве примера, их использование может привести к уязвимости сервера!

Смена прав доступа

SSH

  1. Входим по протоколу SSH на ВПС с root привилегиями.
  2. Переходим с помощью команды cd в директорию, где расположена необходимая нам папка. В данном случае это /var/www:
cd /var/www
chmod -R 777 mysite

SFTP

Для подключения к серверу по протоколу SFTP мы будем использовать программу FileZilla. Данная программа бесплатна, поддерживает русский язык и кросплатформенна. Вы можете скачать ее с официального сайта: https://filezilla-project.org/. Обратите внимание, что в левой колонке отображает дерево каталогов Вашего компьютера, а в правой удаленной машины, в данном случае ВПС.

  1. Подключаемся к ВПС с root привилегиями по SFTP.
  2. Переходим в каталог /var/www
  3. Нажимаем правой кнопкой мышки на папке mysite и выбираем «Права доступа к файлу»
    Смена прав доступа с помощью FileZilla
  4. Во всплывающем окне устанавливаем необходимые права 777 и нажимаем «Перенаправить во вложенные каталоги» и выбираем «Применить ко всем каталогам и файлам» и нажимаем ОК.
    Изменить атрибуты файла в FileZilla

DirectAdmin

К сожалению, в КП DirectAdmin не предоставляется доступ к корневой файловой системе с помощью встроенного менеджера файлов. В связи с этим, в качестве примера, мы изменим права доступа для директории /domains/domain.com/public_html/mysite

  1. Входим в КП DirectAdmin
  2. Нажимаем кнопку Files в панели сверху
    Панель DirectAdmin
  3. Перейти в папку /domains/domain.com/public_html
  4. Поставить галочку напротив каталога mysite, после чего установить права доступа к папке 777 и поставить галочку напротив Recursive, для применения данных прав доступа ко всем вложенным файлам и папкам.
    Смена прав доступа к папке DirectAdmin
  5. Нажать set Permission

cPanel

В cPanel также не предоставляется доступ к корневой директории, в связи с чем мы сменим, в качестве примера, права доступа для папки /public_html/mysite. Обратите внимание, что менеджер файлов доступен только на уровне пользователя.

  1. Войти в cPanel на уровне пользователя.
  2. Перейти в Файлы → Диспетчер файлов. Панель cPanel
  3. Перейти в директорию /public_html
  4. Выделить папку mysite и нажать «Разрешения» Смена прав в cPanel
  5. В всплывающем окне установить необходимые права доступа и нажать «Change Permissions». Обратите внимание, что файловый менеджер cPanel не умеет изменять права для всех вложенных файлов и папок. Рекурсивно сменить права доступа Вы всегда сможете с помощью SSH либо SFTP протоколов.
    Установка необходимых прав доступа в cPanel

��❤️���� Как рекурсивно изменить права на папки и подкаталоги

Мануал

Автор cryptoparty На чтение 1 мин Опубликовано 15.05.2019

Установка правильных прав на файлы для любого веб-приложения является важной частью веб-хостинга.

Из этого руководства вы узнаете, как рекурсивно изменять права доступа к файлам для папок и подпапок с помощью одной команды.

Как вы знаете, в Linux все рассматривается как файл.

Папка также называется файлом каталога, обозначенным в разделе разрешений ‘d‘.

Приведенная ниже команда установит владельца www-data, а группу владельца – ubuntu для всех файлов, каталогов и подкаталогов.

sudo chown -R www-data:ubuntu /var/www/html

Используйте команду chmod, чтобы изменить права доступа для всех файлов, каталогов и подкаталогов.

sudo chmod -R 755 /var/www/html

Примечание. Разрешение 755 можно установить для каталогов, но не для файлов. При этом устанавливается бит выполнения для файлов, который не рекомендуется для каких-либо производственных сред, исключая некоторые конкретные случаи. Мы рекомендуем устанавливать разрешения отдельно для файлов и каталогов.

Установить права на файлы:

sudo find /var/www/html -type f -exec chmod 644 <> \;

Установить разрешения для каталогов:

sudo find /var/www/html -type d -exec chmod 755 <> \;

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!

Добавить комментарий Отменить ответ
James Bond 07.10.2022 в 15:18
Зачетный заголовог хд и со смыслом))
cryptoparty автор 10.10.2022 в 06:02

Поддержать нас

  • Аудит ИБ (49)
  • Вакансии (12)
  • Закрытие уязвимостей (110)
  • Книги (27)
  • Мануал (2 359)
  • Медиа (66)
  • Мероприятия (39)
  • Мошенники (23)
  • Обзоры (831)
  • Обход запретов (34)
  • Опросы (3)
  • Скрипты (116)
  • Статьи (360)
  • Философия (124)
  • Юмор (18)

Наш Telegram

Социальные сети
Поделиться

Anything in here will be replaced on browsers that support the canvas element

  • �� Каковы различные форматы сертификатов? 27.10.2023

Цифровые сертификаты могут использоваться для различных целей. Они могут использоваться для защиты соединений с веб-сайтами, для шифрования сообщений электронной почты или для проверки личности пользователя. Выбор правильного формата сертификата необходим для обеспечения безопасности и сохранности данных. Когда речь идет о различных форматах сертификатов, важно выбрать тот, который соответствует вашим потребностям Выберите формат сертификата, совместимый с […]

Преобразование файла PFX (PKCS #12) в формат PEM (Privacy Enhanced Mail) достаточно просто на Linux и Unix-подобных системах. В этой статье мы рассмотрим, как преобразовать файл сертификата в формате PFX в файл PEM с помощью OpenSSL из командной строки. Что такое файл PFX? PFX (также PKCS#12) – это формат файла, содержащего сертификат(ы) и закрытый(ые) ключ(ы), […]

Одним из основных нововведений, появившихся в Podman, стала возможность запуска контейнеров без прав root. С точки зрения безопасности это было существенным улучшением, поскольку потенциально скомпрометированный контейнер, запущенный от имени root, представляет собой угрозу безопасности для хост-системы. Чтобы добиться аналогичного поведения, последние версии Docker поддерживают запуск демона docker в пользовательском контексте. �� Почему процессы в контейнерах […]

Small Form Factor Pluggable (SFP) – это компактный приёмопередатчик, который устанавливается в SFP порт коммутатора Ethernet. Модуль используется для присоединения платы сетевого устройства к оптическому волокну или витой паре. Модули SFP заменили устаревшие модули GBIC благодаря своим миниатюрным размерам. Это преимущество в размерах позволяет им эффективно работать в ограниченных сетевых средах, обеспечивая быстрый обмен данными […]

Давайте поговорим о классификации вредоносных программ. Когда антивирусная программа или средство защиты от вредоносного ПО обнаруживает что-то потенциально вредоносное, она использует определенный формат, чтобы помочь вам или другим специалистам понять, с какой именно угрозой вы имеете дело. Формат может выглядеть примерно так: Type:Platform/Family.Variant!Suffixes Это не всегда будет выглядеть именно так, поскольку, как вы помните, не […]

Как изменить права доступа и владельца/группу для файлов и каталогов

В этой инструкции разберем как изменять владельца/группу, а также права доступа к файлам и директориям. Вступительную теоретическую информацию по этой теме, а именно какие существуют права доступа и пользователи в системе 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

Права доступа к файлам и папкам в Linux

url image

Поговорив о пользователях и группах, самое время вспомнить про права доступа, которые для них настраиваются. Общая схема прав одинакова и для файлов, и для папок. Вы уже видели, как система отображает права доступа, в выводе команды ls -l , которая показывает содержимое директории: Первые 10 символов содержат информацию о правах к файлу или каталогу.

rw- права пользователя-владельца
r— права пользователей группы-владельца
r— права всех остальных пользователей
Далее идёт имя пользователя-владельца и группы -владельца.
root файл принадлежит пользователю root
root файл принадлежит группе root
Исходя из этого, иерархия доступа на уровне пользователей разбивается следующим образом: права пользователя-владельца, права участников группы-владельца и права всех остальных. Соответственно, для каждой категории указывается, какие операции с файлом ей доступны: чтение (r), запись (w) или выполнение (x) — для исполняемых файлов. Для директорий параметры те же, но обозначают немного другое: просмотр директории (r), создание папок / файлов (w) внутри директории, переход в директорию (x). Каждый из этих уровней доступа можно выразить в восьмеричной системе с помощью числового значения: 4 (r), 2 (w), 1 (x). Вот так мы и получаем общую схему прав:

a — любые пользователи
u — права пользователя g — права группы o — права всех остальных
r w x r w x r w x
4 2 1 4 2 1 4 2 1

Для отображения уровня прав помимо формата rwxrwxrwx используется упомянутый восьмеричный формат. Для этого достаточно сложить все уровни прав по категориям:

rwxrwxrwx = (4+2+1), (4+2+1), (4+2+1) = 777

Теперь можно перейти к инструментам, которые позволяют управлять правами на файлы и директории.

Смена владельца файла или директории

Для смены владельца доступны два инструмента. Первый — chown , позволяет изменить пользователя и группу файла или папки:

chown [новый пользователь]:[новая группа] [файл или папка]

Если не указывать группу, изменится только пользователь-владелец. Если не указывать пользователя ( :[новая группа] ), изменится только группа-владелец. При изменении прав на директории можно использовать параметр -R . Он рекурсивно изменит владельца всех вложенных директорий и файлов. Представим, что нам нужно предоставить права на папку new-user для одноимённого пользователя и его группы. Команда для этого будет выглядеть так:

chown -R new-user:new-group /home/users/new-user

Второй инструмент — chgrp . В отличие от первого, меняет только группу-владельца:

chgrp [группа] [файл или папка]

Как и chown, может работать рекурсивно с помощью ключа -R .

Смена прав доступа к файлу или директории

Для работы непосредственно с правами используется команда chmod :

chmod [настройки прав] [файл или папка]

При работе с директориями опция -R позволит изменить права на все вложенные файлы и папки. Настройки прав в chmod можно определять двумя способами:

  1. Указав категорию ( u — пользователь-владелец, g — группа-владелец, o — другие пользователи, a — все пользователи), модификатор ( + , — , = ) и, соответственно, нужные права ( r , w , x ). Например, представим, что у нас есть файл example.txt с максимальным уровнем прав для всех категорий пользователей: Допустим, мы не хотим, чтобы кто-то в принципе мог запускать этот файл на выполнение. В таком случае нам нужно убрать параметр «x» из прав всех категорий пользователей сразу. Это можно сделать так:
chmod a-x example.txt

Представим, что потом мы решили вернуть владельцу права на запуск файла. То есть нам нужно добавить параметр «x» в категорию пользователя-владельца:

chmod u+x example.txt

Если вдруг мы захотим изменить весь набор параметров для отдельной категории разом, это будет выглядеть следующим образом:

chmod u=rwx example.txt
chmod 777 example.txt

В примере мы назначили максимальный уровень доступа всем категориям пользователей. Соответственно, для изменения уровня прав отдельной категории пользователей нужно изменить только это числовое значение. Например, запретим исполнение файла для всех пользователей:

chmod 666 example.txt

А потом вернём, но только пользователю-владельцу:

chmod 766 example.txt

Бывает, что нам нужно изменить права только на все папки или только на все файлы в определённой директории. Часто с этим можно столкнуться при настройке прав на файлы сайтов. Вот вам пара однострочников на этот случай:

    Смена прав на 755 для всех папок внутри /var/www/sites/example.com :

find /var/www/sites/example.com/ -type d -exec chmod 755 <> \;
find /var/www/sites/example.com/ -type f -exec chmod 644 <> \;

Изменение атрибутов файлов

Помимо прав доступа и владельца каждый файл может иметь ряд атрибутов, определяемых на уровне файловой системы. Атрибуты показывают, какие операции могут или не могут проводиться с файлом в принципе, независимо от того, кто им владеет.

Посмотреть атрибуты файлов в текущей директории можно с помощью команды lsattr . Если запустить её без аргументов, она выведет атрибуты всех файлов в текущей директории. Если указать путь к файлу или папке, она перечислит свойства указанного файла или списка файлов в указанной папке соответственно:

lsattr example.txt

Первые 20 символов в строке предназначены для отображения атрибутов файла.

Список атрибутов может отличаться в зависимости от файловой системы. Вот список основных:

«godmode» — файл становится неуязвим для любых изменений. Его нельзя удалить, переименовать, изменить содержимое, создать символьную ссылку на него.

в файл с таким атрибутом можно только добавлять новые данные. Старое содержимое изменить или удалить не получится. Это пригодится для защиты от вредоносных вставок или замен в файлах, куда постоянно записываются данные — например, в логах. Доступ к изменению старого содержимого по умолчанию есть только у суперпользователя root .

активирует безвозвратное удаление файла. В том смысле, что после удаления файл нельзя будет восстановить с носителя — при удалении все использовавшиеся для хранения файла блоки на диске перезаписываются нулями.

активирует «обратимое» удаление файлов. Это значит, что при удалении файла с этим атрибутом его содержимое можно восстановить.

сжатый файл. Все данные, записываемые в файл, автоматически сжимаются, а данные, извлекаемые из файла — возвращаются в исходное состояние.

настраивает для файла исключение при использовании утилиты dump . То есть файл не будет включен в архив при создании резервной копии этим способом.

показывает, что файл в качестве указателей использует экстенты.

в журналируемых файловых системах ( ext3 , ext4 ) указывает на то, что при сохранении файла он сначала будет записан в журнал ФС, и только потом — на диск.

указывает, что при работе с файлом система не будет обновлять информацию о времени доступа к нему.

атрибут для директорий. Указывает, что все изменения в папке синхронно записываются на диск, минуя кэш.

указывает, что все изменения в файле с этим атрибутом записываются синхронно на диск, минуя кэш.

Изменить атрибуты файла позволяет команда chattr :

chattr [модификатор][изменяемые атрибуты] [целевой файл или папка]

То есть, если нам нужно защитить какой-то важный файл от посягательств, можно использовать такую команду:

chattr +i example.txt

Проверяем — посягательства не работают.

Если же нам нужно вернуть файл в нормальное состояние, нужно выполнить обратную операцию:

chattr -i example.txt

Для просмотра более подробной информации о файловых атрибутах, их ограничениях и правилах применения используйте команду:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *