it-swarm.com.de

Wie tippe ich über die Befehlszeile in den lightdm-Anmeldebildschirm ein?

Ich habe einen Computer mit großen Festplatten, die mit verschlüsseltem Heim konfiguriert sind. Es ist so, dass derselbe Computer auch das Haupt-Kodi Media Center meiner Familie funktioniert. Jedes Mal, wenn meine Kinder einen Film sehen möchten, muss ich ihn einschalten, eine Tastatur physikalisch daran anschließen und das Passwort eingeben.

Ich würde gerne in der Lage sein, dies aus der Ferne zu tun.

Natürlich habe ich auch einen root-Zugang zum Computer.

Ich bin nicht bereit, einen anderen Benutzernamen mit automatischer Anmeldung zu erstellen, da die meisten Mediendateien verschlüsselt sind und ich möchte, dass dies auch so bleibt.

Die normale Kombination von export DISPLAY=0: und source discover_session_bus_addres.sh und xdotool type my_secret_password, die zum Eingeben in den Sperrbildschirm verwendet wird, funktioniert bei lightm nicht.

3
Adam Ryczkowski

Hier ist eine Antwort, die unter Ubuntu 16.04 mit lightdm funktioniert:

  1. Machen Sie sich root, um Zugriff auf den .Xauthority des lightdm zu erhalten, der sich unter /var/lib/lightdm/.Xauthority befindet. Kopieren Sie es entweder an eine Stelle, an der es von Ihnen gelesen werden kann, und löschen Sie Ihre Root-Berechtigungen, oder bleiben Sie einfach root.
  2. setze XAUTHORITY so, dass es auf diese Datei zeigt (z. B. export XAUTHORITY=/var/lib/lightdm/.Xauthority)
  3. setze DISPLAY auf das aktive Display (export DISPLAY=:0)
  4. xdotool sollte jetzt funktionieren. Versuchen

    xdotool type "My super secret password"  
    xdotool key Return
    
5
Adam Ryczkowski

Hier ist die Problemumgehung, die ich verwende. Es ist hässlich und unhöflich, aber dieser Ansatz funktioniert auch innerhalb von Wayland und GDM (Ubuntu 17.10), wenn die Option für die automatische Anmeldung überhaupt funktioniert.

#!/bin/bash

# NAME: lightdm-auto-login

main() {
    # If the file '/etc/lightdm/lightdm.conf' exists create a backup copy
    [[ -f /etc/lightdm/lightdm.conf ]] && mv /etc/lightdm/lightdm.conf{,.bak}

    # Create autologin configuration for the current $USER = $1
    echo -e "[Seat:*]\nautologin-user=$1" > /etc/lightdm/lightdm.conf

    # Restart 'lightdm' while autologin option is enabled
    systemctl restart lightdm.service

    # Wait for a moment to complete the login process and remove the conf file
    sleep 30 && rm /etc/lightdm/lightdm.conf

    # Restore the backup if exists
    [[ -f /etc/lightdm/lightdm.conf.bak ]] && mv /etc/lightdm/lightdm.conf{.bak,}
}

# Execute the 'main()' function with root privileges in the background 'Sudo -b'
# Pass the curent $USER as arg (https://unix.stackexchange.com/a/269080/201297)
Sudo -b bash -c "$(declare -f main); main $USER"
  • Das Skript sollte als normaler Benutzer ausgeführt werden (der zur Gruppe sudoers gehört).

  • Das Skript erstellt eine Sicherungskopie der Datei /etc/lightdm/lightdm.conf. Anschließend wird eine neue Konfigurationsdatei mit der Option für die automatische Anmeldung generiert, die für den aktuellen Benutzer aktiviert ist. Zu diesem Zeitpunkt wird lightdm neu gestartet, und der Benutzer wird mit der automatischen Anmeldeoption angemeldet. Schließlich wird die benutzerdefinierte Konfiguration entfernt und der ursprüngliche Status der Konfigurationsdatei wiederhergestellt.

  • Wenn GDM verwendet wird: Der neu zu startende Dienst ist gdm3.service und die zu ändernde Konfigurationsdatei ist /etc/gdm3/custom.conf.

1
pa4080

Das funktioniert gut bei mir (von ssh, mit lightdm):

$ XAUTHORITY=/var/lib/lightdm/.Xauthority DISPLAY=:0.0 Sudo sh -c 'xdotool type "My Password" && xdotool key Return'
0
pascalv