Rob*_*bb1 3 c linux permissions
我正在用C编写一个程序,每次开始设置一些变量时都必须检查一个配置文件.
在程序的第一次启动时,我想不会有任何配置文件,所以我需要创建它(使用默认设置).
我曾经说过程序的配置文件属于该文件夹/etc,更具体地说是为程序本身创建的特定文件夹(即/etc/myprog).这是我应该问的第一个问题:这是真的吗?为什么/etc?
在任何情况下,我都尝试使用以下方法创建该文件:
open("/etc/myprog/myprog.conf", O_WRONLY | O_CREAT, 0644);
Run Code Online (Sandbox Code Playgroud)
的open回报-1,并设置errno全局变量2(即文件夹不存在).如果我尝试直接创建文件/etc(因此"/etc/myprog.conf"作为第一个参数open),我得到一个errno设置为13(即权限被拒绝).
有没有办法授予我的程序写入权限/etc?
编辑:我看到大多数用户建议使用sudo.如果可能的话,我宁愿避免使用此选项,因为此文件只需创建一次(在第一次启动时).也许我应该制作2个不同的可执行文件?(例如myprog_bootstrap和myprog,不必运行只有第一个与sudo)
小智 5
您需要root权限才能创建文件/etc.sudo在前面运行您的可执行文件:
sudo executable_name
Run Code Online (Sandbox Code Playgroud)