Linux에 / dev / null에 해당하는 디렉토리가 있습니까? 프로그램을 구성 할

응용 프로그램을 구성 할 때 응용 프로그램에서 /dev/null빈 파일을 읽으려면 구성 파일로 자주 사용할 수 있습니다 . 그러나 응용 프로그램이 디렉토리에서 파일 목록을 읽는 경우이 트릭을 사용할 수 없습니다. 읽을 빈 디렉토리를 제공해야합니다.

궁금한 점이 있습니다. Linux에는 이러한 용도로 사용할 수있는 기본 빈 디렉토리가 있습니까? OpenSSH가 잠시 동안 / var / empty를 사용했다는 것을 알고 있습니다. 물론 빈 디렉토리를 직접 만들 수는 있지만 FHS가 이에 대한 표준 디렉토리를 지정했을까요?



답변

FHS는 더 “표준”빈 디렉토리를 제공하지 않습니다.

Linux 시스템에서 디렉토리를 제공하는 것이 일반적 /var/empty이지만이 디렉토리는 FHS에 정의되어 있지 않으며 실제로 비어 있지 않을 수 있습니다. 대신 특정 데몬이 여기에 빈 디렉토리를 만듭니다. 예를 들어, openssh는 /var/empty/sshd권한 분리를 위해 빈 디렉토리 를 사용합니다 .

빈 디렉토리가 일시적인 경우, /run또는 의 하위 디렉토리로 빈 디렉토리를 직접 만들 수 있습니다 /tmp. 프로그램 외부 에서이 작업을 수행하는 경우이 작업을 수행 mktemp -d하거나 mkdtemp(3)프로그램 내부 에서 C 함수를 사용할 수 있습니다. 항상 빈 디렉토리가 있어야 한다면 /var/emptyopenssh처럼 디렉토리를 작성하는 것이 좋습니다.

이 유스 케이스의 경우, 디렉토리를 작성하는 /tmp것이 가장 적합하지만 실제로는 디렉토리를 어디에 두는지는 중요하지 않습니다.


답변

mktemp -d기본적으로에서 보안 권한이있는 비어있는 새 임시 디렉토리를 작성하는 데 사용할 수 있습니다 /tmp/. 이 유틸리티는에 새 디렉토리의 경로를 출력 STDOUT하므로 셸에서 유용합니다.

어쨌든 시스템 단위 파일보다 이식성이 뛰어납니다.


답변

이 유닉스 질문nullfs FUSE 파일 시스템을 포함하여 “블랙홀”디렉토리를 만들기위한 몇 가지 제안이 있습니다.


답변

서비스의 경우 systemd는 해당 서비스 에 대한 네임 스페이스 외부의 프로세스와 공유하지 않고 초기에 비어 있어야하는 PrivateTmp개인 /tmp/var/tmp디렉토리 를 작성 하는 옵션 을 제공합니다 .

[Service]
ExecStart=...
PrivateTmp=yes