Не могу прочитать файлы из модуля apache - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь создать модуль Apache httpd.У меня проблемы с чтением файлов, когда я пытаюсь прочитать файл, я получаю сообщение об ошибке «Нет такого файла или каталога».Есть случаи, когда я могу читать файлы, например, я мог читать файл / etc / passwd.Я думаю, что там может быть какая-то хромота, но я не уверен.Будет ли способ прочитать любой файл из файловой системы.Ниже приведена моя функция ловушки:

static int subscription_cookie_check_auth(request_rec *r)
{
    r->user = "user";

    int result;
    unsigned char key[MAX_KEY_LEN] = { 0 };
    apr_status_t rv;
    apr_file_t* key_fd = NULL;
    rv = apr_file_open(&key_fd, pubkey_file, APR_FOPEN_READ, APR_FPROT_OS_DEFAULT, r->pool);
    if(rv!=APR_SUCCESS){
        char error_buf[50];
        ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(55503)
                 "Unable to open the file %s: %s", pubkey_file, apr_strerror(rv, error_buf, 50));
        return HTTP_MOVED_TEMPORARILY;
    }

    apr_size_t key_len;
    rv = apr_file_read_full(key_fd, key, 10, &key_len);

    if(rv!=APR_SUCCESS && rv!=APR_EOF){
        char error_buf[50];
        ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(55504)
                "Error while reading the file %s: %s", pubkey_file, apr_strerror(rv, error_buf, 50));
        return HTTP_MOVED_TEMPORARILY;
    }
    apr_file_close(key_fd);
    return OK;
}

const char *set_pubkey(cmd_parms *cmd, void *cfg, const char *arg)
{
    pubkey_file = arg;
    return NULL;
}

static const command_rec authn_anon_cmds[] =
{
    AP_INIT_TAKE1("SignaturePublicKeyFile", set_pubkey, NULL, OR_LIMIT, "The path to public key"),
    {NULL}
};

static void register_hooks(apr_pool_t *p)
{
    ap_hook_check_authn(subscription_cookie_check_auth, NULL, NULL, APR_HOOK_MIDDLE,
                            AP_AUTH_INTERNAL_PER_CONF);
}

Как я упоминал ранее, / etc / passwd работает нормально, но при попытке использовать другие файлы (например, / tmp / test), я получаю следующую ошибку в моих журналах:

[Sat Mar 02 14:13:32.621300 2019] [auth_subscription:error] [pid 11840:tid 140056870254336] [client 127.0.0.1:45288] AH55503: Unable to open the file /tmp/test: No such file or directory

Файл, который я пытаюсь прочитать, существует (и даже имеет все разрешения, чтобы быть уверенным):

$ ls -la /tmp/test 
-rwxrwxrwx 1 root root 12 mars   2 13:10 /tmp/test

Буду очень признателен за любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...