Релиз RISH 2.3.0 (Изоляция)
Основная цель этого апдейта – усиление изоляции между сайтами пользователей. Поскольку внесены существенные изменения в архитектуру папок – произошла смена минорной версии.
Сейчас сайты одного пользователя могут получить доступ к файлам другого пользователя по чтению. Записать ничего нельзя, но, тем не менее, в этом мало хорошего. При взломе сайта у одного пользователя можно получить данные из папки сайта другого.
Проверить это достаточно просто – можно создать скрипт php в папке одного пользователя и попытаться прочитать файл из папки другого:
<?php
$filePath = '/var/www/siteuser2/www/site.test/t.txt';
// Проверяем, существует ли файл и доступен ли он для чтения
if (file_exists($filePath) && is_readable($filePath)) {
$content = file_get_contents($filePath);
if ($content !== false) {
echo "<pre>" . htmlspecialchars($content) . "</pre>";
} else {
echo "Ошибка при чтении файла.";
}
} else {
echo "Файл не существует или недоступен для чтения.";
}
?>
Какие изменения внесены?
Для исправления этой ситуации была проработана новая модель прав папок, которая позволяет полностью изолировать пользователей как по записи, так и по чтению.
К счастью RISH, модель работы PHP и Apache в RISH немного отличается от общепринятой и это позволило выполнить изоляцию в полном объеме без каких-либо существенных изменений в архитектуре – меняются только права и владельцы нескольких папок.
Сейчас, при попытке обновления и обнаружении старой системы прав будет показано вот такое сообщение:
Если у вас сайт из папки одного пользователя обращается к файлам в папке другого пользователя – это будет заблокировано! (Собственно в этом и заключается усиление изоляции)
Такое поведение не является стандартным и безопасным и этого следует избегать. Можно такие сайты поместить в папку одного пользователя, если вам требуется подобное поведение или же наладить общение между ними посредством API.
Вы можете отказаться от обновления прав, но при каждом последующем обновлении RISH вам будут снова предлагать обновить права с целью усилить изоляцию пользователей.
На что повлияет обновление?
Что еще затронуто в этом релизе?
При попытке выпуска сертификата для доменов с алиасами, которые отличаются от основного домена (такое бывает редко, но бывает, когда два домена подключены к одному сайту) вывод на экран списка алиасов был косячным. Теперь это исправлено.
Так же выпуск самоподписанных сертификатов теперь позволяет выпускать сертификаты на все алиасы сайта.
Изменены многие другие надписи в разных местах для большей очевидности. Скорее всего вы их даже не заметите.
На тот случай, если у вас сервер отключен от внешнего мира (например локальный сервер) или у вас не получается обновиться онлайн из-за блокировок (у нас конечно предусмотрены альтернативные адреса, но мало ли?) появилась возможность обновиться локально.
Перед обновлением RISH проверяет наличие архива rish2.tar.gz в папке /root. Если такой архив имеется – будет предпринята попытка обновления из него. При отказе от обновления (или при успешном обновлении) архив будет удален и следующее обновление будет через интернет.
При создании пользователя все приводится к нижнему регистру. Это позволило избежать странных ошибок, если кто-то вдруг решит набрать имя пользователя с большой буквы. Раньше такого не было, но возможность была и это привело бы к странным глюкам.
При создании первого пользователя во время установки RISH можно было отказаться от этого. Это привело бы к неработоспособному состоянию RISH. Теперь нельзя отказаться от создания пользователя, пока не создан хотя бы один.
Запрещено создание пользователя с именем html. Это нарушит нормальную работу RISH. Теперь это невозможно.
Если будут вопросы или заметите какие-то баги – пишите в наш дружелюбный телеграм чат и подписывайтесь на телеграм канал новостей RISH.