Согласитесь, бывает в разговоре, когда один человек, что-то пытаясь популярно объяснить другому, зачастую незнакомыми терминами способен последнего загнать в «непонятки» еще больше. Вот и у меня с читателями так иногда бывает. Пишешь вроде бы очевидную тебе вещь типа «положите файл в такую-то папку на сервере и выставите ей права…», а читатели начинают спрашивать — Как это положить? Или — Какие еще права?

Будем сегодня восполнять этот пробел в знаниях. Итак, вы уже имеете свой блог или сайт на и соответственно получили представление об административной панели управления WP. Через админку можно сделать многое, но далеко не все.

Как, например, изменить отдельно взятый файл вашей установленной темы или плагина? Для этого вам необходим доступ к вашему серверу, на котором собственно все это и хранится. Что бы получить доступ к своим файлам на сервере вам необходимо настроить FTP соединение с ним. Как это сделать?

Как настроить FTP?

Вам понадобится программа — файлменеджер типа Total Commander или FileZilla . Первый платный (хотя, в рунете это понятие, как вы понимаете, довольно условно) и мощный, универсальный инструмент для работы с файлами и папками. Второй бесплатен и представляет собой похожий инструмент, но заточенный изначально для работы именно в сетях. Не буду тут очень подробно на них останавливаться, потому что это две темы для отдельных, больших статей, а отмечу только, что раньше использовал Total Commander, но в последнее время перешел на FileZilla. Второй работает быстрее, во всяком случае у меня.

Используем Total Commander

Для добавления и настройки нового FTP соединения скачайте и запустите Total Commander. В верхнем меню выберите – Сеть – Соединиться с FTP сервером или нажмите CTRL+F на клавиатуре. Перед вами появится окошко, где выберите – Добавить .

В новом окне — Настройка FTP соединения , вам нужно будет заполнить четыре первых, пустых поля данными с вашего сервера. Где взять данные? У вашего хост провайдера.

Я покажу пример на основе хостинг сервиса . Если у вас другой провайдер, то соответственно, вам нужно взять их из вашей панели управления для этого хостинга. Не нашли? Тогда обратитесь в тех поддержку или просто поищите в справке. Как правило, все подобные вопросы давно и подробно расписаны у хостинговых компаний.

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

Возвращаемся к нашему Total Commander.

Первое поле Имя соединения . Задайте произвольной имя для вашего будущего соединения. Как правило, тут просто вводят имя сайта.

Второе поле Сервер (Порт) . Сюда скопируйте адрес вашего хоста типа — ftp://xxx.hostenko.com. Префикс можно не копировать, так что оставьте только — xxx.hostenko.com

Третье поле Учетная запись . Тут введите ваш логин.

Четвертое поле Пароль . Тут соответственно, пароль.

Все. Далее жмете кнопку ОК и возвращаетесь в окно Соединение с FTP сервером . В списке появилось новое соединение с именем, которое вы задавали в первом поле. Выбираете его и кликаете на — Соединиться . Если соединения не происходит, зависает и т д., значит вы, где то таки «накосячили» с данными. Проверьте все внимательно еще раз.

Пару слов о другом файлменеджере – FileZilla. Интерфейс там несколько отличается от рассмотренного нами выше, однако суть и вводимые параметры для настройки FTP соединения остаются неизменными.

Как задать права папкам?

После того как вы успешно соединились со своим сервером, в окне Total Commander увидите корневую директорию своего сайта.

Находите нужную папку. Выделяете её и идете наверх, в главное меню – Файлы – Изменить атрибуты . В появившемся окне — Изменение атрибутов внизу, в левом углу выставляете требуемые права. Можете сделать то же самое путем отметок в соответствующих чекбоксах выше. Далее нажимаете ОК. Необходимые права на папку установлены.

Используем FileZilla

Можете использовать специальный «Менеджер сайтов» доступный по клику в верхней, левой части меню. Кликнув вы попадете в новое окно для добавления сайтов. Нажимаем кнопку «Новый» и вводим название. Затем заполняем всё те же данные с хостинга справа. В выпадающем списке Тип входа выбираем — «Нормальный».

Для того что бы выставить права на папку в клиенте FileZilla, переходим к своим файлам на сервере, правой кнопкой мыши кликаем на нужную папку и выбираем — «Права доступа к файлу». Указываем нужные права с помощью чекбоксов или просто введя цифру.

Теперь вы знаете, как настроить FTP соединение и при необходимости изменить права на папки с файлами. Уверен, в будущем, вам не раз потребуется, что-то вручную скопировать на сервер или оттуда, на свой комп.

В дополнение хочу заметить, что в последнее время, ситуация когда необходимо вручную выставлять права на какие либо папки встречается все реже и реже. У нормальных хостинг провайдеров по умолчанию, на все ваши папки уже будут выставлены соответствующие права. Авторы тоже в свою очередь стараются лишний раз не обременять пользователей лишними настройками. Так что запомните — если тема или плагин работают нормально, то никакие права дополнительно выставлять не надо.

Удачи вам и надежных соединений.

Работая в Linux (равно как и во FreeBSD и Windows), нужно не забывать о правах доступа на файлы и папки. Часто это касается директории Web серверов на OS Linux когда необходимо правильно выставить права на директории и файлы с точки зрения безопасности. Выставлять права отдельно на каждый файл или папки не совсем правильное решение когда этих файлов и папок десятки, а то и сотни.

Ниже приведенные примеры помогут удобно и быстро выставить права файлов или папок в кратчайшие сроки.

Изменить владельца для папки и всех файлов лежащих в этой папке

Чтобы сменить владельца, в Unix используется команда chown . Первая группа параметров данной команды — опции. Для того, чтобы изменения коснулись не только данной директории, но и всех поддиректорий, нужно применить команду рекурсивно — с параметром «-R».

Вторая группа параметров — это владелец и группа владельцев, разделённые двоеточием (можно не устанавливать группу — тогда это просто логин владельца) — «user:group» или «user».

Третья же группа параметров — это пути до папок / файлов, к которым нужно применить команду. Например, «/home/user/dir/».

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

Sudo chown -R user:group /home/user/dir/

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

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

Помимо владельца, можно настроить, что же может этот самый владелец и группа, а также все остальные. В Unix идёт разделение возможностей именно таким образом — есть 3 группы прав: владелец , группа владельцев и другие . И права, что можно присвоить каждой группе:

  • Право на запуск файла. Оно же — право на проход по директории (если устанавливаем права на директории).
  • Право на изменение файла. Оно же — право на создание и удаление файлов и папок в директории (опять же, если устанавливается для папки).
  • И право на чтение файла. Для папок — это право на просмотр содержимого папки.

Кодируются эти права следующим образом: запуск — 1, изменение — 2, чтение — 4. Складывая их мы получим набор прав, предоставляемый владельцу/группе/другим.

Права на доступ изменяются командой chmod .

  • Изменять файл имеет право только владелец, группа владельце может читать, остальные — ничего не могут: chmod 640 /media/share/file.txt
  • Создавать файлы в папке могут все, но видит их только владелец: chmod 622 /media/share/messages/
  • Есть программа, которая не хочет запускаться — не хватает прав на исполнение. Нужно, чтобы все могли её запустить, но никто, кроме владельца, не мог её редактировать: chmod 711 /media/share/exec

Для рекурсивного изменения прав используется опять же ключ «-R». Например, chmod -R 700 /home/user — доступ к файлам и папкам /home/user останется только у владельца.

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

Изменение прав только на файлы или только на папки

Вышеприведённый пример рекурсивного изменения прав на файлы и папки в /home/user/ не так уж и хорош, как может показаться. Мы сделали, чтобы теперь и обычные файлы могли запускаться. Это может привести к проблемам, если среди фалов были примеры программ, на которые специально были выставлены права без запуска, дабы случайно не исполнить хранимые программы. Если бы мы поставили права 600 — мы бы потеряли доступ к подпапкам и файлам, лежащим в них, ибо без права «на исполнение» (оно же — «право перехода по папке»), мы бы не смогли до них добраться.

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

Find /home/user -type f -exec chmod 600 {} \;

Немного магии, но если присмотреться, всё понятно: найти в /home/user все объекты, типа file (f) и выполнить для них chmod 600.

Или же для директорий:

Find /home/user -type d -exec chmod 700 {} \;

Крайне полезны могут быть утилиты find, grep для поиска и фильтрации работы команд. chown и chmod также умеют больше, чем здесь описано. Есть ещё chattr — для смены атрибутов папок и файлов (про атрибуты — в другой раз). Все выше перечисленные утилиты имеют хорошую документацию.

При работе с файлами, расположенными на веб-сервере , часто возникает необходимость установить или изменить права доступа к папкам и файлам (chmod) вида 777 . В семействе серверных операционных систем Unix, права доступа (chmod) вида 777 регламентируют такие действия: чтение, запись в папку или файл и выполнение файла.

Что такое «права доступа» в операционной системе

Права доступа к файлам или папкам - это защитная функция любой многопользовательской операционной системы или программного обеспечения от несанкционированного доступа к важной (системной) информации.

Если операционная система однопользовательская, например, как домашний вариант (home) Windows - то здесь нет смысла особо ограничивать власть юзера над его пользовательскими и системными файлами и папками. Потому что, в этом случае, один и тот же человек является - и пользователем, и администратором, одновременно.

Если же операционная система (или программа) многопользовательская и в ней может обретаться более одного юзера, то тут сначала нужно разобраться и решить - кого из пользователей можно допустить к важным системным и пользовательским файлам, а кто - «пусть постоит в сторонке». Для того, чтобы разграничить возможности и степень доступа к файлам и папкам для пользователей, в пределах операционной системы - существуют «права доступа».

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

При этом, права доступа позволяют частично или полностью закрывать общий доступ к важным файлам и директориям, предотвращая тем самым несанкционированное вмешательство в работу системы (программы, сервера, сайта) или изменение пользовательских данных (базы данных, БД) на сервере .

Как работают «права доступа»

По большому счёту, работа пользователя в любой операционной системе или программе - это обычная работа с файлами или папками. Изначально, обращаясь любому файлу или папке - пользователь волен сотворить с ними что угодно - выполнить, удалить, изменить (перезаписать) или создать новый объект. Однако, операционная система бдит - она всегда начеку - при каждом обращении пользователя к файлу или папке, при каждом его действии в пределах операционной системы, она скрупулёзно проверяет, разрешено или нет юзеру работать с данным файлом или папкой. Это и есть «права доступа». Таким образом, ограничиваются возможности пользователя в тех действиях, которые он (юзер) может сотворить с файлом или папкой на подконтрольной ему компьютерной территории.

Права доступа в Unix

Как уже было сказано, права доступа к файлам и папкам есть во всех операционных системах, подразумевающих многопользовательскую работу. И в ОС Windows, и в ОС Unix, и в любой другой многопользовательской операционной системе есть функция настройки и установки прав доступа к файлам и директориям (папкам, каталогам) для различных категорий пользователей. В данной статье речь пойдёт о правах доступа для серверных ОС семейства Unix, которые ещё часто называют .

Права доступа (chmod) вида 777 для серверных ОС Unix регламентируют разрешение или запрет для пользователя на такие действия, как: чтение, запись в папку или файл и выполнение исполнительных файлов

Что такое chmod

Что такое 777

В серверных ОС Unix права доступа записываются одной строкой, состоящей из трёх цифр, где каждая цифра относится к своему типу группы пользователей. В свою очередь, все пользователи подразделяются на группы трёх типов:

  1. группа Owner - «Владелец папки или файла»
  2. группа Group - «Член группы владельца папки или файла»
  3. группа World или Public - «Все остальные пользователи»

Таким образом, три цифры в обозначении, вида 777 - это выставленные права доступа сразу для трёх групп пользователей папки или файла, где - каждая из трех цифр обозначает права доступа для своей группы пользователей.

Теперь осталось разобраться, кто такой «Владелец»,
что такое «Член группы владельца»
и кто это такие «Все остальные пользователи».

Владелец, член группы владельца и все остальные пользователи

Поскольку, мы здесь говорим про сервера, сайты и серверные ОС Unix, то:

Разделение всех пользователей на группы в серверных ОС Unix реализовано следующим образом - Владелец и Члены группы владельца подключаются к серверу, используя спецсвязь (FTP, SSH) (FTP, SSH-протокол), а все остальные пользователи заходят на сайт с веб-браузера (http-протокол)

Отсюда вытекает что, в зависимости от протокола обращения к файлу на сервере, серверная ОС Unix сразу делит пользователей на две части, либо - это владелец или член группы владельца, либо - все остальные пользователи. Основанием для такой «сортировки», (повторяюсь) является сетевой протокол соединения - если пользователь подключился к серверу, используя FTP-аккаунт (FTP-протокол), то это - или владелец или член его группы. А если пользователь зашёл на сервер с веб-браузера (http-протокол), то это уже третья группа - все остальные пользователи.

Таким образом, для серверной ОС Unix, между первыми двумя и третьей группами есть очень чёткое и легкопонятное разграничение - владелец и член его группы попадают на сервер, используя спецсвязь (FTP, SSH), а все остальные пользователи - через свои веб-браузеры.

А вот различия между первыми двумя группами - владельцем и членом его группы - сильно стёрты и завуалированы. Здесь уже начинаются дебри хостинг-пакета и индивидуального подхода для каждого случая.

Справка:
Все файлы в Unix (Linux) могут иметь двух владельцев: непосредственного своего владельца-создателя (user owner) и его группу (group owner). Под понятием группы владельца подразумевается некий список пользователей, который был создан самим владельцем для совместного пользования файликом или папочкой.

Таким образом, для серверной ОС Unix, владельцем файла или папки является непосредственно администратор сервера. Все остальные, кому владелец разрешит доступ к файлам на своём сервере и кто будет подключаться к этому серверу по FTP/SSH-протоколу - это члены группы владельца.

Под арендой дискового пространства понимается место на сервере, занимаемое именно файлами сайта. Как правило, это недорогие хостинг-пакеты, где их пользователи не имеют доступа к админпанели сервера (не путать с CP - контрольной панелью аккаунта). Соответственно, сидящие на таких пакетах, администраторы (владельцы) сайтов, при своём подключении по FTP-протоколу к серверу - попадают исключительно в группу владельца. Тогда как, сам владелец (администратор сервера) находится где-то там, «далеко в горах», в своём уютном рабочем кабинете технической службы хостера.

При аренде дискового пространства, владельцем всех файлов сайта является сам хостер, тогда как арендатор дискового пространства - всего лишь член группы владельца.

Для арендаторов серверов (реальных и виртуальных) - ситуация, несколько иная. При аренде сервера, арендующий сам устанавливает операционную систему, естественно, при этом - он является для этой системы непосредственным владельцем файлов. А вот создавать группу и вносить в неё других пользователей - это уже его, владельца дело.
Что из всего вышесказанного следует?

А вывод такой: - Арендаторы дискового пространства могут не заморачиваться с первой цифирькой вида (chmod) 777, поскольку они не владельцы, и никогда не будут владельцами своих файлов. Для них первая цифра - всегда должна быть семь. - Арендаторы серверов (реальных и виртуальных) могут не заморачиваться со второй цифирькой вида (chmod) 777. При условии что, они не создавали и не собираются создавать никаких пользовательских групп у себя на сервере. Здесь, как такового, ярковыраженного и сильного разграничения нет. Вернее, оно будет, если создать группу владельца и внести в неё список пользователей. Вот только создать такую группу может исключительно сам администратор сервера. Когда создаст - тогда и будет думать, что делать со второй цифрой.

Что обозначают цифры 777 или 456

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

  • 4 = Read (право на чтение)
  • 2 = Write (право на запись)
  • 1 = Execute (право на выполнение)

Например:

  • 6=4+2 - Read+Write (право на чтение+ право на запись)
  • 5=4+1 - Read+Execute (право на чтение+ право на выполнение)
  • и т.д.

Все возможные 7 вариантов сложения для этих трёх цифр
по установке прав доступа на папку или файл для групп пользователей
выглядят так:

  • 7 = 1+2+4 - Read, Write, Execute (чтение, запись и выполнение)
  • 6 = 4+2 - Read, Write (чтение и запись)
  • 5 = 4+1 - Read, Execute (чтение и выполнение)
  • 4 = 4 - Read (только чтение)
  • 3 = 1+2 - Write, Execute (запись и выполнение)
  • 2 =2 - Write (только запись)
  • 1 =1 - Execute (только выполнение)

Таким образом, выставив права доступа (chmod) вида 765 ,
мы выставим следующие права для групп:

  • Первая цифра, группа Owner, Владелец файла или папки
    Первая цифра = 7
    Это значит, что Владелец папки или файла имеет право на:
    7=4+2+1 - Read (чтение)+Write (запись)+Execute (выполнение)
  • Вторая цифра, группа Group, Член группы владельца
    Вторая цифра = 6
    Это значит, что Член группы владельца имеет право на:
    6=4+2 - Read (чтение)+Write (запись)
  • Третья цифра, группа World, Все остальные пользователи
    Третья цифра = 6
    Это значит, что Все остальные пользователи имеют право на:
    5=4+1 - Read (чтение)+Execute (выполнение)

Теперь понятно, что выставив права доступа комбинацией цифр 777 (три топора), мы открываем полный доступ к файлу абсолютно для всех групп пользователей. Аналогичный результат можно получить, поместив файл в папку "Общие документы" (Public) в Windows.

Нужно отметить, что некоторые комбинации цифр могут обозначать весьма бредовые ситуации с правами доступа к файлу. Например, комбинация вида 477 будет разрешать доступ к перезаписи и исполнения файла для всех, кроме его владельца (читай - администратора). Увы, такого не бывает.

Права доступа всегда выставляются «по нисходящей» от «Владельца» к «Члену группы владельца», и дальше - к группе «Всех остальных». Но, не наоборот!

Как выставить права доступа вида 777 на сервере

Теперь, когда стало абсолютно ясно, что обозначают эти три заветные цифры - выставить права доступа (chmod) вида 777 , не составит труда. Чтобы выставить права доступа (chmod) вида 777 для папки или файла, который находится на сервере , понадобится любой файловый менеджер, который способен установить и поддерживать FTP-соединение с сервером. Это может быть Total Commander, Windows Commander, CuteFTP, Filezilla или что-либо ещё. Лично я предпочитаю простой и бесплатный FTP-файловый менеджер Filezilla, несмотря на то, что являюсь горячим поклонником Total Commander-а.

Чтобы выставить права доступа (chmod) вида 777 , заходим на сервер по FTP под правами Администратора!, через пару логин-пароль Администратора!. Дальше, находим и выделяем требуемый объект (папку или файл). После этого, вызываем правой кнопкой мыши контекстное меню «Файл - Изменить атрибуты». Дальше, указываем нужный атрибут (права доступа) и жмём «ОК». Чтобы "вбить" нужную комбинацию цифр потребуется, либо поставить-снять чекбоксы (галочки) возле нужных пунктов, либо ввести с клавиатуры нужный код вида 777 в открывшемся окне. Все FTP-файловые менеджеры поддерживают, и тот, и другой способ.

Облом вида 777 на Денвере

Как и все пришельцы из Космоса, я регулярно общаюсь с представителями различных внеземных цивилизаций, которые начинают строить свои сайты раньше, чем прилетят на Землю.

Сообщение для инопланетян:
Не нужно пытаться выставить права доступа (chmod) вида 777 при работе с широко известным пакетом , который только имитирует работу веб-сервера под управлением операционной системы Unix на локальном компьютере, на самом деле работающем под управлением операционной системы Windows. Там нет такой кнопки .

Файлы в Linux имеют двух владельцев

Необходимо правильно выставить права на файлы и папки. Сделать это можно с помощью FileZilla. Вообще для каждого сервера нужны свои определённые настройки, которые лучше узнать у своего хостера. Но обычно права ставят такие: на файлы, которые находятся в корневой директории 444, на папки в корневой директории ставят 755, на папки tmp и logs ставят 705, на паку своего шаблона поставьте 555, на папку image/stories можно поставить 755, на папку Cache 777.

Владельцем нового файла является пользователь, который создал файл.

Файлы в Linux имеют двух владельцев: пользователя (user owner) и группу (group owner) под которой понимается определенный список пользователей и причем владелец файла не обязательно должен быть членом группы владеющей файлом. Каждый пользователь может быть членом сразу нескольких групп одна из которых называется первичной (primary), а все остальные — дополнительными (supplementary). Это дает большую гибкость в организации доступа к определенному файлу. Совместное использование некоторым ресурсом организовать очень просто, достаточно создать новую группу и включить в нее всех кому это действительно необходимо, а если человек предположим перешел в другой отдел и уже нет необходимости в использовании данного файла. А все очень просто, необходимо просто выключить его из состава данной группы. Ну а, что делать с остальными неужели они так и не смогут хотя бы прочитать содержимое файла или их прийдется каждый раз включать и исключать из группы.
А вот для всех остальных (other) которые не принадлежат ни к user owner и group owner права доступа устанавливаются отдельно и как правило самые минимальные. Обычно владельцем файла является пользователь который создал данный файл. Владелец-группа вновь создаваемого файла устанавливается равной первичной группе пользователя создавшего файл, но в некоторых версиях Unix владелец-группа наследуется от владельца-группы каталога в котором создается файл. Для изменения владельца файла используется команда chown в качестве параметров принимающая имя нового владельца и список файлов: # chown new_owner file1 file2 …Конечно же на месте названия файла может быть и имя каталога, но при этом владелец файлов внутри каталога не изменится, для того чтобы это произошло лучше всего воспользоваться флагом -R (chown -R). При использовании данной команды (впрочем как и большинства) можно пользоваться регулярными выражениями если есть необходимость отобрать файлы удовлетворяющие определенному критерию (chown — R lys *.с). Для изменения владельца группы используется команда chgrp, синтаксис использования данной команды аналогичен предыдущей: # chgrp sales /home/sales/*. Кстати команда chown позволяет сразу установить и группу-владельца для этого необходимо сразу за именем владельца без пробелов и др. знаков поставить двоеточие и написать название необходимой группы
# chown — R sergej:gljuk * , допускается и такой вариант записи # chown — R:gljuk * (т.е. аналог команды chgrp).
Владение файлом определяет те операции которые тот или иной пользователь может совершить над файлом. Самые очевидные из них это изменение владельца и группы для некоторого файла. Эти операции может проделать суперпользователь и владелец файла (в производных BSD UNIX только суперпользователь). Если с первым все понятно, то например написав программу и сделать затем ее владельцем, например суперпользователя увы не получится, и хотя вариант изменения владельцем допускается варианта такого применения я честно говоря не нашел. А вот группу, если вы являетесь владельцем файла, можно изменить только на свою первичную (по умолчанию имеет то же название, как и имя соответствующего пользователя). Эти все ограничения введены по нескольким причинам, чтобы никто не мог подсунуть какой ни будь зловредный файл и для того чтобы если на компьютере установлен лимит дискового пространства для конкретного пользователя, нельзя было просто переопределив владельца превысить его.
Следующие базовые операции которые можно совершить над файлом: это доступ на чтение (Read), доступ на запись (Write) и доступ на выполнение (eXecute). Эти операции устанавливаются для каждой из трех групп пользователей раздельно. Причем проделать это может только пользователь владелец и конечно же суперпользователь. Для установки соответствующих прав используется команда chmod. Применяется она в двух формах абсолютной — когда игнорируются старые права, а безусловно устанавливаются новые, и относительной — когда к имеющимся правам добавляются/убираются другие. Абсолютная форма предполагает задание прав доступа к файлу прямым заданием его в восьмеричной форме. Для того чтобы получить полный код необходимого режима файла, необходимо просто сложить значения кодов приведенных в таблице.

Сегодня я хотел бы поговорить о правах доступа к файлам и папкам (читайте ). Это понятие пришло в мир вебмастеринга из linux (Unix) подобных систем, на которых работает большинство хостингов.

Да и само название Chmod является наименованием программы в linux, которая позволяет назначить права доступа различным объектам. А раз ваш сайт установлен на сервере под управлением linux (Unix) той или иной вариации, то и работа с объектами вашего вебсайта будет подчинена правилам, установленным операционными системами linux (Unix).

В Windows фактически для всех файлов устанавливаются максимальные полномочия, что, собственно, и приводит к засилью и наших компьютерах, а так же, в свою очередь, не дает умереть с голоду владельцам антивирусных компаний. В linux (Unix) системах дело обстоит иначе – все сложнее, но одновременно и безопаснее. Если все настроить правильно и со знанием дела, то можно существенно повысить безопасность своего вебсайта.

Базовые понятия прав доступа к файлам и папкам

Если же все пустить это дело на самотек и не заморачиваться с установкой нужных привилегий, то вероятность взлома вашего ресурса или заражения его вредоносным кодом будет очень велика. Хорошо, если вы осуществляли всех ваших данных, а если нет?!

Поэтому лучше сразу же, не откладывая в долгий ящик, произвести настройку и изменение Чмод для всех важных объектов вашего движка, исходя из принципа минимализма. Т.е. давать объектам минимально необходимые для корректной работы вебсайта права .

Давайте сначала разберемся в сути вопроса, чтобы понимать, что именно и каким образом мы настраиваем. Итак, приступим. Права доступа разделяются по отношению к файлам и к директориям. Обозначаются они одинаково, но означают немного разное.

В свою очередь, по отношению к файлам возможно:

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

Остановимся чуть подробнее на возможности исполнения файла. Дело в том, что в linux любой файлик может быть исполнен. Является ли он исполнительным — определяется не по его расширению (понятие расширение отсутствует в файловой системе Unix), а по правам доступа Chmod. Если у какого-либо файлика установлено право на исполнение “X”, то это означает, что его можно запустить на выполнение.

По отношению к директориям возможно:

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

В системах Линукс все это раздает главный администратор компьютера, доступ к которому он получает путем ввода пароля. И если большинство объектов будут иметь права только для чтения, то вирусам на таком компьютере делать будет практически нечего, т.к. они не смогут себя туда ни записать, ни затем исполниться. Именно этого результата нам нужно добиться, выставляя нужные Chmod на объекты нашего сайта.

Привилегии для групп пользователей

Сами привилегии подразделяются на три категории в зависимости от того, кто обращается к объекту:

  • «user» — u (непосредственно владелец файлика)
  • «group» — g (член той же группы, к которой принадлежит владелец)
  • «world» — o (все остальные)

Сервер определяет, к какой группе пользователей вас отнести в момент подключения вас к серверу. Когда вы, например, подключаетесь к серверу по протоколу FTP, то вы входите под своим именем пользователя (и паролем), и тогда сервер относит вас к группе «user» («u)».

Прочие пользователи, которые тоже подключаются по FTP к серверу, будут отнесены к группе «group» («g»), а посетитель, который приходит к вам на вебсайт, используя свой браузер, попадает в группу «world» («o»).

Вариации трех возможных значений «r», «w» и «x» для трех категорий «u», «g» и «o» и определяют Chmod к файлам . Если не задана какая-то категория, то она заменяется знаком дефисом «-». Привилегии указываются последовательно в заданном порядке:

  1. сначала права для владельца — «u»
  2. затем для группы — «g»
  3. и в конце — для всех остальных — «o»

После того, как сервер отнесет посетителя к определенной группе, он предоставляет ему права на действия с объектами, после чего посетитель сможет прочитать, записать или выполнить файл (в зависимости от того, что разрешено делать с данным объектом его группе).

Чтобы посмотреть содержимое каталога, он должен иметь атрибут чтения «r» (для той группы, к которой сервер отнес посетителя). Чтобы создать файлик или папку в уже существующей необходимо, чтобы этот существующий каталог имел атрибут на запись «w».

Для наглядности давайте разберем пример, где владелец файла («user» — «u») имеет все права: на чтение, запись в него и исполнение, а все остальные пользователи только привилегию на чтение. Запись таких Chmod будет выглядеть так: «rwx r-- r--».

Рассмотрим ее в деталях: «rwx» (эта запись задает права на объект для владельца — «u»), «r--» (эта запись задает права на тот же объект, но в случае, если посетитель отнесен сервером к группе — «g»), «r--» (эта запись задает привилегии на объект для всех остальных пользователей — «o»).

Чем отличаются права файлов и папок

Получается, что существует три группы пользователей и три возможных действия с объектами. Еще не запутались? Разложим все сказанное выше по полочкам в виде табличек. Сначала наглядно посмотрим, чем они отличаются:

А так же табличка, показывающая разнообразные комбинации Chmod для разных типов объектов:

Ничего нельзя делать

Доступ к каталогу и его подкаталогам запрещен

Можно видеть и изменять содержимое

Можно добавить, удалить, изменить файл каталога

Выполнить, если файлик двоичный

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

Chmod, выраженные в цифрах (777, 400, 666, 755, 444)

Вы видите, что здесь для описания прав доступа применяются записи с использованием латинских букв и дефисов, но вы, наверное, уже сталкивались с тем, что обычно Chmod задают в цифровом виде , например, всем известная комбинации: 777, разрешающая все и всем.

Действительно, привилегии так же обозначают и цифрами:

  1. r (читать) заменяют на 4
  2. w (запись) заменяют на 2
  3. x (исполнение) заменяют на 1
  4. 0 означает – ничего не делать (то, что в буквенной записи обозначается дефисом)

Давайте опять вернемся к примеру записи, приведенному мною чуть ранее: rwx r-- r-- . Если заменить в ней буквы и дефисы на цифры, в соответствии с только что описанным правилом и при этом сложить цифры в каждой тройке, то получим цифровой вид этой записи: 744 .

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

  • 7 (rwx) = 4 + 2 +1 (полные права)
  • 5 (r-x)= 4 + 0 + 1 (чтение и выполнение)
  • 6 (rw-) = 4 + 2 + 0 (чтение и запись)
  • 4 (r--) =4 + 0 + 0 (только чтение)
  • и т.д.

В этой таблицы приведены все возможные комбинации привилегий записанные в цифровом виде:

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

«Владелец»

«Группа»

«Остальные»

исполнять

исполнять

исполнять

Вы сами (кроме того случая, когда получаете доступ к сайту по FTP) и все остальные посетители вашего ресурса, относитесь к группе “word” (все остальные), поэтому для работы с вебсайтом нам нужно в первую очередь смотреть на последнюю (третью) цифру данной записи.

Для того, чтобы при работе пользователя с сайтом «запускался файл» скрипта, достаточно будет, чтобы на него были установлены права, начиная от «4» (r-- – только чтение) (5,6,7 тоже подойдут, но это будет лишнее в плане безопасности).

Для каталога же, в котором лежит файлик этого скрипта, нужно выставить минимум «5» (r-x — можно зайти в каталог и прочитать его содержимое, удалять или добавлять нельзя). 7 тоже подойдет, но тоже будет уже лишним в плане безопасности.

Если нужно, чтобы скрипт не только читался, но и «записывал» какие-то данные (например, введенные посетителем), то минимальные права на «папку» по-прежнему будут «5», но для «файлика» уже понадобится «6» (читать и записывать).

Скорей всего на сервере, куда вы скопировали содержимое движка вашего сайта, будут установлены следующие Chmod к объектам:

Если бы у вас был ресурс, состоящий из одних html страниц, то можно было бы все так и оставить. Но современные сайты построены на движках, и там могут быть объекты, в которые нужно производить запись от имени посетителей из группы «world» - o (все остальные). Это могут быть каталоги, используемые для кэширования страниц или те, в которые по ходу работы с сайтом будут загружаться картинки и др.

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

для всех директорий, в которых должны записываться файлики, но не надо регулярно их стирать

для папок, в которые должны записываться и стираться файлы (например, для кеша)

для простых файлов, используемых только для чтения (.html, .php и др.)

для файлов, в которые может понадобится осуществлять запись (например, с базами данных.dat)

Как назначить Chmod посредством PHP

Как же все это можно реализовать на практике для своего сайта? В принципе, все просто. Для назначения прав доступа можно :

Но если Чмод на какие-либо файлы поменять не получается, то можно попробовать назначить их PHP средствами. Вы можете воспользоваться следующим кодом:

Вам надо будет заменить file_name_x.php и directory_name_x на реальные имена файлов и папок, Чмод к которым вы хотите изменить. Соответственно, для файликов установится 666, а для каталогов - 777. Поместите это PHP код в файлик с помощью любого текстового блокнота (рекомендую ) и дайте ему расширение.php, ну, например, как prava.php.

prava.php скопируйте по FTP в ту директорию, в которой не получается штатными средствами назначить права доступа. В адресной строке браузера пропишите путь до prava..php) и нажмите «Пуск» или энтер на клавиатуре. Все, теперь привилегии будут стопроцентно изменены средствами PHP.

Для Joomla, сразу после ее установки, можно выставить 777 на следующие директории:

Administrator/backups/ administrator/cache/ administrator/components/ administrator/modules/ administrator/templates/ cache/ components/ images/ images/banners/ images/stories/ language/ language/en-GB/ language/ru-RU/ media/ modules/ plugins/ plugins/content/ plugins/search/ plugins/system/ templates/

После того, как вы установите для Джумлы все расширения и произведете окончательные настройки, Chmod к большинству из приведенных выше директорий следует в целях повышения безопасности сайта вернуть к 755 . Оставить 777 нужно будет на каталоги с кешем, с бекапом и с картинками.

Для файлов движка, находящихся в корне сайта, кроме sitemap.xml, лучше установить 444 (для всех групп посетителей только чтение). На seting.php иногда советуют даже установить 400.

Точно такие же советы могу дать и по поводу установки прав доступа на объекты в движках SMF и WordPress. Желательно, по возможности, оставлять на постоянной основе для директорий 755 (кроме оговоренных выше каталогов кеша, картинок, бекапа и может быть еще каких-то, по мере необходимости), а для файликов — 644 .

На файлы в корне сайта лучше поставить 444.

Если при работе с сайтом возникнет проблема с невозможностью записи настроек в какой-нибудь файлик или невозможностью создать какую нибудь директорию, то можно временно поставить на них большие права (777, например), а потом все вернуть обратно (от греха подальше). И ни в коем случае не стоит оставлять (для простоты работы с сайтом) необоснованно завышенные Chmod.

Удачи вам! До скорых встреч на страницах блога сайт

Вам может быть интересно

Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юникод (UTF 8, 16, 32) - как исправить проблему с кракозябрами
OpenServer - современный локальный сервер и пример его использования для установки WordPress на компьютер
Что такое URL адреса, чем отличаются абсолютные и относительные ссылки для сайта
Поиск Яндекса по сайту и интернет-магазину
Карта сайта Sitemap в формате xml для Яндекса и Google - как создать сайтмап в Joomla и WordPress или в онлайн генераторе

Довольно раздражительным может показаться тот факт, что на пути к счастью (читай, работающему сайту) могут стать 403 и 500 ошибки, неработающие скрипты, неудаляемые папки. Вышеперечисленные проблемы часто связаны с неправильно выставленными правами на файлы и папки.

С проблемой неправильных прав вы можете столкнуться при переезде от другого хостера. Например, вы решили у хостинг-провайдера с Windows OS. А потом увидели, что есть специализированный хостинг для CMS — как раз то, что вам нужно. И вы решили перебраться на с Linux OS. Вот тут-то и начинаются проблемы. Но не отчаивайтесь, эта статья поможет вам во всем разобраться.

Рядовые пользователи Windows от таких нюансов далеки. Хотя понятие уровней доступа и существует в этой ОС, но используется редко. Поэтому, если вы хотите , можете смело пропустить эту статью.

В случае с Linux дело обстоит иначе. UNIX-подобные системы предполагают разные уровни доступа и разные права на данные. Файлы и папки рассчитаны на работу трех категорий пользователей :
  • владельца (user);
  • группы (group), в которую входят другие пользователи и может входить владелец файла;
  • остальных (others) – например, посетителей сайта, которые должны хотя бы иметь права просматривать выставленный вами контент.

Права доступа Linux пользователей могут быть следующими:

К каждому файлу и директории применимы следующие права (используются и в буквенном, и в числовом виде):

read (4 ) – чтение – право на чтение содержимого файла;

write (2 ) – редактирование – право на создание, изменение, удаление файла или директории;

execute (1 ) – исполнение – право на исполнение файла и вход в директорию (проверяется в первую очередь).

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

Права 777 предоставляют все привилегии пользователю, группе и остальным пользователям системы.

Какие права для файлов и папок использовать в cPanel?

Стандартные права доступа, актуальные и для нашего виртуального хостинга:

Файлы – 644

Папки – 755 .

Они предполагает следующие привилегии:

Почему именно 755 и 644?

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

Работа сайта в большинстве случае связана с использованием различных скриптов, которые добавляют ему интерактивности. Для запуска скриптов на наших серверах виртуального хостинга реализован suPHP, который запускает и исполняет скрипт от имени его владельца. Поэтому не нужно предоставлять права на запись всему веб-серверу Apache (777), как это бывает на некоторых хостингах с mod_PHP. Ведь если дать максимальные права на системные файлы и папки, есть риск, что открытым доступом воспользуются злоумышленники.

Работа со скриптами через suPHP, и соответственно, настройка прав 755 и 644 рекомендуется разработчиками многих cms, например, популярных WordPress и Joomla.

Иногда, при смене хостингового провайдера и переносе данных на новый сервер, на данных остаются старые права. Чтобы сменить их, нужно:

1. Зайти в cPanel от имени пользователя

2. В разделе Файлы выбрать Диспетчер файлов (в WHM недоступен, только через сPanel)

3. Перейти в каталог, в котором необходимо изменить права для файлов/папок. Например, в каталог public_html .

4. Изменить права для файла/каталога можно двумя способами.

Первый способ изменения прав из меню Диспетчер Файлов:

1) Выделить нужную папку/файл и кликнуть на права (непосредственно на цифры, например, 0755 ). Подробнее на скриншоте ниже.

2) Вписать нужные права и нажать Save .

1) Выделить нужную папку или файл и нажать на иконку Разрешения (функция доступна также при нажатии правой клавиши мыши по файлу/папке).

2) В новом окне выставить нужные права и нажать Change Permissions .

1. Нужно подключиться к хостинговой учетной записи по FTP;

2. Нажать на файл или папку правой клавишей мыши и выбрать Права доступа к файлу .

3. В новом окне выставить права. В случае директории, сменить права можно рекурсивно, выбрав опцию “Перенаправить во вложенные каталоги ”.

Как поменять права на файлы и папки по SSH?

Владельцы могут сменить права через терминал с помощью команды «chmod».

  • Например, настроить права 755 для папки media нужно следующим образом:
chmod 755 media

Обратите внимание: смена происходит в той директории, в которой вы сейчас находитесь.

  • Для смены прав для всех файлов текущей директории используется знак “звездочка”
chmod 644 *
  • Если нужно сменить права на файлы во всех подкаталогах определенной папки, то поможет рекурсивная смена, которая выполняется с помощью добавления ключа -R и звездочки:
chmod -R 644 *

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

Chmod 644 file1.txt file2.txt file3.txt

Интересуетесь, ? Хотите, чтобы хостинг и обходились? Наши предложения вам не просто понравятся! Вы сможете прилично сэкономить, выбрав любой из наших пакетов услуг.