데비안 시스템에서 파일 기반 소켓의 관용적 위치


13

유닉스 도메인 소켓C 을 사용하는 데비안 시스템에 대한 데몬 프로세스를 작성 중 입니다 .

데몬 프로세스의 작업 디렉토리가 루트 디렉토리 인 경우 파일 시스템에 소켓을 배치하는 관용적 디렉토리가 있습니까?


왜 그냥 구성 가능하게하지 않습니까?
BatchyX

3
@BatchyX 글쎄, 어떤 종류의 기본값은 (모든 관리자가 스스로 결정을 내 리도록 강요하지 않고) 확실히 좋을 수 있습니다. :)
CVn

답변:


17

그것들은 일반적으로 /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등장 함에 따라 최소한 기본 설정으로 돌아가는 구성 옵션을 제공해야합니다.


2
/run또는 /var/run루트 프로세스에도 자주 사용됩니다.
BatchyX

권리. 그것들은보다 더 많은 tmp /tmp입니다. 이 부분을 편집하겠습니다.
goldilocks

/usr읽기 전용으로 장착 할 수 있습니다. 런타임에 파일을 작성해서는 안됩니다. 다른 제안은 좋습니다.
jordanm

1
의견을 보내 주셔서 감사합니다. 토론은 매우 유익했습니다. /tmp/.APPNAME/.APPSOCK데몬은 영구 데이터가 필요하지 않기 때문에 기본 위치를 결정하기로 결정했습니다 .
recursion.ninja 2

1
사이 또 다른 주요 차이점 /tmp/run루트 만에 쓰기 권한을 가지고 있다는 것입니다 /run.
BatchyX
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.