C++ FirePlugin中的文件写入权限被拒绝

C++ FirePlugin中的文件写入权限被拒绝,c++,c,linux,firebreath,C++,C,Linux,Firebreath,源代码已经在Fedora15,16和Ubuntu10,11,12中进行了测试,没有问题 但在Fedora17中,文件写入功能不起作用 (一) 返回值:“指针为空” 我猜目录的权限出错,设置了777权限。 但一切都没有改变 同样的代码在普通的C程序中工作 为什么它在firebreath npPlugin中不起作用 权限有什么不同吗?很可能是该目录不存在,或者您没有写入该目录的权限 此命令有效吗? echo 123>/home/test/temp/opentest.html为了支持这一想法,请注意F

源代码已经在Fedora15,16和Ubuntu10,11,12中进行了测试,没有问题

但在Fedora17中,文件写入功能不起作用

(一)

返回值:“指针为空”

我猜目录的权限出错,设置了777权限。 但一切都没有改变

同样的代码在普通的C程序中工作

为什么它在firebreath npPlugin中不起作用


权限有什么不同吗?

很可能是该目录不存在,或者您没有写入该目录的权限

此命令有效吗?

echo 123>/home/test/temp/opentest.html

为了支持这一想法,请注意FireBreath插件与承载它的浏览器具有完全相同的权限;Chrome一直威胁要对NPAPI插件进行更多的沙箱操作,但据我所知,他们目前在linux上没有这样做,而且据我所知,没有其他浏览器会这样做。@taxilian我在firefox中测试了这个插件,并使用根帐户运行firefox,但仍然不起作用。我在Windows7中也遇到过同样的问题,并用UAC elevation解决了这个问题。有没有办法提高firefox或npplugin的文件写入权限?好吧,你可以使用sudo的一个变体启动一个单独的进程,但通常在*nix上正确的解决方案是不向你没有权限的地方写入。@ugoren回答的要点(你没有用任何一种方式来回答)是,你可能试图在用户无权访问的地方写东西。该目录是为此插件创建的。因此,我想在其中设置读/写和写文件的权限。我使用chmod 777命令来允许所有权限。还有什么我应该做的吗?在不创建临时文件的情况下,mktemp函数还有其他用途吗?我应该创建html文件并设置我想要的文件名。如果它只是一个临时文件,那么命名就不重要了,这样做的目的是为了避免临时目录的硬编码,以防发行版与您期望的不同。谢谢您的建议。但它不仅仅是一个临时文件,名称作为参数从javascript传递。它不能改变。
int fd;
if ( 0 < ( fd = open("/home/test/temp/opentest.html", O_CREAT | O_EXCL, 0777))) {
    write(fd, "test", strlen("test"));
    close(fd);
    return "Success";
} else {
    return "Error";
}
FILE *pFile;
pFile = fopen("/home/test/temp/opentest.html", "w+");
if (pFile == NULL) {
    return "Pointer is NULL";
} else {
    fputs("fopen test", pFile);
    fclose(pFile);
    return "Success";
}