Sandbox the systemd unit: DynamicUser, read-only FS, no capabilities
The Linux install now mirrors the Windows virtual-account hardening: the unit runs with DynamicUser=yes (transient per-service UID, no login), ProtectSystem=strict with only StateDirectory writable (the install dir, so self-update can rewrite the binary), NoNewPrivileges, empty capability sets, restricted address families and a @system-service syscall filter. Install copies the binary to /var/lib/gpu-turnstile and the config to /etc/gpu-turnstile.env; Remove cleans up the unit and binary but keeps the config.
This commit is contained in:
@@ -127,9 +127,13 @@ gpu-turnstile --remove-service
|
||||
The unit (`/etc/systemd/system/gpu-turnstile.service`) is `Type=notify`:
|
||||
`systemctl start` blocks until the listeners are actually bound, a 30 s
|
||||
watchdog restarts the process if it wedges, and logs land in the journal
|
||||
(`journalctl -u gpu-turnstile -f`) unless `LOG_FILE` is set. Put the
|
||||
config in a `gpu-turnstile.env` next to the binary (or pass
|
||||
`-config /path` during install). The notify integration is a no-op in
|
||||
(`journalctl -u gpu-turnstile -f`) unless `LOG_FILE` is set. Install
|
||||
copies the binary to `/var/lib/gpu-turnstile/` and the config to
|
||||
`/etc/gpu-turnstile.env` (edit that one after installing). The service
|
||||
runs sandboxed with `DynamicUser=yes` — a transient low-privilege UID,
|
||||
read-only filesystem except its install dir (so self-update keeps
|
||||
working), no capabilities, syscall-filtered: same least-privilege idea as
|
||||
the Windows virtual account. The notify integration is a no-op in
|
||||
containers and interactive shells.
|
||||
|
||||
**Auto-update is on by default**: the binary checks the repo's latest
|
||||
|
||||
Reference in New Issue
Block a user