При изменении файлов через FTP не удается сохранить изменения
|
---|
В этом случае необходимо пользователю веб-сервера разрешить запись в свои файлы для пользователя FTP. Это можно сделать через следующий скрипт: <? function chmod_R($path, $perm) { if (is_dir($path)) { chmod($path."/".$file, $perm); $handle = opendir($path); if (!$handle) { echo "Error: ".$path; return; } while (false !== ($file = readdir($handle))) { if ($file == "." || $file == ".." || $file == '.htaccess') continue; chmod_R($path."/".$file, $perm); } closedir($handle); return true; } elseif(is_file($path)) { $file_perm = $perm ^ 0111; return chmod($path, $file_perm); } return; } $path = $_GET["path"]; if (!trim($path)) { ?> <form method=get> Путь от корня сайта: <input name=path value='<?=dirname($_SERVER['SCRIPT_NAME'])?>'><br> Права: <input name=perm value='0777'><br> <input type=submit value='OK'> </form> <? } else { $path = realpath($_SERVER["DOCUMENT_ROOT"] . "/" . $path); if (intval($_GET['perm'])) $perm = octdec(intval($_GET['perm'])); else $perm = 0777; if (chmod_R($path, $perm)) echo "OK: ".$path; } ?> После запуска скрипт спросит путь к папке, в которой надо изменить права относительно корня сайта и сами права на папки. На файлы он автоматически сбросит атрибут "x" - исполнение. Если это не требуется, замените строку $file_perm = $perm ^ 0111; на $file_perm = $perm; |
Права на файлы
Права на файлы
Дать универсальный ответ, какими должны быть права на файлы, нельзя, так как каждый хостинг настроен по-своему.
Результат должен быть таким: для пользователя, под которым запущен
Apache
Apache HTTP-сервер — свободный веб-сервер. Apache является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, macOS, Microsoft Windows, Novell NetWare, BeOS.
Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д.
Подробнее...
, нужны права на чтение/запись на все файлы и папки, начиная от корня сайта. При этом на разделяемом хостинге другие пользователи на этой же машине не должны иметь права читать/изменять ваши файлы. Также желательно, чтобы файлы, закачанные по
FTP
FTP (англ. File Transfer Protocol) — протокол передачи файлов по сети. Протокол построен на архитектуре «клиент-сервер» и использует разные сетевые соединения для передачи команд и данных между клиентом и сервером. Пользователи FTP могут пройти аутентификацию, передавая логин и пароль открытым текстом, или же, если это разрешено на сервере, они могут подключиться анонимно. Можно использовать протокол SSH для безопасной передачи, шифрующей (скрывающей) логин и пароль, а также содержимое файла.
Подробнее...
, могли быть перезаписаны из скрипта.
Проблема в том, что у каждого хостинг-провайдера своя политика безопасности и свои настройки: одни ограничивают доступ к чужим файлам даже при праве доступа 777 Чтение/Запись/Исполнение для всех , другие запускают процесс Apache под своим пользователем для каждого виртуального хоста, и т.д.
Поэтому вопрос необходимо решать с хостинг-провайдером.
Проблемы с неправильными
правами и их решение
Unix/Linux - многопользовательская система, это значит, что в системе одновременно могут работать несколько пользователей в своих папках со своими файлами. Соответственно, разные пользователи имеют разные права на доступ к файлам и папкам.
Для загрузки файлов по FTP и работы с ними через веб-интерфейс используются разные программы (ftp клиент и веб-сервер), и для операционной системы это разные пользователи.
Для решения проблемы взаимной записи необходимо установить специальные права на файлы и папки (требуемые права зависят от того, под какими пользователями работают ftp клиент и веб-сервер, к каким группам принадлежат).
Наиболее часто встречаемые проблемы, связанные с правами на файлы и папки:
- Файлы загружаются через ftp, но при попытке их изменения в продуктах Bitrix Framework появляется ошибка записи
В этом случае необходимо пользователю ftp разрешить запись для пользователя веб-сервера, иными словами, выставить права.
Сделать это можно по протоколу ssh SSH (англ. Secure Shell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов).
Подробнее... , например, используя бесплатную программу PuTTY.Рассмотрим последовательность действий для изменения прав доступа:
- подключитесь к своему сайту (о том, как это сделать, смотрите руководство к программе, с помощью которой вы подключаетесь)
- перейдите в нужную директорию, используя команду cd:
cd /path/to/dir
Примечание: Путь/path/to/dir
необходимо уточнить у хостера. - затем выполните команду chmod:
chmod -R xxxx .
где:
-R
- указывает, что необходимо изменить права на все папки и подпапки,
xxxx
- указывает требуемые атрибуты доступа (например, 0771),
.
- указание на текущую директорию.Подробнее про команду chmod можно посмотреть в Википедии и документации по PHP.
Обратите внимание:
- чтобы избежать проблем с правами при установке продукта - лучше всего воспользоваться скриптом BitrixSetup. Он скачает и распакует дистрибутив с нашего сайта, при этом файлы будут принадлежать веб-серверу и проблем при работе не возникнет;
- ftp и ssh сервисы в большинстве случаев позволяют авторизоваться под одним и тем же пользователем, значит можно закачать файл через ftp, а изменить права через ssh;
- пользователь может изменить права только на свои файлы. Это значит, что если вы не можете изменить файл непосредственно в системе, то не стоит пытаться применять веб скрипт. Права необходимо изменять через ftp/ssh. И наоборот;
- панель управления на хостинге чаще всего с целью безопасности работает под третьим пользователем, поэтому в борьбе с правами она скорее всего не поможет.
Установка прав на создаваемые
Bitrix Framework файлы
Права, с которыми создаются файлы и папки, вы можете установить в файле /bitrix/php_interface/dbconn.php
:
define("BX_FILE_PERMISSIONS", 0644); define("BX_DIR_PERMISSIONS", 0755);
Дополнительно
и Ваше мнение важно для нас