유닉스 도메인 소켓C
을 사용하는 데비안 시스템에 대한 데몬 프로세스를 작성 중 입니다 .
데몬 프로세스의 작업 디렉토리가 루트 디렉토리 인 경우 파일 시스템에 소켓을 배치하는 관용적 디렉토리가 있습니까?
유닉스 도메인 소켓C
을 사용하는 데비안 시스템에 대한 데몬 프로세스를 작성 중 입니다 .
데몬 프로세스의 작업 디렉토리가 루트 디렉토리 인 경우 파일 시스템에 소켓을 배치하는 관용적 디렉토리가 있습니까?
답변:
그것들은 일반적으로 /tmp
또는 그 하위 디렉토리에 있습니다. 에 그 모든 것을 참고 /tmp
종료시 삭제 대상입니다 - 그것은 반드시 지워하지 않는 것이, 그냥 조심하십시오 할 수 있습니다 , 당신은 당신의 하위 디렉토리마다 작성해야하는 경우 해당 체크를 사용 그렇다면. /tmp
세계적으로 읽을 수 있기 때문에 권한을 통한 액세스를 제한하려는 경우 서브 디렉토리를 사용하려고합니다 .
/run
과 /var/run
(함께 심볼릭 링크 될 수있다)는 유사한 방법으로 사용되지만, 일반적으로의 tmpfs 파일 시스템으로 장착되어있다 - 그들은 부팅 및 상주에서 생성되는 의미 메모리 가 아닌 디스크 (그래서 덤프 장소로 그것을 사용하지 않습니다에 다량의 데이터). 런타임 소켓의 경우 아마도 좋은 선택 일 것입니다.
참고 /run
여기에 언급, 다른 모든 디렉토리를 제외시켰다 /tmp
, 루트 만이 쓸 수 있습니다. 시스템 프로세스의 경우에는 문제가 없지만 권한이없는 사용자가 응용 프로그램을 실행할 수있는 경우 /tmp
영구 디렉토리 를 사용 하거나 생성하여 권한을 설정하거나 사용자의 $ HOME에있는 위치를 사용하려고합니다.
설치하는 동안 /usr/share
(또는 /usr/local/share
)에 디렉토리를 작성할 수 있습니다 . 디렉토리와 내용은 부츠에서 /tmp
또는 에서처럼 부츠를 거두지 못할 가능성이 있습니다 /run
. 그러나 jordanm 이 주석에서 지적한 것처럼 /usr
읽기 전용으로 마운트 될 수 있으며 Linux 파일 시스템 계층 지침 은 이것을 반영합니다 . 물론 응용 프로그램을 설치할 때 읽기 전용이 될 수 없으므로 소켓을 작성하는 것이 편한 경우 나중에 소켓을 남겨두고 나중에 사용할 수 있습니다 (여전히 소켓에 쓸 수는 있지만 파일이 읽기 전용입니다).
읽기 전용으로 마운트되지 않는 부트에서 영구적 인 위치를 원한다면 /etc
시스템 전체 구성 및 재구성에 종종 사용되기 때문에 상당히 안전한 방법입니다. OTOH의 경우 전체 루트 파일 시스템의 기반이되는 장치가 읽기 전용 (예 : 임베디드 시스템)이고 다른 장치 (예 : 메모리의 tmpfs)에서 / tmp 및 / run이있는 시스템을 가질 수 있습니다. 따라서 가장 강력한 두 가지 전략은 다음과 같습니다.
응용 프로그램이 설치 될 때 소켓을 영구 위치에 설치하십시오.
런타임 에 /run
또는 /var/run
런타임에 디렉토리를 작성 하고 소켓을 거기에 놓으십시오.
에서 동일한 작업을 수행하십시오 /tmp
.
첫 번째 장점은 앱이 설치되면 사용할 소켓이 있다는 것입니다. 두 번째 것의 장점은 정상적인 프로그래밍에 더 도움이 될 수 있다는 것 입니다. 세 번째 장점은 수퍼 유저 권한이 필요하지 않다는 것입니다. 나중에 마음이 바뀌면 한 구현에서 다른 구현으로 쉽게 전환 할 수 있습니다.
마지막으로 BatchyX 가 등장 함에 따라 최소한 기본 설정으로 돌아가는 구성 옵션을 제공해야합니다.
/run
또는 /var/run
루트 프로세스에도 자주 사용됩니다.
/tmp
입니다. 이 부분을 편집하겠습니다.
/usr
읽기 전용으로 장착 할 수 있습니다. 런타임에 파일을 작성해서는 안됩니다. 다른 제안은 좋습니다.
/tmp/.APPNAME/.APPSOCK
데몬은 영구 데이터가 필요하지 않기 때문에 기본 위치를 결정하기로 결정했습니다 .
/tmp
및 /run
루트 만에 쓰기 권한을 가지고 있다는 것입니다 /run
.