从一个内核模块,我试图使用 call_usermodehelper 函数来执行一个可执行的 sha1,它以一个文件作为参数并将文件的 SHA1 哈希和写入另一个文件(命名为输出)。可执行文件完美运行。
int result=-1;
name = "/home/file"
char *hargv[] = {"/home/sha1", name,NULL };
char *henvp[] = {"HOME=/", "PATH=/sbin:/usr/sbin:/bin:/usr/bin", NULL };
result = call_usermodehelper("/home/sha1", hargv, henvp, 1);
但大多数时候 call_usermodehelper 返回 -14 并且无法执行可执行文件。可能是什么原因?
有时它可以工作,但随后创建的输出文件被锁定(与直接运行 sha1 时发生的情况不同),我必须先运行 chown 才能正确使用它。如何防止这种情况?
没有 call_usermodehelper 有没有办法做这个操作?