Смена прав доступа пользователю в 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
- Входим по протоколу SSH на ВПС с root привилегиями.
- Переходим с помощью команды cd в директорию, где расположена необходимая нам папка. В данном случае это /var/www:
cd /var/www
chmod -R 777 mysite
SFTP
Для подключения к серверу по протоколу SFTP мы будем использовать программу FileZilla. Данная программа бесплатна, поддерживает русский язык и кросплатформенна. Вы можете скачать ее с официального сайта: https://filezilla-project.org/. Обратите внимание, что в левой колонке отображает дерево каталогов Вашего компьютера, а в правой удаленной машины, в данном случае ВПС.
- Подключаемся к ВПС с root привилегиями по SFTP.
- Переходим в каталог /var/www
- Нажимаем правой кнопкой мышки на папке mysite и выбираем «Права доступа к файлу»
- Во всплывающем окне устанавливаем необходимые права 777 и нажимаем «Перенаправить во вложенные каталоги» и выбираем «Применить ко всем каталогам и файлам» и нажимаем ОК.
DirectAdmin
К сожалению, в КП DirectAdmin не предоставляется доступ к корневой файловой системе с помощью встроенного менеджера файлов. В связи с этим, в качестве примера, мы изменим права доступа для директории /domains/domain.com/public_html/mysite
- Входим в КП DirectAdmin
- Нажимаем кнопку Files в панели сверху
- Перейти в папку /domains/domain.com/public_html
- Поставить галочку напротив каталога mysite, после чего установить права доступа к папке 777 и поставить галочку напротив Recursive, для применения данных прав доступа ко всем вложенным файлам и папкам.
- Нажать set Permission
cPanel
В cPanel также не предоставляется доступ к корневой директории, в связи с чем мы сменим, в качестве примера, права доступа для папки /public_html/mysite. Обратите внимание, что менеджер файлов доступен только на уровне пользователя.
- Войти в cPanel на уровне пользователя.
- Перейти в Файлы → Диспетчер файлов.
- Перейти в директорию /public_html
- Выделить папку mysite и нажать «Разрешения»
- В всплывающем окне установить необходимые права доступа и нажать «Change Permissions». Обратите внимание, что файловый менеджер cPanel не умеет изменять права для всех вложенных файлов и папок. Рекурсивно сменить права доступа Вы всегда сможете с помощью SSH либо SFTP протоколов.
❤️ Как рекурсивно изменить права на папки и подкаталоги
Мануал
Автор 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
Поговорив о пользователях и группах, самое время вспомнить про права доступа, которые для них настраиваются. Общая схема прав одинакова и для файлов, и для папок. Вы уже видели, как система отображает права доступа, в выводе команды 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 можно определять двумя способами:
- Указав категорию ( 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
Для просмотра более подробной информации о файловых атрибутах, их ограничениях и правилах применения используйте команду: