LINUX.ORG.RU

LD_PRELOAD / open - при создании файла, странные file permissions

 ,


0

1

Привет,

я прошу помочь разобраться мне со следующей ситуацией.

Имеется следующий код:

root@hl02:~# cat myopen.c
#define _GNU_SOURCE
#include <dlfcn.h>
#include <stdio.h>
#include <fcntl.h>

 
typedef int (*orig_open_f_type)(const char *pathname, int flags);
 
int open(const char *pathname, int flags, ...)
{
   printf ("File %s; flags %d\n", pathname, flags);

   orig_open_f_type orig_open;
   orig_open = (orig_open_f_type)dlsym(RTLD_NEXT,"open");
   return orig_open(pathname,flags);
}

Компилирую и подгружаю с LD_PRELOAD, запуская touch testfile

root@hl02:~# gcc -shared -fPIC myopen.c -o myopen.so -ldl -g
root@hl02:~# LD_PRELOAD=./myopen.so touch testfile
File testfile; flags 2369
root@hl02:~# ls -l testfile 
--wS--xr-x 1 root root 0 Nov 13 08:39 testfile

Вопрос: откуда берутся эти permissions "--wS--xr-x" когда создается новый файл?

Был бы очень благодарен за любую помощь

С уважением, Игорь


поспешил с вопросом.. Ответ нашел на этом форуме

    va_list va;
    va_start(va, flags);
    mode_t mode = va_arg(va, mode_t);
    va_end(va);

    int (*open_orig)(const char *filename, int flags, ...);
    open_orig = (int (*)(const char*, int, ...))dlsym(RTLD_NEXT, "open");
    return open_orig(filename, flags, mode);
Igorek ()
Ответ на: комментарий от Igorek

Ответ нашел на этом форуме

ну ты и бублик

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.