【问题标题】:Segmentation fault while creating a file with setfsuid()?使用 setfsuid() 创建文件时出现分段错误?
【发布时间】:2013-01-07 18:25:10
【问题描述】:

我有这个创建文件的 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;   
} 

当我在文件 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;   
}

setfsuid() 命令需要 root 权限,我使用的是带有服务器操作系统的 linux 系统。什么可能导致此问题?

【问题讨论】:

    标签: c file permissions segmentation-fault


    【解决方案1】:

    您需要检查fopen 的结果并确保它不是NULLsetfsuid 更改用于文件系统访问检查的UID。在此更改之后,您可能无权打开该文件进行写入,从而导致 fopen 返回 NULL。当您尝试使用fprintf 写入文件时,这会导致segfault在使用之前始终检查返回值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 2014-04-10
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多