5W site logo 5W - мой домашний сайт-блог с картинками, кино и плюшками.

prava-na-fily-sajta.txt

Как узнать от какого пользователя должен работать мой сайт?

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

Проверить это просто. Создайте в корне вашего файл с именем perm.php (или любое другое имя для php-файла). Внутри файла укажите следующий код

<?php
echo '<pre>';
echo system('ls -la')."\n";
echo exec('id');
echo '</pre>';

Внимание! Этот код только для linux-like систем!

Зайдите на этот файл (http://site.com/perm.php) Вы увидите примерно следующую картину

total 100
-rw-r--r-- 1 smetdenis smetdenis 3191 Nov 20 00:22 .htaccess
drwxr-xr-x 11 smetdenis smetdenis 4096 Feb 14 16:47 administrator
drwxr-xr-x 12 smetdenis smetdenis 4096 Mar 5 19:25 cache
drwxr-xr-x 2 smetdenis smetdenis 4096 Feb 14 16:13 cli
drwxr-xr-x 20 smetdenis smetdenis 4096 Feb 14 16:27 components
-r--r--r-- 1 smetdenis smetdenis 2199 Feb 13 12:23 configuration.php
-rw-r--r-- 1 smetdenis smetdenis 1150 Jul 12 2011 favicon.ico
drwxr-xr-x 11 smetdenis smetdenis 4096 Feb 25 18:38 images
drwxr-xr-x 2 smetdenis smetdenis 4096 Feb 14 16:13 includes
-rw-r--r-- 1 smetdenis smetdenis 1319 Feb 4 08:23 index.php
-rw-r--r-- 1 smetdenis smetdenis 1757 Feb 4 08:24 joomla.xml
drwxr-xr-x 5 smetdenis smetdenis 4096 Feb 1 16:41 language
drwxr-xr-x 9 smetdenis smetdenis 4096 Feb 14 16:13 libraries
drwxr-xr-x 2 smetdenis smetdenis 4096 Feb 14 16:13 logs
drwxr-xr-x 20 smetdenis smetdenis 4096 Feb 14 16:27 media
drwxr-xr-x 33 smetdenis smetdenis 4096 Feb 14 16:27 modules
-rw-r--r-- 1 smetdenis smetdenis 109 Mar 5 19:26 perm.php
drwxr-xr-x 15 smetdenis smetdenis 4096 Feb 14 16:13 plugins
-rw-r--r-- 1 smetdenis smetdenis 14 Feb 14 16:57 robots.txt
drwxr-xr-x 7 smetdenis smetdenis 4096 Feb 14 16:13 templates
drwxr-xr-x 2 smetdenis smetdenis 4096 Feb 21 12:49 tmp
-rw-r--r-- 1 smetdenis smetdenis 1715 Nov 8 00:23 web.config.txt

Что есть что расписано на следующей картинке

ls

Обратите внимание, что

drwxr-xr-x — правильные права для всех папок (тоже, что и 755)
-rw-r-r- — правильные права для всех файлов (тоже, что и 644)
-r-r-r- — файл настроек Joomla имеет права только на чтение (444). Выставляет сама Joomla для безопасности вашего сайта и это нормально.

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

uid=1000(smetdenis) gid=1000(smetdenis) groups=1000(smetdenis),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),109(lpadmin),127(sambashare)

Где,

uid — имя пользователя
gid — группа пользователя
groups — группы, к которым еще принадлежит пользователь.

Для нормальной работы вашего сайта важно чтобы имя и пользователь для файлов и папок совпадали с apache (в нашем случае это «smetdenis»). Это даст вам правильную работу и основу безопасности.
Как узнать полный путь до корня своего сайта?

Создайте в корне файл php со следующим кодом и выполните его

<?php echo realpath(dirname(__FILE__));

В некоторых версиях php приведенный код может не сработать, попробуйте следующий вариант, либо обратитесь к вашему хостеру

<?php echo $_SERVER['DOCUMENT_ROOT'] . '/<ПАПКА САЙТА>';


Как быстро выставить права для всего сайта?

Нужно в консоли выполнить следующие команды (через SSH — узнавайте у вашего хостера)

Для изменений прав всем файлам

find <ПОЛНЫЙ ПУТЬ ДО ВАШЕГО САЙТА> -type f -exec chmod 644 {} \;

Для изменений прав всем папкам

find <ПОЛНЫЙ ПУТЬ ДО ВАШЕГО САЙТА> -type d -exec chmod 755 {} \;

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

chown -R smetdenis:smetdenis <ПОЛНЫЙ ПУТЬ ДО ВАШЕГО САЙТА>

Права для Joomla

Абсолютно все что было сказано выше относится и к любому Joomla-сайту, любой версии. Если по каким то причинам не получается дать права всему сайту (а это уже намек на смену хостера), то обязательно проверьте что следующее доступно для записи

<site root>/tmp
<site root>/logs
<site root>/cache
<site root>/images
<site root>/configuration.php

Это минимум для нормальной работы Joomla-сайта. Некоторые компоненты для Joomla могут писать в свои папки, например компонент Zoo (и JBZoo) изменяют файлы "*.config". Но с этим проблем не будет, если все права выставлены верно.