C 使用setfsuid()创建文件时出现分段错误?
我有一个创建文件的c代码C 使用setfsuid()创建文件时出现分段错误?,c,file,permissions,segmentation-fault,C,File,Permissions,Segmentation Fault,我有一个创建文件的c代码 #include <stdio.h> int main(int argc, char *argv[]) { FILE *fp; fp=fopen("/home/sss/test3.file","w"); fprintf(fp, "hi hi hi\n" ); fclose(fp); return 0; } #包括 int main(int argc,char*argv[]) { 文件*fp; fp=fopen
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *fp;
fp=fopen("/home/sss/test3.file","w");
fprintf(fp, "hi hi hi\n" );
fclose(fp);
return 0;
}
#包括
int main(int argc,char*argv[])
{
文件*fp;
fp=fopen(“/home/sss/test3.file”,“w”);
fprintf(fp,“hi-hi\n”);
fclose(fp);
返回0;
}
当我在file fopen()调用之前添加setfsuid()命令并执行该程序时,我得到了一个分段错误
#include <stdio.h>
#incldde <unistd.h>
int main(int argc, char *argv[])
{
FILE *fp;
setfsuid(1002);
fp=fopen("/home/sss/test3.file","w");
fprintf(fp, "hi hi hi\n" );
fclose(fp);
return 0;
}
#包括
#包括
int main(int argc,char*argv[])
{
文件*fp;
setfsuid(1002);
fp=fopen(“/home/sss/test3.file”,“w”);
fprintf(fp,“hi-hi\n”);
fclose(fp);
返回0;
}
setfsuid()命令需要root权限,并且我在一个带有服务器操作系统的linux系统上。什么可能导致此问题?您需要检查
fopen
的结果,并确保它不是NULL
setfsuid
更改用于文件系统访问检查的UID
。此更改后,您可能没有权限打开该文件进行写入,导致fopen
返回NULL。当您尝试使用fprintf
写入文件时,这会导致segfault
在使用返回值之前,请始终检查它们。