我为Linux下的C学生编写了一个数据库。因此,在输入我的数据并关闭程序后,数据将自动保存在文本文件中。如何才能将此文件设为只读?我稍后会添加一个函数来读取文件中的数据,因此只有程序才能处理数据。打开文件的任何用户只能读取数据,但他无权更改文件中的数据。换句话说,如何保护我保存的数据安全? 这是一些代码:
void writeData(){
FILE * fpw;
fpw=fopen("database.txt","wb");
if(fpw==NULL){
printf("the file cannot be opened");
exit(1);
}
int i;
for(i=0;i<SIZE;i++){
fprintf(fpw,"%s, %s, %d, %s , %s;\n",
(db+i)->lastname,(db+i)->firstname,(db+i)->mNr, (db+i)->subject, (db+i)->nationality);
}
fclose(fpw);
}
我写了一个例子。这是代码:
#include <sys/stat.h>
#include <stdio.h>
int main(int argc, char** argv){
char mode[]="111";
int in=strtol(mode,0,8);
int ret_value=chmod("./file.csv",in);
if(ret_value!=0){
printf("failed to change mode");
}
}
但我希望只有该程序具有rw权限。其余的只有读取权限,包括我作为终端用户。怎么办? 我想,我会尝试阅读关于Setuid并使用它
答案 0 :(得分:2)
在C中使用chmod
来更改文件模式。
#include <sys/stat.h>
int chmod(const char *path, mode_t mode);
以下示例为所有者,组和其他人设置了读取权限。
#include <sys/stat.h>
const char *path;
...
chmod(path, S_IRUSR|S_IRGRP|S_IROTH);
如果您想阅读权限,请使用stat。
#include <sys/stat.h>
int stat(const char * restrict path, struct stat * restrict buf);