루트가 아닌 사용자로 /etc/에 파일을 설치하는 규칙은 무엇입니까?

루트가 아닌 사용자로 /etc/에 파일을 설치하는 규칙은 무엇입니까?

이 질문은 Unix & Linux 및 Stack Overflow와 관련이 있을 수 있습니다. 특정 기술 구현에 앞서 Unix/Linux 컨벤션 관점에서 질문을 이해하고 싶었기 때문에 먼저 Unix & Linux에 게시했습니다.

구성 파일을 읽어야 하는 독립 실행 형 hello-world 애플리케이션을 작성 중입니다 config.yml. 이제 루트에만 쓰기 액세스 권한이 있다는 것을 알았 습니다.
/etc/hello-world/config.yml
/etc/

$ ls -ld /etc
drwxr-xr-x 127 root root 12288 Feb 14 21:16 /etc

이 리눅스 PC는 내가 설정한 것이 아니고 유능한 리눅스 관리자가 설정했기 때문에 /etc/사용자만이 쓸 수 root있고 다른 사람은 누구나 읽을 수 있는 표준/관례라고 가정합니다.

cmake && make install그래서 내 질문은: 루트가 아닌 사용자가 프로세스를 실행하는 경우 내 hello-world 응용 프로그램()의 설치 메커니즘은 어떻게 항목을 설치합니까 ?/etc/

~에 따르면구현하다, 내 "설치 메커니즘"은 install내 선언 입니다 CMakeLists.txt. 예를 들면 다음과 같습니다.

install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/config.yml
  DESTINATION /etc/hello-world/config.yml)

make install...하지만 다시 루트가 아닌 사용자로 실행하므로 이 작업은 실패합니다.

다시한번 유닉스/리눅스 학습의 관점에서 질문드립니다.관습- 이것은 일반적인 시나리오인 것 같습니다. 단일 개발자가 자신의 구성 파일을 "표준" 위치에 설치하려고 합니다 /etc/your-app/your-config. 그렇다면 루트로만 쓸 수 있다면 /etc/어떻게 해야 할까요 ?

make install예를 들어 루트 또는 sudo 권한이 있는 사용자만 수행할 수 있다는 의미로 이해됩니까 sudo make install?
아니면 구성 파일을 (하위 디렉터리)에 설치해야 하는 것이 잘못된 것입니까 /etc/?
아니면 /etc/"다른 사람"이 쓸 수 있도록 권한을 부여해야 합니까?

답변1

의도적으로는 할 수 없습니다.

귀하의 애플리케이션은 다음을 저장해야 합니다.사용자당사용자의 홈 디렉토리 어딘가에 구성됩니다.예를 들어 ~/.config/your_app/config.yml

시스템 수준구성 파일은 에 속합니다 /etc/. 마치 애플리케이션이 네트워크 어딘가에 모든 사용자가 연결해야 하는 로컬 서버가 있는 것과 같습니다.저것파일은 응용 프로그램과 함께 시스템 관리자가 설치합니다.

당신은 또한 볼 수 있습니다FHS그리고최하위 비트.

관련 정보