tmpfiles.d glob은 디렉토리에서만 작동합니다.

tmpfiles.d glob은 디렉토리에서만 작동합니다.

문서에 따르면 glob을 사용하여 경로를 지정할 수 있어야 하지만 /*/디렉토리에 glob을 사용하는 것은 지원되지 않는 것 같습니다. 이는 이 유형의 glob이 tmpfiles.d"확장 glob 사양"의 일부이기 때문입니다. 규칙?

예를 들어:

$ cd $(mktemp -d)
$ mkdir -p folder/{sub1,sub2}
$ touch folder/{file1,file2}
$ chmod -R 0700 folder 
$ echo "z $PWD/folder/*/ 0770 - - - -" | systemd-tmpfiles --create -
$ ls -l folder
total 8
-rwxrwx--- 1 mathiassven users    0 Nov 16 05:15 file1
-rwxrwx--- 1 mathiassven users    0 Nov 16 05:15 file2
drwxrwx--- 2 mathiassven users 4096 Nov 16 05:15 sub1
drwxrwx--- 2 mathiassven users 4096 Nov 16 05:15 sub2

보시다시피 이 규칙은 파일에도 적용됩니다.

내가 이 일을 하고 싶은 이유는 다음과 같은 규칙이 필요합니다.

Z /srv/dav    0664 - - - -
Z /srv/dav/*/ 0774 - - - -

이렇게 하면 모든 파일에 /srv/dav존재 0664하지만 디렉토리에는 존재하지 않습니다 0774. 디렉토리가 전 세계적으로 유효한 경우에도 이를 쉽게 달성할 수 있을지 확신할 수 없지만 /srv/dav/*/재귀적으로 적용하는 방법을 모르기 때문입니다 .

관련 정보