# SPDX-License-Identifier: GPL-2.0 # # Copyright (C) 2023-2024 Oracle. All Rights Reserved. # Author: Darrick J. Wong [Unit] Description=Online bcachefsck for All Filesystems Failure Reporting Documentation=man:bcachefsck_all(8) [Service] Type=oneshot Environment=EMAIL_ADDR=root ExecStart=@libexecdir@/bcachefsck_fail "${EMAIL_ADDR}" bcachefsck_all User=mail Group=mail SupplementaryGroups=systemd-journal # No realtime scheduling RestrictRealtime=true # Make the entire filesystem readonly and /home inaccessible. ProtectSystem=full ProtectHome=yes PrivateTmp=true RestrictSUIDSGID=true # Emailing reports requires network access, but not the ability to change the # hostname. ProtectHostname=true # Don't let the program mess with the kernel configuration at all ProtectKernelLogs=true ProtectKernelModules=true ProtectKernelTunables=true ProtectControlGroups=true ProtectProc=invisible RestrictNamespaces=true # Can't hide /proc because journalctl needs it to find various pieces of log # information #ProcSubset=pid # Only allow the default personality Linux LockPersonality=true # No writable memory pages MemoryDenyWriteExecute=true # Don't let our mounts leak out to the host PrivateMounts=true # Restrict system calls to the native arch and only enough to get things going SystemCallArchitectures=native SystemCallFilter=@system-service SystemCallFilter=~@privileged SystemCallFilter=~@resources SystemCallFilter=~@mount # xfs_scrub needs these privileges to run, and no others CapabilityBoundingSet= NoNewPrivileges=true # Failure reporting shouldn't create world-readable files UMask=0077 # Clean up any IPC objects when this unit stops RemoveIPC=true # No access to hardware device files PrivateDevices=true ProtectClock=true