tmpfiles.d의 파일 파쇄

tmpfiles.d의 파일 파쇄

tmpfiles.d를 검색한 후 파일/디렉터리 삭제 옵션이 제한된 것 같습니다. shred와 같은 명령을 사용하여 임시 디렉터리를 완전히 삭제하고 싶습니다. tmpfiles.d 구성에서 스크립트를 트리거하는 방법이나 tmp 정리 중에 shred를 사용하는 숨겨진 메커니즘이 있습니까?

답변1

예! systemd-tmpfiles --remove또는 로 구성된 디렉터리의 모든 내용과 D또는 로 R구성된 모든 파일 또는 디렉터리를 삭제하기 위해 호출됩니다 .rR

에서 man systemd-tmpfiles:

   --remove
       If this option is passed, the contents of directories marked with D or R,
       and files or directories themselves marked with r or R are removed.

약간 덜 침해적이기 위해 접두사로 시작하는 디렉터리로만 필터링할 수 있습니다.

   --prefix=path
       Only apply rules with paths that start with the specified prefix. This option
       can be specified multiple times.

   --exclude-prefix=path
       Ignore rules with paths that start with the specified prefix. This option
       can be specified multiple times.

아니면 더 자주 청소할 수도 있습니다. --clean만료된(사용 기간이 지난) 임시 파일만 삭제됩니다. 다음 예에서 실행하면 이전의 모든 항목이 systemd-tmpfiles --clean삭제됩니다 ./run/screens10d

# /usr/lib/tmpfiles.d/screen.conf
# Type  Path           Mode   User   Group    Age    Argument
  d     /run/screens   1777   root   screen   10d    -

이 사항은 이미 다음을 통해 매일 확인되고 있습니다 systemd-tmpfiles-clean.timer.

$ systemctl cat systemd-tmpfiles-clean.{timer,service}
[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)

[Timer]
OnBootSec=15min
OnUnitActiveSec=1d

# /lib/systemd/system/systemd-tmpfiles-clean.service
[Unit]
Description=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-set.target
Before=shutdown.target

[Service]
Type=oneshot
ExecStart=systemd-tmpfiles --clean
SuccessExitStatus=DATAERR
IOSchedulingClass=idle

그것이 충분히 급진적이지 않다면 다음을 수행할 수 있습니다.

d /my/path 0755 user group  1h -

OnUnitActiveSec=1h그리고 타이머 삽입을 만듭니다.

또는 서비스를 실행 중인 경우 에서 샌드박스 옵션을 확인하세요 man systemd.exec. PrivateTmp=, RemoveIPC=및 같은 항목 DynamicUser=은 더 이상 필요하지 않으면 삭제할 수 있습니다.

관련 정보