suPHP вызывает ошибку для владельца каталога

[Пт. 11 марта 14:48:20 2016] [ошибка] [клиент 181.236.205.241] SoftException в Application.cpp:594: каталог /home/myuser/public_html не принадлежит myuser

Как я могу исправить эту ошибку, не давая каталогу владельца myuser. Это ДОЛЖЕН быть другой пользователь.

Могу ли я использовать некоторую конфигурацию suphp.conf?

РЕДАКТИРОВАТЬ было бы хорошо, чтобы полностью изменить владельца домашней папки, но я не уверен, что это решило бы проблему suPHP

EDIT2 причина, по которой я хочу сделать все это, заключается в том, что большой сайт взломан. В качестве одной из мер, вместо исправления всего огромного приложения, отнимается право на запись в папки и файлы сервера apache. Сервер больше не должен иметь права писать переименовывать или создавать файлы. Для этого я должен забрать право собственности на файлы / папки, очевидно.

предыстория того, что я попробовал немного: https://stackru.com/questions/35947081/suphp-giving-false-feeling-of-security

1 ответ

Решение

Вот некоторый код из Application.cpp (загружен с http://www.suphp.org/Download.html)

    UserInfo directoryOwner = directory.getUser();
    if (directoryOwner != owner && !directoryOwner.isSuperUser()) {
        std::string error = "Directory " + directory.getPath()
            + " is not owned by " + owner.getUsername();
        logger.logWarning(error);
        throw SoftException(error, __FILE__, __LINE__);
    }

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

С риском констатировать очевидное, команда будет что-то вроде этого

$sudo chown root /home/myuser/public_html

РЕДАКТИРОВАТЬ, чтобы добавить больше кода, связанного с вопросом в комментариях

try {
    // Change working directory to script path
    API_Helper::getSystemAPI().setCwd(
        File(scriptFilename).getParentDirectory().getPath());
    if (mode == TARGETMODE_PHP) {
        std::string interpreterPath = interpreter.substr(4);
        CommandLine cline;
        cline.putArgument(interpreterPath);
        API_Helper::getSystemAPI().execute(interpreterPath, cline, env);
    } else if (mode == TARGETMODE_SELFEXECUTE) {
        CommandLine cline;
        cline.putArgument(scriptFilename);
        API_Helper::getSystemAPI().execute(scriptFilename, cline, env);
    }
} catch (SystemException& e) {
    throw SoftException("Could not execute script \"" + scriptFilename
                            + "\"", e, __FILE__, __LINE__);
}
Другие вопросы по тегам