Skip to content

Instantly share code, notes, and snippets.

@kazken3
Forked from jhass/1-Yubikey_session_lock.md
Last active May 7, 2019 13:17
Show Gist options
  • Save kazken3/17c173d6d6c00bcee3e43fb08d5f7dae to your computer and use it in GitHub Desktop.
Save kazken3/17c173d6d6c00bcee3e43fb08d5f7dae to your computer and use it in GitHub Desktop.
Lock (Gnome) session when removeing solokeys key

Setup

  1. Make rescue method for solokeys broken.(Recommend)
  2. Copy 70-solokeys-access.rules to /etc/udev/rules.d.
  3. Reload udev: sudo udevadm control --reload-rules && sudo udevadm trigger
  4. Exec sudo apt install pamu2fcfg libpam-u2f
  5. Exec mkdir ~/.config/Yubico && pamu2fcfg > ~/.config/Yubico/u2f_keys then push solokeys.
  6. Add pam method /etc/pam.d/sudo , /etc/pam.d/gdm-password and so on.
  7. Copy gnome_lock_all_sessions to /usr/local/bin.
  8. Mark gnome_lock_all_sessions as executable: chmod +x /usr/local/bin/gnome_lock_all_sessions
  9. Reload udev: sudo udevadm control --reload-rules && sudo udevadm trigger
ACTION=="add", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="a2ca", ATTRS{product}=="Solo*", TAG+="uaccess", GROUP="plugdev", KERNEL=="hidraw*", SUBSYSTEM=="hidraw"
ACTION=="remove", SUBSYSTEM=="usb", ENV{PRODUCT}=="483/a2ca/100", RUN+="/usr/local/bin/gnome_lock_all_sessions"
#!/bin/sh
for bus in /run/user/*/bus; do
uid=$(basename $(dirname $bus))
if [ $uid -ge 1000 ]; then
user=$(id -un $uid)
export DBUS_SESSION_BUS_ADDRESS=unix:path=$bus
if su -c 'dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames' $user | grep org.gnome.ScreenSaver; then
su -c 'dbus-send --session --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock' $user
su -c 'logger "Secure key removed."'
fi
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment