<
  • Главная
Статьи

Правильні права на файли і папки сайту або чому 777 - це погано

  1. Чим відрізняються права в Windows і Linux
  2. Права в файлової системі Linux
  3. Альтернативний варіант запису прав
  4. Деякі приклади прав на файли
  5. Як дізнатися від якого користувача повинен працювати мій сайт?
  6. Як дізнатися повний шлях до кореня свого сайту?
  7. Як швидко виставити права для всього сайту?
  8. Права для Joomla

Почитав я на дозвіллі, що пишуть в інтернеті про права на файлову систему сайту і просто жахнувся! Люди ставлять 777 на все підряд - а потім дивуються що їх зламали.

Найгірше що, не побоюся цього слова, «веб-майстри» та інші «недопрограммсти» радять розставляти сімки направо і наліво не замислюючись про наслідки. Сумно ... дуже ...

Цей невеликий пост розтлумачує які ж права повинні бути у всього сайту і чому.

Чим відрізняються права в Windows і Linux

Не буду сильно міркувати з цього приводу. Скажу тільки основні відмінності.

  • У Windows користувач зазвичай працює від імені адміністратора, таким чином отримує практично необмежені права для роботи з файлами. Так win-користувач зазвичай навіть і не замислюється про такі речі як права файлів і папок.
  • У Linux більш суворий поділ прав. Кожна директорія або файл мають свої індивідуальні права, які вказують хто і що може робити з ними.
  • У Linux'е сайт ніколи не працює від імені адміністратора - це дуже небезпечно (м'яко кажучи), тому права грають дуже важливу роль.

Якщо у вас хороший шаред-хостинг (а це дуууже велика рідкість), то вам можна не турбуватися про права файлової системи.
Але все ж знати, то про що піде мова нижче - обов'язково.

Права в файлової системі Linux

У Linux системах права задаються у вигляді 3-х прапорів - (Користувач, Група користувача, Останнє).
Кожен прапор - це сума бітів: 1 - Виконання, 2 - Редагування, 4 - Чтеніе.Разлічние комбінації цих бітів дають різні варіанти доступу до файлу або папці. Приклади можна побачити на зображенні нижче.

Вірно, коли для папок сайту виставляються права - 755, а для файлів - 644. Більш того - зазвичай це значення за замовчуванням в системі. Детальніше можна дізнатися в вікіпедії .

Альтернативний варіант запису прав

Є більш гуманна форма запису - за допомогою латинських букв. Порядок всіх прапорцем залишається той же. Кожен біт змінюється на відповідну букву. Найперша літера «d» - це мітка, директорія це чи ні.

  • Read (4) - r
  • Write (2) - w
  • Execute (1) - x
  • відсутність прав - прочерк -

Таким чином отримуємо, що права для файлу «764» = «-rwxrw-r--». Невеликий наочний приклад на зображенні

Деякі приклади прав на файли

  • 444 (-rrr-) - Тільки читання для будь-яких користувачів.
  • 640 (-rw-r -----) - Змінювати і читати файл може тільки власник, його група може тільки читати.
  • 777 (-rwxrwxrwx) - Повні права на все і для всіх (ваш сайт під загрозою!).

Чому права 777 - це погано?

Права 777 - це улюблені права win-користувачів, тому що дають можливість не замислюватися про права і робити що душі завгодно. Але ці права дають БУДЬ-ЯКОМУ користувачу системи право змінювати і виконувати ваші файли.

Найпростіші приклади зломів через 777

  • Якщо ви користуєтеся шаред-хостингом і виставили себе такі права, то грубо кажучи інший клієнт цього хостингу, який розташовується на тій же фізичній машині що і ви, зможе вас зламати. А на одній машині може бути тисячі клієнтів.
  • Якщо у вас кілька сайтів на одній фізичній машині, але у всіх стоять права 777, то зловмисник зламавши один легко отримає доступ до всіх інших.
  • ... і багато інших не приємних прикладів зі зломами.

Якщо ви до цих пір не вірите мені, то це тільки справа часу.

Як дізнатися від якого користувача повинен працювати мій сайт?

По мимо 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 8:23 index.php -rw-r - r-- 1 smetdenis smetdenis 1757 Feb 4 8: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

Що є що розписано на наступній картинці

Зверніть увагу, що

  • drwxr-xr-x - правильні права для всіх папок (теж, що і 755)
  • -rw-rr- - правильні права для всіх файлів (теж, що і 644)
  • -rrr- - файл настройок 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". Але з цим проблем не буде, якщо все права виставлені вірно.

Як дізнатися повний шлях до кореня свого сайту?
Як швидко виставити права для всього сайту?
Чому права 777 - це погано?
Як дізнатися від якого користувача повинен працювати мій сайт?
Як дізнатися повний шлях до кореня свого сайту?


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью