mirror of
https://github.com/BetterCorp/BetterFrame.git
synced 2026-05-26 16:56:33 +00:00
feat(kiosk): harden field image defaults
This commit is contained in:
parent
87cde93316
commit
08568e52fa
4 changed files with 25 additions and 1 deletions
4
.github/workflows/build.yml
vendored
4
.github/workflows/build.yml
vendored
|
|
@ -174,6 +174,8 @@ jobs:
|
||||||
deploy/pi-gen/stage-betterframe-client/01-install-kiosk/files/
|
deploy/pi-gen/stage-betterframe-client/01-install-kiosk/files/
|
||||||
cp deploy/tmpfiles/betterframe-kiosk.conf \
|
cp deploy/tmpfiles/betterframe-kiosk.conf \
|
||||||
deploy/pi-gen/stage-betterframe-client/01-install-kiosk/files/
|
deploy/pi-gen/stage-betterframe-client/01-install-kiosk/files/
|
||||||
|
cp deploy/udev/90-betterframe-no-hid.rules \
|
||||||
|
deploy/pi-gen/stage-betterframe-client/01-install-kiosk/files/
|
||||||
cp deploy/pam.d/cage \
|
cp deploy/pam.d/cage \
|
||||||
deploy/pi-gen/stage-betterframe-client/01-install-kiosk/files/cage.pam
|
deploy/pi-gen/stage-betterframe-client/01-install-kiosk/files/cage.pam
|
||||||
cp deploy/plymouth/betterframe/betterframe.plymouth \
|
cp deploy/plymouth/betterframe/betterframe.plymouth \
|
||||||
|
|
@ -191,7 +193,7 @@ jobs:
|
||||||
image-name: betterframe-client-${{ inputs.version }}
|
image-name: betterframe-client-${{ inputs.version }}
|
||||||
stage-list: stage0 stage1 stage2 ./deploy/pi-gen/stage-betterframe-client
|
stage-list: stage0 stage1 stage2 ./deploy/pi-gen/stage-betterframe-client
|
||||||
# pi-gen default release is trixie (Debian 13).
|
# pi-gen default release is trixie (Debian 13).
|
||||||
enable-ssh: 1
|
enable-ssh: 0
|
||||||
username: bfadmin
|
username: bfadmin
|
||||||
password: betterframe
|
password: betterframe
|
||||||
locale: en_US.UTF-8
|
locale: en_US.UTF-8
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,8 @@ install -m 755 /tmp/bf-files/betterframe-rauc-mark-good.sh \
|
||||||
/usr/local/sbin/betterframe-rauc-mark-good.sh
|
/usr/local/sbin/betterframe-rauc-mark-good.sh
|
||||||
install -d -m 755 /etc/tmpfiles.d
|
install -d -m 755 /etc/tmpfiles.d
|
||||||
install -m 644 /tmp/bf-files/betterframe-kiosk.conf /etc/tmpfiles.d/betterframe-kiosk.conf
|
install -m 644 /tmp/bf-files/betterframe-kiosk.conf /etc/tmpfiles.d/betterframe-kiosk.conf
|
||||||
|
install -d -m 755 /etc/udev/rules.d
|
||||||
|
install -m 644 /tmp/bf-files/90-betterframe-no-hid.rules /etc/udev/rules.d/90-betterframe-no-hid.rules
|
||||||
|
|
||||||
# Default env file — operator may edit on first boot to point at their server.
|
# Default env file — operator may edit on first boot to point at their server.
|
||||||
cat > /etc/default/betterframe-kiosk <<'EOF'
|
cat > /etc/default/betterframe-kiosk <<'EOF'
|
||||||
|
|
@ -56,6 +58,11 @@ for dm in lightdm gdm gdm3 sddm; do
|
||||||
systemctl mask "${dm}.service" 2>/dev/null || true
|
systemctl mask "${dm}.service" 2>/dev/null || true
|
||||||
done
|
done
|
||||||
systemctl disable getty@tty1.service 2>/dev/null || true
|
systemctl disable getty@tty1.service 2>/dev/null || true
|
||||||
|
systemctl mask getty@tty1.service ctrl-alt-del.target 2>/dev/null || true
|
||||||
|
systemctl disable ssh.service ssh.socket 2>/dev/null || true
|
||||||
|
systemctl mask ssh.service ssh.socket 2>/dev/null || true
|
||||||
|
systemctl disable bluetooth.service hciuart.service 2>/dev/null || true
|
||||||
|
systemctl mask bluetooth.service hciuart.service 2>/dev/null || true
|
||||||
|
|
||||||
# piwiz first-run wizard + userconf-pi → out.
|
# piwiz first-run wizard + userconf-pi → out.
|
||||||
apt-get -y purge piwiz userconf-pi 2>/dev/null || true
|
apt-get -y purge piwiz userconf-pi 2>/dev/null || true
|
||||||
|
|
|
||||||
|
|
@ -216,6 +216,11 @@ if [ "${INSTALL_KIOSK}" = "1" ]; then
|
||||||
done
|
done
|
||||||
systemctl set-default multi-user.target
|
systemctl set-default multi-user.target
|
||||||
systemctl disable --now getty@tty1.service 2>/dev/null || true
|
systemctl disable --now getty@tty1.service 2>/dev/null || true
|
||||||
|
systemctl mask getty@tty1.service ctrl-alt-del.target 2>/dev/null || true
|
||||||
|
systemctl disable --now ssh.service ssh.socket 2>/dev/null || true
|
||||||
|
systemctl mask ssh.service ssh.socket 2>/dev/null || true
|
||||||
|
systemctl disable --now bluetooth.service hciuart.service 2>/dev/null || true
|
||||||
|
systemctl mask bluetooth.service hciuart.service 2>/dev/null || true
|
||||||
|
|
||||||
# piwiz = "Welcome to Raspberry Pi" first-run wizard. userconf-pi runs at
|
# piwiz = "Welcome to Raspberry Pi" first-run wizard. userconf-pi runs at
|
||||||
# first boot if no user is configured. Purge both so they can't fire.
|
# first boot if no user is configured. Purge both so they can't fire.
|
||||||
|
|
@ -242,6 +247,9 @@ if [ "${INSTALL_KIOSK}" = "1" ]; then
|
||||||
install -d -m 755 /etc/tmpfiles.d
|
install -d -m 755 /etc/tmpfiles.d
|
||||||
install -m 644 "${REPO_ROOT}/deploy/tmpfiles/betterframe-kiosk.conf" \
|
install -m 644 "${REPO_ROOT}/deploy/tmpfiles/betterframe-kiosk.conf" \
|
||||||
/etc/tmpfiles.d/betterframe-kiosk.conf
|
/etc/tmpfiles.d/betterframe-kiosk.conf
|
||||||
|
install -d -m 755 /etc/udev/rules.d
|
||||||
|
install -m 644 "${REPO_ROOT}/deploy/udev/90-betterframe-no-hid.rules" \
|
||||||
|
/etc/udev/rules.d/90-betterframe-no-hid.rules
|
||||||
|
|
||||||
if [ ! -e /etc/default/betterframe-kiosk ]; then
|
if [ ! -e /etc/default/betterframe-kiosk ]; then
|
||||||
cat > /etc/default/betterframe-kiosk <<'EOF'
|
cat > /etc/default/betterframe-kiosk <<'EOF'
|
||||||
|
|
|
||||||
7
deploy/udev/90-betterframe-no-hid.rules
Normal file
7
deploy/udev/90-betterframe-no-hid.rules
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# BetterFrame field kiosks are appliances, not interactive desktops.
|
||||||
|
# Block userspace access to keyboard/mouse event devices by default. Future
|
||||||
|
# controlled input should arrive as authenticated high-level kiosk commands,
|
||||||
|
# not raw HID events.
|
||||||
|
KERNEL=="event*", ENV{ID_INPUT_KEYBOARD}=="1", MODE="0000", GROUP="root"
|
||||||
|
KERNEL=="event*", ENV{ID_INPUT_MOUSE}=="1", MODE="0000", GROUP="root"
|
||||||
|
KERNEL=="event*", ENV{ID_INPUT_TOUCHPAD}=="1", MODE="0000", GROUP="root"
|
||||||
Loading…
Reference in a new issue