C
저는 다음 을 사용하여 데비안 시스템용 데몬을 작성하고 있습니다.유닉스 도메인 소켓.
데몬의 작업 디렉터리가 루트 디렉터리인 경우 파일 시스템에 소켓을 배치하기 위한 관용적인 디렉터리가 있습니까?
답변1
/tmp
일반적으로 해당 하위 디렉터리에 있습니다 . 닫으면 모든 내용이 /tmp
지워집니다. 반드시 지워지는 것은 아니며 주의하세요.할 수 있다이므로 사용한다면 매번 하위 디렉터리를 생성해야 하는지 확인하세요. 권한을 통해 액세스를 제한하려면 하위 디렉터리를 사용해야 합니다. 하위 디렉터리는 /tmp
누구나 읽을 수 있기 때문입니다.
/run
및 /var/run
(아마도 함께 심볼릭 링크됨) 비슷한 방식으로 사용되지만 일반적으로 tmpfs 파일 시스템으로 마운트됩니다. 즉, 부팅 시 생성되고 상주합니다.기억 속에, 디스크에는 없습니다(따라서 대량의 데이터를 덤프하는 장소로 사용하지 마십시오). 이는 런타임 소켓에 적합한 선택일 수 있습니다.
여기 /run
에 언급된 다른 모든 디렉토리와 함께와는 별개로 /tmp
, 루트로만 쓸 수 있습니다. 시스템 프로세스의 경우에는 괜찮지만 권한이 없는 사용자가 응용 프로그램을 실행할 가능성이 있는 경우 /tmp
어딘가에 영구 디렉터리를 사용하거나 생성하고 이에 대한 권한을 설정하거나 사용자의 $HOME에 있는 위치를 사용하려고 합니다.
디렉토리는 설치 중에 /usr/share
(또는)에서 생성될 수 있습니다 . 디렉토리와 콘텐츠는 또는 에서처럼 부트스트랩을 통과할 /usr/local/share
수 없습니다 . 그러나 다음과 같이/tmp
/run
요르단댓글에서 지적했듯이 /usr
읽기 전용으로 설치가 가능하며,Linux 파일 시스템 계층 구조지침이것을 반영하다. 물론 애플리케이션이 설치되면 읽기 전용일 수 없으므로 소켓을 생성하려는 경우 이를 유지했다가 나중에 사용할 수 있습니다(파일이 읽기 전용인 경우에도).
/etc
이는 일반적으로 시스템 전체 구성 및 재구성에 사용되므로 읽기 전용으로 마운트되지 않는 위치에서 크로스 부팅 지속성을 원하는 경우 상당히 안전한 방법입니다. OTOH, 장치의 기본 루트 파일 시스템 전체가 읽기 전용이고(예: 임베디드 시스템) /tmp 및 /run이 다른 장치에 있는 시스템(아마도 메모리의 tmpfs)이 있을 수 있습니다. 따라서 가장 강력한 두 가지 전략은 다음과 같습니다.
애플리케이션을 설치할 때 소켓을 영구 위치에 마운트하십시오.
/run
런타임이나 런타임에 디렉터리를 만들고/var/run
거기에 소켓을 놓습니다.에서만 동일한 작업을 수행합니다
/tmp
.
첫 번째 방법의 장점은 일단 애플리케이션이 설치되면 사용할 수 있는 소켓을 갖게 된다는 것입니다. 두 번째 장점은가능한정상적인 프로그래밍에 더 도움이 됩니다. 세 번째 방법의 장점은 슈퍼유저 권한이 필요하지 않다는 것입니다. 나중에 마음이 바뀌면 한 구현에서 다른 구현으로 쉽게 전환할 수 있습니다.
마지막으로 다음과 같이부치X일단 발생하면 최소한 이에 대한 구성 옵션을 제공하고 선택한 기본값을 사용해야 합니다.