mirror of
https://github.com/systemd/systemd.git
synced 2025-01-07 21:18:41 +03:00
47 lines
1.2 KiB
Bash
47 lines
1.2 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||
|
set -eux
|
||
|
set -o pipefail
|
||
|
|
||
|
# Verify ownership attributes are applied to message queues
|
||
|
|
||
|
# Select arbitrary non-default attributes to apply to the queue.
|
||
|
queue=/attr_q # Pick any unused queue name.
|
||
|
user=nobody # Choose a core system user.
|
||
|
group=adm # Choose a core system group.
|
||
|
mode=0420 # Allow the owner to read messages and anyone in the group to write.
|
||
|
|
||
|
at_exit() {
|
||
|
set +e
|
||
|
systemctl stop mqueue-ownership.{service,socket}
|
||
|
rm -f /run/systemd/system/mqueue-ownership.{service,socket}
|
||
|
systemctl daemon-reload
|
||
|
}
|
||
|
trap at_exit EXIT
|
||
|
|
||
|
cat << EOF > /run/systemd/system/mqueue-ownership.socket
|
||
|
[Unit]
|
||
|
Description=Create a message queue with customized ownership
|
||
|
[Socket]
|
||
|
ListenMessageQueue=/${queue#/}
|
||
|
RemoveOnStop=true
|
||
|
SocketUser=$user
|
||
|
SocketGroup=$group
|
||
|
SocketMode=$mode
|
||
|
EOF
|
||
|
|
||
|
cat << 'EOF' > /run/systemd/system/mqueue-ownership.service
|
||
|
[Unit]
|
||
|
Description=Dummy service for the socket unit
|
||
|
Requires=%N.socket
|
||
|
[Service]
|
||
|
ExecStart=/usr/bin/true
|
||
|
Type=oneshot
|
||
|
EOF
|
||
|
|
||
|
systemctl daemon-reload
|
||
|
systemctl start mqueue-ownership.socket
|
||
|
|
||
|
systemctl start dev-mqueue.mount # Ensure this file path interface is mounted.
|
||
|
[[ $(stat -c '%04a %U %G' "/dev/mqueue/${queue#/}") == "$mode $user $group" ]]
|