This also relaxes the inode access modes a bit, in case they were set to 0600: we now set the "r" bit too, i.e. use 0644. This is beneficial since it permits unpriv code to read the xattrs of the entrypoints (which require read access). Note that in order to be able to connect() to a socket inode you need write access, hence this shouldn't compromise security in any way.
37 lines
1.4 KiB
SYSTEMD
37 lines
1.4 KiB
SYSTEMD
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
#
|
|
# This file is part of systemd.
|
|
#
|
|
# systemd is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU Lesser General Public License as published by
|
|
# the Free Software Foundation; either version 2.1 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
[Unit]
|
|
Description=Report Signing Socket (Local Software Key)
|
|
Documentation=man:systemd-report-sign-plain@.service(8)
|
|
DefaultDependencies=no
|
|
Before=sockets.target shutdown.target
|
|
Conflicts=shutdown.target
|
|
WantsMountsFor=/var/lib/systemd/report.sign.plain
|
|
|
|
# The same binary serves two interfaces off one socket: an unprivileged metrics provider exposing our public
|
|
# key, and the privileged signing API. The actual socket node hence lives in the world-accessible metrics
|
|
# directory /run/systemd/report/, and the signing entrypoint is a symlink into the root-only
|
|
# /run/systemd/report.sign/ directory. Access to the signing method itself is restricted to root by the
|
|
# service (see vl_method_sign()); the directory permissions are merely an additional barrier.
|
|
[Socket]
|
|
ListenStream=/run/systemd/report/io.systemd.Report.SignPlain
|
|
Symlinks=/run/systemd/report.sign/plain
|
|
FileDescriptorName=varlink
|
|
SocketMode=0666
|
|
Accept=yes
|
|
MaxConnectionsPerSource=16
|
|
RemoveOnStop=yes
|
|
XAttrEntryPoint=user.varlink=entrypoint
|
|
XAttrListen=user.varlink=listen
|
|
XAttrAccept=user.varlink=server
|
|
|
|
[Install]
|
|
WantedBy=sockets.target
|