|
При изменении файлов через 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);
Дополнительно
и Ваше мнение важно для нас