打开()命令与拒绝权限
问题描述:
我想在根目录下创建一个'test.txt'文件。目前我不是root用户。我的代码如下:打开()命令与拒绝权限
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(){
int fd;
fd=open("/test.txt",O_CREAT|O_RDWR|O_TRUNC,0777);
perror("error: ");
close(fd);
return 0;
}
然而,当我编译并执行它,我得到的错误:
error: : Permission denied
我怎样才能让我的代码必须创建在根文件的权限目录?
P.S.我正在努力完成这项工作,以便稍后可以将此方法应用于我的Linux守护进程程序。
答
fd=open("/test.txt",O_CREAT|O_RDWR|O_TRUNC,0777);
在这一行/
像./test.txt
你的程序必须运行作为有权写入用户之前正确指定路径。(即)是当前工作目录手段,保持(点)
.
在被询问的目录中。我建议您重新考虑放置守护进程文件的位置,并为您的守护进程创建一个单独的文件夹(例如'/ var/lib'或类似的文件夹)。这样你就不必像'root'那样运行守护进程,并且避开了一个很大的安全风险。 – 2014-09-06 14:01:09你应该运行你的程序作为管理员/根 – sas 2014-09-06 14:05:43
@ user1234否,不是真的。 – 2014-09-06 15:08:50