D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
lib
/
systemd
/
system
/
Filename :
xfs_scrub@.service
back
Copy
# SPDX-License-Identifier: GPL-2.0-or-later # # Copyright (C) 2018-2024 Oracle. All Rights Reserved. # Author: Darrick J. Wong <djwong@kernel.org> [Unit] Description=Online XFS Metadata Check for %f OnFailure=xfs_scrub_fail@%i.service Documentation=man:xfs_scrub(8) # Explicitly require the capabilities that this program needs ConditionCapability=CAP_SYS_ADMIN ConditionCapability=CAP_FOWNER ConditionCapability=CAP_DAC_OVERRIDE ConditionCapability=CAP_DAC_READ_SEARCH ConditionCapability=CAP_SYS_RAWIO # Must be a mountpoint ConditionPathIsMountPoint=%f RequiresMountsFor=%f [Service] Type=oneshot Environment=SERVICE_MODE=1 ExecStart=/usr/sbin/xfs_scrub -b -o autofsck -M /tmp/scrub/ %f SyslogIdentifier=%N # Run scrub with minimal CPU and IO priority so that nothing else will starve. IOSchedulingClass=idle CPUSchedulingPolicy=idle CPUAccounting=true Nice=19 # Create the service underneath the scrub background service slice so that we # can control resource usage. Slice=system-xfs_scrub.slice # No realtime CPU scheduling RestrictRealtime=true # Dynamically create a user that isn't root DynamicUser=true # Make the entire filesystem readonly and /home inaccessible, then bind mount # the filesystem we're supposed to be checking into our private /tmp dir. # 'norbind' means that we don't bind anything under that original mount. ProtectSystem=strict ProtectHome=yes PrivateTmp=true BindPaths=%f:/tmp/scrub:norbind # Don't let scrub complain about paths in /etc/projects that have been hidden # by our sandboxing. scrub doesn't care about project ids anyway. InaccessiblePaths=-/etc/projects # No network access PrivateNetwork=true ProtectHostname=true RestrictAddressFamilies=none IPAddressDeny=any # Don't let the program mess with the kernel configuration at all ProtectKernelLogs=true ProtectKernelModules=true ProtectKernelTunables=true ProtectControlGroups=true ProtectProc=invisible RestrictNamespaces=true # Hide everything in /proc, even /proc/mounts 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=CAP_SYS_ADMIN CAP_FOWNER CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_SYS_RAWIO AmbientCapabilities=CAP_SYS_ADMIN CAP_FOWNER CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_SYS_RAWIO NoNewPrivileges=true # xfs_scrub doesn't create files UMask=7777 # No access to hardware /dev files except for block devices ProtectClock=true DevicePolicy=closed DeviceAllow=block-*