Здравствуйте, уважаемые читатели блога Goldbusinessnet.com. Регулирование доступа к файлам и папкам, расположенным на веб-серверах под управлением UNIX-подобных операционных систем (а они установлены на подавляющем большинстве хостингов), происходит посредством указания прав chmod для пользователей, что позволяет по максимуму обезопасить сайт. Кстати, серверы Спринтхоста, где хостится несколько моих проектов, в этом смысле не исключение.
Алгоритм, установленный в операционках Unix, отличается от привычного для многих регламента работы с файлами и каталогами в OS Windows, где защита в этом аспекте не так сильна, что весьма нередко приводит к плачевным последствиям в виде заражения системы вирусами.
При управлении же ОС на базе Unix существует реальная возможность снизить до минимума риск несанкционированного доступа просто правильно настроив chmod (данное название программы для изменения прав доступа происходит от английского словосочетания «change mode»).
Тогда основной задачей будет указание минимально возможных для доступа к файлам и папкам прав, которые тем не менее не нарушат корректную работу сайта.
Согласитесь, грех не воспользоваться возможностью серьезно усилить степень защиты вашего веб-ресурса. Конечно, в этом случае редактирование некоторых файлов будет занимать немного больше времени, но тут уж приходится выбирать: либо оптимизация безопасности системы, либо… Ниже я постараюсь систематизировать информацию по chmod, потому что здесь есть несколько нюансов, которые необходимо знать вебмастеру. Итак, начнем.
Chmod для пользователей и права доступа
Для каждой группы пользователей определены свои права доступа. При попытке соединения веб-сервер определяет, к какой группе отнести того или иного юзера. Все они разделяются на:
- «user» (u) — владелец файла;
- «group» (g) — один из членов группы, к которой принадлежит и владелец;
- «others» (o) — все остальные пользователи.
Если вы подключаетесь к серверу по протоколу FTP и заходите под своим логином и паролем, то будете идентифицированы как «user», если кто-либо другой подключается по ФТП, то он будет отнесен к «group», ежели пользователь использует браузер, то попадет в категорию «others».
Теперь о правах доступа chmod к файлам и директориям. По сути они немного отличаются, хотя обозначения применяются одни и те же. Права доступа к файлам позволяют производить следующие операции с объектами:
- r (read) — чтение (возможность просмотра содержания);
- w (write) — запись, перезапись (изменение содержимого), но не удаление;
- x (eXutive) — исполнение (например, запуск программного файла).
Права доступа к папкам (директориям, или каталогам) дают совершать такие действия:
- r — чтение (можно получить список имен объектов, входящих в каталог, но не их атрибутов, то есть, невозможен просмотр размеров файлов, прав доступа, имени владельца и т.д.);
- w — изменение содержимого (создание, переименование и удаление объектов в директории, причем, удалять можно даже те файлы, право на запись для которых не установлено);
- x — доступ в каталог (особенность здесь такая, что если даже вы имеете все необходимые права на файл, который расположен «в глубине директорий», но не имеете права доступа хотя бы к одной поддиректории на пути к этому объекту, то не сможете добраться до него), включая возможность просмотра атрибутов (свойств) файлов.
Все эти права указываются администратором, который получает эту возможность посредством ввода пароля. Если установить максимально возможные ограничения на доступ к тем или иным файлам сайта, то можно максимально обеспечить его защищенность.
Если обратить внимание на выше представленные права в отношении каталогов (папок), то атрибут «w» имеет практический смысл только в сочетании с «x».
Таким образом, мы имеем пользователей «u», «g», «o» и соответственно права «r», «w», «x», причем, порядок их отображения слева направо следующий:
- первым идет комплекс прав для владельца (u);
- далее для группы (g);
- и в конце — для всех остальных (o).
Для наглядности рассмотрим пример, когда владелец файла («u») имеет все возможные права: на чтение, запись и исполнение (r, w и x). Пользователи, отнесенные к категориям «g» (group) и «o» (others) — только на чтение(r). Тогда полная запись chmod по порядку отображения прав выглядит таким образом (значком дефиса «-» отмечают отсутствие какой-либо категории прав):
rwxr--r--
Итак, в соответствии с выше представленной информацией существует три группы пользователей и три категории действий с объектами. Чтобы не запутаться, попробуем систематизировать эти данные в форме таблиц. Для начала отметим отличия между правами для файлов и каталогов:
Тип прав | Для файла | Для папки |
---|---|---|
r | Чтение (просмотр содержания) | Изучение имен файлов, входящих в директорию |
w | Запись (перезапись) | Добавление, переименование и удаление файлов в каталоге |
x | Выполнение файлика | Доступ к файлам каталога и чтение их атрибутов |
Далее рассмотрим разные сочетания прав (на файлы и папки):
Тип прав для пользователей (rwx) | Для файла | Для папки |
---|---|---|
— | Все запрещено | Все запрещено |
—x | Выполнение | Чтение атрибутов файлов |
-w- | Запись (перезапись) | Все запрещено |
-wx | Запись и выполнение | Разрешено все, кроме получения имен файлов, находящихся в папке |
r— | Чтение содержимого | Чтение имен файлов |
r-x | Чтение и выполнение | Чтение имен файлов и их атрибутов |
rw- | Чтение и запись | Чтение имен файлов |
rwx | Все возможные права | Все возможные права |
Информация о правах доступа из выше приведенной таблички позволяет сделать очевидные и во многом полезные для практического применения выводы.
Для каталогов чрезвычайно редко применяются следующие совокупности прав:
- «—x» (чтение атрибутов входящих в папку файлов без получения их названий);
- «-w-» (по сути это полный запрет, поскольку нет возможности осуществлять действия над объектами без получения полноценного доступа к ним);
- «-wx» (все действия возможны исключая доступ к наименованиям файлов);
- «rw-» (получение списка имен файлов, по сути он дублирует «r—»).
Для полного просмотра любой директории необходимы права на ее просмотр и доступ к файлам и их свойствам (атрибутам), иначе говоря, минимально разумные привилегии на каталог в этом случае должны быть «r-x».
На основании выше сказанного можно отметить, что на практике для каталога чаще всего используются сочетания «rwx», «r-x» и «—»
Например, возьмем вариант «-wx» и вкратце проанализируем его. В принципе, он разрешает абсолютно все действия (конечно, при условии, что и на файлики прописаны нужные права), но закрывает доступ к именам объектов в директории, что согласитесь, веет бессмыслицей, так как во многих случаях операции с объектами основываются на знании их наименований. В этом случае, наверное, лучше использовать режим «—», который запрещает всё.
Права доступа в цифрах: chmod (777, 755, 655, 444, 400)
Выше мы разобрали вариант записи чмод символами. Однако, во многих смыслах гораздо удобнее назначать те или иные права доступа в цифровом выражении:
- r (чтение) — 4
- w (запись) — 2
- x (исполнение) — 1
- — (нет прав) — 0
Теперь вновь разберем вышеприведенный пример для назначения прав доступа «rwxr—r—». Для отображения прав каждого пользователя применяется сложение его прав: r (чтение) + w (запись) + x (исполнение). Таким образом, часть записи для владельца файла u (user) «rwx» превратится в 7 (4+2+1). Для членов групп g (group) и o (others) запись «r—» преобразуется в 4 (4+0+0). Тогда вся совокупность прав в цифровом выражении будет выглядеть как «744».
В качестве резюме представлю сводную таблицу с правами доступа chmod в буквах и цифрах:
chmod | Файлы | Папки (директории) | |
---|---|---|---|
Выражен. в цифрах | Выражен. в символах | ||
0 | — | Запрещены все действия | Запрещены все действия |
1 | —x | Выполнение | Чтение атрибутов файлов* |
2 | -w- | Запись | Запрещены все действия |
3 (2 + 1) | -wx | Запись и выполнение | Разрешено все, кроме доступа к именам файлов** |
4 | r— | Чтение содержимого | Чтение имен файлов |
5 (4 + 1) | r-x | Чтение и выполнение | Чтение имен файлов и их атрибутов*** |
6 (4 + 2) | rw- | Чтение и запись | Чтение имен файлов |
7 (4 + 2 +1) | rwx | Все разрешено | Все разрешено |
* — нет возможности получения имен файлов, а также их создания/переименования/удаления.
** — можно создавать/переименовывать/удалять файлы, но отсутствует доступ к их названиям.
*** — нельзя создавать/переименовывать/удалять файлы в директории.
Теперь представлю еще одну таблицу, которая отражает суммарные права chmod для абсолютно всех групп пользователей (user, group, others) в формате цифр:
chmod | Владелец u (user) | Член группы g (group) | Другие пользователи 0 (others) |
---|---|---|---|
777 | Чтение, запись, исполнение | Чтение, запись, исполнение | Чтение, запись, исполнение |
776 | Чтение, запись, исполнение | Чтение, запись, исполнение | Чтение, запись |
775 | Чтение, запись, исполнение | Чтение, запись, исполнение | Чтение, исполнение |
774 | Чтение, запись, исполнение | Чтение, запись, исполнение | Чтение |
766 | Чтение, запись, исполнение | Чтение, запись | Чтение, запись |
755 | Чтение, запись, исполнение | Чтение, исполнение | Чтение, исполнение |
655 | Чтение, запись | Чтение, исполнение | Чтение, исполнение |
644 | Чтение, запись | Чтение | Чтение |
444 | Чтение | Чтение | Чтение |
Это основные комбинации, которые наиболее часто используются в работе вебмастера. Другие формируются по аналогии. Если вы являетесь администратором сайта, но работаете с проектом, не подсоединившись по FTP протоколу, вы также относитесь к группе «Остальные пользователи». В таком случае при работе с сайтом нужно учитывать последнюю цифру в значении chmod.
Для примера возьмем файл с каким-нибудь скриптом. Чтобы он запускался при определенных действиях пользователя на сайте, вполне достаточно, чтобы на этот файлик были установлены права «4» («r—»). Можно и выше (5, 6, 7), но это не имеет смысла, так как при том же эффекте понизится уровень безопасности ресурса. На папку, в которой находится файлик со скриптом, уже требуются права «5» (доступ к директории и чтение содержимого), но опять же, не больше.
Ежели необходимо, чтобы скрипт не только предоставлял какую-то информацию, но и записывал данные (скажем, те, которые вводят посетители), то права в отношении каталога как минимум (он же и максимум, опять же, исходя из безопасности) потребуются «5», однако, для файла уже надо при этих обстоятельствах проставить «6» (что обеспечит чтение и запись).
Ежели у вас простенький сайт с использованием HTML-страниц, то на сервере, где расположены его файлики, достаточно на каталоги иметь права 755, а на файлы, входящие в их состав, 644:
Файлы | 644 | Владелец (user) имеет право читать и записывать файлы (исполнять запрещено), члены группы (group) и остальные (others) могут лишь их читать (rw-r—r—) |
Папки | 755 | Владелец (user) вправе выполнять все действия, а группа и другие пользователи имеют доступ к директории, могут просматривать названия и атрибуты файликов, однако, не имеют прав их записывать, изменять названия и удалять (rwxr-xr-x) |
Однако фокус в том, что в современных условиях для построения вебсайтов в массовом масштабе используются CMS (системы управления контентом), к которым относится и WordPress. А здесь могут находиться объекты, в которые необходимо производить записи от группы пользователей «others», а также, к примеру, папки с кэшем (в том числе создаваемые плагином кеширования), в которые загружается контент, включая изображения.
Поэтому назначения прав Чмод на те или иные файлы необходимо дифференцировать. Если вы входите в управление вебсайтом по FTP, то можете производить любые действия, однако во многих случаях работаем со своим проектом происходит через браузер (веб-обозреватель).
А в этом случае могут возникнуть проблемы, если права слишком завышены, и, наоборот, если права доступа к тому или иному файлу (папке) занижены, то возрастает угроза безопасности. Посему на основании вышесказанного можно определить некоторые рекомендации по практическому применению chmod для современного сайта под управлением ЦМС:
777 | Для каталогов, где постоянно происходит запись и стирание файлов (например, для папки кэширования) |
755 | Применительно к папкам, в которые постоянно записываются файлы, но не удаляются |
666 | Для файлов, куда необходимо время от времени добавлять запись (пример — файл .htaccess) |
644 | Для файлов, используемых только для чтения (.php, .html и др.) |
Также рекомендую на папки, находящиеся в корне сайта, поставить код доступа Чмод 444.
Указание прав доступа для сайта с помощью ФТП клиента
Теперь подробнее о том, как проделать операцию установки нужного значения chmod с помощью специальной программы, позволяющей соединиться с сервером хостинга, на котором находятся файлы, распределенные по каталогам (папкам).
Со своей стороны порекомендую ФТП менеджер (клиент) Файлзилла, который уже давно доказал свою надежность и безотказность в работе на протяжении длительного времени.
Открываете программу и подсоединяетесь через FTP к веб-серверу. В правой части («Удаленный сайт») сначала отмечаете файлы или папки, атрибуты которых будут отредактированы:
И из контекстного меню, вызванного нажатием правой кнопки мыши, выбираем «Права доступа к файлу». После этого появится диалоговое окно «Изменить атрибуты файла» (на скриншоте ниже предоставлены примеры отдельно для файла и каталога):
Присваиваем необходимые значения Чмод для выбранного (или выбранных) файлов либо папок. Обращаю внимание на то, что при редактировании прав доступа на папку присутствует опция «Перенаправить во вложенные каталоги». Это значит, что заданные права доступа применяются ко вложенным в эту директорию каталогам (папкам) либо файлам.
При отмеченной галочке ниже расположенная группа настроек станет активной и потребуется еще выбрать, как их нужно применять: ко всем файлам и каталогам, только к файлам либо исключительно к каталогам. Теперь, думаю, процесс установки chmod на практике понятен.
«… -wx закрывает доступ к именам объектов в директории, что согласитесь, веет бессмыслицей…»
-Очень тут даже большая «смыслица»! Делается это для того, чтобы в браузере не могли видеть содержимое папки. Но, те кто знают имена файлов в папке, например, a3d63hbfdb7ksnc6d78.JPG могут адресоваться по прямой ссылке в браузере.
w (wright) — запись, перезапись (изменение содержимого), но не удаление;
вообще-то слово пишется так — write
Да, Константин, Вы правы, спасибо огромное, ошибка исправлена.
Notice: Error: Could not load template E:\OSPanel\domains\asianfish.ru/catalog/view/theme/default/template/module/category_accordion.tpl! in E:\OSPanel\domains\asianfish.ru\system\storage\modification\system\engine\loader.php on line 86
в чём может быть проблема и её возможное решение?
koshele4ek, если я правильно понял, Вы пытались установить модуль Opencart? В примечании сказано, что не удалось загрузить шаблон. Попробуйте повторить заливку файлов.
Спасибо тебе добрый человек!!! А то устал уже в ручную права менять на каждый файл/каталог!
Да пожалуйста, Евгений. Рад, что оказал услугу хорошему человеку. 🙂