Содержание

Общая информация о правах доступа в Linux

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

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

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

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

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

Восьмеричное числоДвоичное числоРежим доступа
0000---
1001--x
2010-w-
3011-wx
4100r--
5101r-x
6110rw-
7111rwx

Например, команда:

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
  3. С помощью chmod устанавливаем рекурсивно права доступа для mysite:
    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