Я уже поднимал тему безопасности безопасности как сайта на нашем сервере, так и соседних сайтов на этом сервере.
Сейчас я бы хотел поговорить о безопасности самого сервера. Мера незначительная и мне придётся очень долго рассказывать о том, от чего она защищает. Просто имейте в виду, что если вам не в лом — примените данные меры к файлам и каталогам вашего сайта.
У нас есть 2 возможных ситуации:
1) скрипты php выполняются от пользователя сервера (cgi, некоторые конфигурации fast-cgi)
2) скрипты php выполняются от специального пользователя www-data (mod_php по умолчанию в Debian. Во FreeBSD — это www, например).
Сайт в обоих случаях размещается у нас в каталоге /var/www/example.ru. Пользователь — web.
Общая концепция данной меры. Нехрена выдавать права на выполнение файлам, которые выполнять никому ненадо. PHP компиляторы сами разберутся, даже если у файла нет бита на выполнение.
Ситуация номер раз. Скрипты .php (если у вас всякие .phtml, .php5 и прочее — сами догадаетесь, что делать) работают от пользователя, статические файлы отдаются веб-сервером от имени пользователя www-data. Начнёмс.
Выдадим «правильные» права каталогам:
web@server:~$ find /var/www/example.ru -type d -exec chown web:www-data {} \; -print
web@server:~$ find /var/www/example.ru -type f -exec chmod -R 750 {} \; -print
Файлам:
web@server:~$ find /var/www/example.ru -type f -exec chown web:www-data {} \; -print
web@server:~$ find /var/www/example.ru -type f -exec chmod -R 640 {} \; -print
И файлам .php (учтите, что веб сервер к ним не будет иметь к ним доступа, если вы так сделаете. Не делайте так, если юзеру www-data нужен доступ к этим файлам).
web@server:~$ find /var/www/example.ru -type f \( -name "*.php" -o -name "*.php5" \) -exec chmod -R 600 {} \; -print
Ну и выдадим права для каталога upload нашего сайта (ну представим, что наша CMS именно туда записывает всякие файлы):
web@server:~$ find /var/www/example.ru/upload -type f -exec chmod -R 770 {} \; -print
web@server:~$ find /var/www/example.ru/upload -type f -exec chmod -R 660 {} \; -print
Во втором случае (с mod_php) нам не нужно «отбирать» права на доступ к файлам php у пользователя www-data.
Ну и напоследок — существует прекрасный конструктор для команды find. Рекомендую.
Вопрос такой — есть ли разница когда прописываешь для сайта папку между site.ru и site_ru ? Влияет ли точка на что-то или лучше использовать знак подчеркивания?
Кстати было бы хорошо, чтобы стояла галка о уведомлениях о комментариях на почту.
В новой версии сайта сделаю галочку.
По вашему вопросу — не влияет.
Конструктор команды find стырили отсюда: http://find.unixpin.com/
Ну зато перевели)
http://find.unixpin.com/ru/index.html
>Выдадим «правильные» права каталогам:
>web@server:~$ find /var/www/example.ru -type d -exec chown web:www-data {} \; -print
>web@server:~$ find /var/www/example.ru -type f -exec chmod -R 750 {} \; -print
Опечатка?
web@server:~$ find /var/www/example.ru -type d -exec chmod -R 750 {} \; -print