mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-08 11:16:47 +00:00
webvirt-novncd and webvirt-socketiod get read-only system directories, no access to /home and /root, no new privileges, no kernel tunables, modules or cgroups, and only Unix, IPv4 and IPv6 sockets; socketiod also a private /tmp. novncd keeps the shared /tmp, where a VM's VNC Unix socket may be. They keep what they need: a pty and its console worker, TCP and Unix sockets, ssh with its configuration, writes under /srv/webvirtcloud and the service user's ~/.ssh. The units installed by the update steps bring this.
30 lines
902 B
Desktop File
30 lines
902 B
Desktop File
[Unit]
|
|
Description=WebVirtCloud serial console (socketiod; refuses connections unless SERIAL_CONSOLE_ENABLED)
|
|
Wants=network-online.target
|
|
After=network-online.target
|
|
|
|
[Service]
|
|
User=www-data
|
|
Group=www-data
|
|
WorkingDirectory=/srv/webvirtcloud
|
|
EnvironmentFile=-/etc/default/webvirtcloud
|
|
ExecStart=/srv/webvirtcloud/venv/bin/python3 /srv/webvirtcloud/console/socketiod
|
|
# gunicorn stops its worker itself; the consoles end with their ptys
|
|
KillMode=mixed
|
|
Restart=on-failure
|
|
RestartSec=10
|
|
# Sandbox: what the console daemons need (a pty and its worker, TCP and
|
|
# Unix sockets, ssh, writes under /srv and the user's ~/.ssh) and no more
|
|
NoNewPrivileges=yes
|
|
PrivateTmp=yes
|
|
ProtectSystem=full
|
|
ProtectHome=yes
|
|
ProtectKernelTunables=yes
|
|
ProtectKernelModules=yes
|
|
ProtectControlGroups=yes
|
|
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
|
|
RestrictSUIDSGID=yes
|
|
LockPersonality=yes
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|