Как сделать файл .htaccess доступным для записи через wp-admin?

8 июн. 2014 г., 20:04:48
Просмотры: 23.4K
Голосов: 2

Мой хостинг-провайдер изменил хостинг для моего блога WordPress, и все перестало работать. Была проблема с DNS, которую они решили, но затем все страницы, кроме главной, стали возвращать ошибку 404.

Когда я проверил страницу постоянных ссылок (/wp-admin/options-permalinks.php) в wp-admin, я увидел следующее:

Если бы ваш файл .htaccess был доступен для записи, мы могли бы сделать это автоматически, но он не доступен, поэтому вот правила mod_rewrite, которые должны быть в вашем файле .htaccess. Щелкните в поле и нажмите CTRL + a, чтобы выделить все.

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

Я хотел бы, чтобы файл .htaccess был доступен для записи через wp-admin.

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

Однако, я заметил, что права доступа к файлу следующие:

rw-r--r--

Какие права доступа мне нужно установить, чтобы файл был доступен для записи через wp-admin, но не для всех остальных? Или нужно настроить какие-то другие разрешения на сервере?

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

0
Все ответы на вопрос 2
2

В компьютерных файловых системах разные файлы и каталоги имеют права доступа, которые определяют, кто и что может читать, записывать, изменять и получать к ним доступ. Это важно, потому что WordPress может нуждаться в доступе для записи в файлы вашего каталога wp-content, чтобы обеспечить определенные функции.

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

http://codex.wordpress.org/htaccess

Разрешение на запись в файл .htaccess для всех пользователей также имеет свои последствия, в основном связанные с проблемами безопасности. Худшее, что может произойти в результате использования прав 777 для папки или даже файла, — это если злоумышленник или вредоносная сущность сможет загрузить вредоносный файл или изменить текущий файл для выполнения кода, получив полный контроль над вашим блогом, включая доступ к информации вашей базы данных и паролю.

http://codex.wordpress.org/Changing_File_Permissions

Стандартные права доступа (umask 022)

644 -rw-r--r--  /home/user/wp-config.php
644 -rw-r--r--  /home/user/cgi-bin/.htaccess

Защищенные права доступа

600 -rw-------  /home/user/wp-config.php
604 -rw----r--  /home/user/cgi-bin/.htaccess

Права доступа для .htaccess

644 > 604 — Бит, разрешающий группе-владельцу файла .htaccess чтение, был удален. Обычно для файлов .htaccess требуется и рекомендуется значение 644.

8 июн. 2014 г. 20:28:28
Комментарии

Если злоумышленник может загрузить PHP-файл или прочитать данные для входа в базу данных из wp-config.php, вы фактически в беде. Наличие файла .htaccess только для чтения в этой ситуации мало чем поможет.

Simon East Simon East
16 июн. 2017 г. 08:08:02

@SimonEast верно, спасибо, но я не уверен, где в своем ответе я упомянул о необходимости оставлять wp-config.php доступным для записи. Кроме того, WordPress действительно требует права на запись в определенных папках, таких как папка загрузок. Я рекомендую пользователям ознакомиться со страницей о правах доступа к файлам WordPress, которую я также упомянул в своем ответе. :)

Abhineet Verma Abhineet Verma
20 июн. 2017 г. 16:31:39
0

Короткий ответ: вы не можете.

Длинный ответ: технически существуют способы достичь этого, но они ① скорее всего недоступны вам как пользователю на shared-хостинге без root-доступа и ② даже если бы были, они сопровождаются сложностями, с которыми вам действительно не стоит иметь дело.

Прежде всего, если вы не системный администратор с root-правами, вам вряд ли удастся установить необходимые разрешения.

  • Биты разрешений UNIX контролируют, можете ли вы, люди из вашей группы и все остальные читать, записывать и исполнять файлы. Учитывая этот набор опций и тот факт, что вы и веб-сервер, скорее всего, не в одной группе, нет способа использовать эти разрешения для установки значения, при котором и вы, и пользователь веб-сервера могли бы записывать файл, а другие — нет. По определению вам пришлось бы изменить «глобальные» разрешения, и... вы понимаете, к чему это приведёт.

    Если вдруг ваш пользователь и веб-сервер действительно работают в одной группе, вам стоит серьёзно задуматься о безопасности вашего хостинг-провайдера.

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

  • Даже если вам предоставят один или несколько способов позволить веб-серверу редактировать файл .htaccess, вам гораздо лучше не пользоваться ими. На shared-хостинге вы должны понимать, что кроме вас код от имени пользователя веб-сервера выполняют и другие люди. Если ваша установка WordPress может изменять ваш .htaccess, что мешает WordPress другого пользователя злонамеренно изменить ваш? Теоретически настройки open_base_dir в PHP ограничат его чтением и записью внутри DOCUMENT_ROOT, но хотя PHP-модуль довольно хорошо соблюдает это правило, среди ISP и небольших хостеров распространены CGI-системы без должных ограничений или откровенно ошибочные настройки сервера, позволяющие другим пользователям на том же сервере вмешиваться во всё, что вы передали веб-серверу.

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

В итоге, с точки зрения безопасности, лучше, если wp-admin не сможет записывать в .htaccess. В любом случае, это должно быть редкой проблемой, обычно возникающей при обновлении версий WordPress или серверного ПО (например, переход с Apache 2.2 на 2.4 потребовал обновления множества .htaccess по всему интернету, но это происходило годами). Это не то, что должно меняться при каждом обновлении сайта, только если вы вносите архитектурные изменения и вам нужно перенаправлять старые URL на новые и т. п.

14 июн. 2014 г. 22:10:04