这个问题可能与 Unix & Linux 和 Stack Overflow 相关;我首先在 Unix & Linux 上发帖,因为我想在任何具体的技术实现之前,我想从 Unix/Linux 约定的角度来理解这个问题。
我正在编写一个独立的 hello-world 应用程序,需要读取配置文件config.yml
.
我被告知惯例是将文件安装在/etc/hello-world/config.yml
.
现在,我注意到/etc/
只有 root 才有写权限:
$ ls -ld /etc
drwxr-xr-x 127 root root 12288 Feb 14 21:16 /etc
我没有设置这台 Linux PC,而是一位称职的 Linux 管理员设置的,所以我认为这是标准/约定,/etc/
只有用户可写root
,其他人都可读。
所以我的问题是:如果进程由非 root 用户运行,我的 hello-world 应用程序 ( ) 的安装机制如何cmake && make install
安装任何内容?/etc/
按照执行,我的“安装机制”是install
我的声明CMakeLists.txt
,例如:
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/config.yml
DESTINATION /etc/hello-world/config.yml)
make install
...但同样,由于我将以非 root 身份运行,因此这将会失败。
再次,我是从学习Unix/Linux的角度来问这个问题的习俗- 我想这是一个常见的场景:一个单独的开发人员想要将他的配置文件安装到“标准”位置,我被告知是/etc/your-app/your-config
。那么,如果/etc/
只能由 root 写入,他如何做到这一点呢?
是否理解为make install
只能由 root 或 sudo 特权用户完成,例如sudo make install
?
或者配置文件应该安装到(的子目录)是不正确的吗/etc/
?
或者/etc/
的权限应该允许“其他人”写入?