ファイルを作成するこの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() コマンドにはルート権限が必要で、サーバー OS を搭載した Linux システムを使用しています。この問題の原因は何ですか?