Не може да се създаде нов файл във файловата система /proc от потребителското пространство в C. Възможно ли е изобщо?

И така, ето функцията, която трябва да създаде и запише низ в /proc/minifwdb:

int write_to_file(char* rule)
{
    FILE* fin;

    fin = fopen("/proc/minifwdb", "a");

    if (!fin)
    {
        printf("Could not open the file /proc/minifwdb, exiting...\n");
        return 1;
    }

    if (fprintf(fin, "%s\n", rule) < 0)
        return 1;

    fclose(fin);

    return 0;
}

Когато fopen() се извика, той връща NULL. И в момента няма такъв файл като /proc/minifwdb. Трябва ли да го създам с помощта на LKM и след това да го използвам, за да напиша информацията? Също така се опитвам да го създам от потребител, който няма root достъп. Някакви предположения?


person user1090944    schedule 31.05.2014    source източник
comment
Не можете от потребителското пространство, но защо изобщо се опитвате? Какво се опитвате да постигнете, като създадете файл в /proc?   -  person Mat    schedule 31.05.2014
comment
Трябва да предам низ от потребителското пространство в ядрото.   -  person user1090944    schedule 31.05.2014
comment
Тогава да, трябва да направите това от страната на ядрото.   -  person Mat    schedule 31.05.2014
comment
Мога да напиша модула, който ще бъде зареден в тази функция с помощта на syscall, например ›syscall(sudo insmod create_file.ko). Модулът просто ще създаде нов файл в procfs и след това ще напиша низа там. Това звучи ли като нещо адекватно?   -  person user1090944    schedule 31.05.2014
comment
Не, не трябва да го правите така. също и фактът, че се опитвате да изпълните sudo команда от syscall, вие НАИСТИНА изглежда не знаете какво правите. Можете ли да обясните ЗАЩО искате да имате нещо написано в ядрото? Каква е крайната ви цел, може би тогава можем да помогнем   -  person Ahmed Masud    schedule 01.06.2014
comment
@AhmedMasud Трябва да уловя входящи и изходящи мрежови пакети и въз основа на информацията (правила), предадена от потребителското пространство, да реша дали пакетът да бъде премахнат или разрешен.   -  person user1090944    schedule 01.06.2014


Отговори (1)


Файловете в /proc се използват като интерфейс между потребителското пространство и ядрото.

Възможно е да се използва такъв файл за предаване на низ от потребителското пространство в ядрото, но кодът на ядрото, който иска да го получи, е отговорен за създаването на файла.

person CL.    schedule 31.05.2014