Schalte den Bildschirm in 14.04 ohne "gnome-screenaver-command" frei

10

Ich habe blueproximity in 13.10 gerne verwendet, aber seit dem Upgrade auf 14.04 wird es nur gesperrt, wenn sich mein Telefon außerhalb der Reichweite befindet (mit gnome-screensaver-command -l), aber es wird nicht mit entsperrt gnome-screensaver-command -d.

Der Grund, gnome-screensaver-command -dder nicht funktioniert, ist ein Fehler .

In diesem Fehlerbericht wird jedoch erwähnt, dass der Gnome-Bildschirmschoner nicht mehr in Trusty verwendet wird und daher das Auslaufen gnome-screensaver-commanderwartet wird, was auch damit zusammenhängen könnte, warum der Befehl nicht funktioniert.

Meine Frage ist also, wenn der Gnome-Bildschirmschoner ersetzt wird, was wäre dann der neue Befehl, um den Bildschirm zu entsperren, ohne sich darauf zu verlassen gnome-screensaver-command?

d_inevitable
quelle
@Braiam Diese Frage ist spezifisch für 14.04 und höher. Warum haben Sie das Tag entfernt? Es gibt keinen Grund, die Verwendung gnome-screensaver-commandin früheren Versionen zu vermeiden !
d_inevitable
Sie selbst antworteten: 14.04 und später . 14.04 sollte nur verwendet werden, wenn dies die einzige betroffene Version ist, was seit 14.10 nicht mehr der Fall ist. Übrigens, fragen Sie nicht nach Fehlern.
Braiam
@Braiam 1. Ich weiß es später nicht !! Wie kann ich? Es gibt noch keine spätere Version. Ab sofort ist es erst 14.04. Und ich habe nicht nach Fehlern gefragt. Wenn es Ihnen nichts ausmacht, werde ich Ihre Bearbeitung zurücksetzen.
d_inevitable
Ernsthaft? cdimage.ubuntu.com/daily-live/current probieren Sie es aus.
Braiam
1
@Braiam das ist keine Veröffentlichung.
d_inevitable

Antworten:

6

Das hat bei mir funktioniert:

In der Befehlszeile:

gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true

Die Bildschirmtastatur wird bei der ersten Anmeldung angezeigt, Sie können sie jedoch schließen.

Danach gnome-screensaver-command -dfunktioniert.

Entnommen aus benshayden unter https://bugs.launchpad.net/ubuntu/+source/gnome-screensaver/+bug/1307163

Toby Abel
quelle
Dies sollte viel höher bewertet werden als die anderen Antworten. Sie sollten Ihr Passwort nicht in diese Skripte eintragen, das ist wirklich schlecht!
Patrick Cornelissen
3

Leider gibt es keine Möglichkeit dazu :(

Update - Ich habe einen Weg gefunden. Schauen Sie sich meine neuere Antwort an

Dies ist meine vorherige Lösung. Die Verwendung ist nicht ratsam. Sie kann nicht entsperrt werden, wenn Sie Ihr Telefon verlieren. Sie müssen neu starten, um es zu entsperren

Ich habe schließlich eine Lösung gefunden - sperren Sie sie nicht an erster Stelle. Dies mag seltsam klingen.

Anstatt es zu sperren, habe ich Maus und Tastatur deaktiviert, alle Desktopsymbole ausgeblendet und dann zum Desktop gewechselt. Sie könnten möglicherweise mehr Sachen verstecken (wie den Launcher), aber ich habe das trotzdem versteckt.

Dieser Befehl erfordert einige Einstellungen.

Installieren Sie: xdotool - sudo apt-get install xdotool

Geben Sie ein: xinput --listund notieren Sie sich Ihre Maus- und Tastatur-IDs.

Ich würde vorschlagen, diese Befehle in zu bearbeiten gedit

Dieser fungiert als Schließfach.

xinput set-prop <Keyboard ID> 'Device Enabled' 0 && xinput set-prop <Mouse ID> 'Device Enabled' 0 && gsettings set org.gnome.desktop.background show-desktop-icons false && wmctrl -k on

Dies dient als Entsperrung.

xinput set-prop <Keyboard ID> 'Device Enabled' 1 && xinput set-prop <Mouse ID> 'Device Enabled' 1 && gsettings set org.gnome.desktop.background show-desktop-icons true && wmctrl -k off

Ändern Sie in beiden Befehlen das und in die entsprechende Nummer.

Damit dies:

  • Deaktiviert / Aktiviert die Tastatur
  • Deaktiviert / Aktiviert die Maus
  • Blendet alle Desktop-Symbole aus / ein
  • Schaltet die Anzeige Ihres Desktops um.

Eine wichtige Sache zu beachten - dies kann nicht ohne Ihr Bluetooth-Gerät rückgängig gemacht werden. Wenn es aus irgendeinem Grund fehlschlägt, müssen Sie neu starten. Aus diesem Grund kann es ratsam sein, die Tastatur aktiviert zu lassen und den Entsperrbefehl für eine ausgewählte Verknüpfung einzurichten.

Tim
quelle
Hey schöne Idee! Wäre es möglich, dies so zu ändern, dass Tastatureingaben stattdessen den Bildschirm sperren (wodurch die Möglichkeit besteht, ihn ohne das Bluetooth-Gerät zu entsperren), anstatt alle Tastatureingaben zu ignorieren?
d_inevitable
Das ist sogar noch besser! Ich wollte gerade eine andere Idee posten, aber ich werde daran arbeiten!
Tim
@d_inevitable Schau dir meine neue Antwort an, sie ist ordentlicher (besonders die 2. Methode). Ich bin mir ziemlich sicher, dass es funktioniert.
Tim
1

Also dachte ich mir, der "beste" Weg, dies zu tun (apokryphisch, da wir immer noch ein Passwort speichern und es fälschlicherweise in etwas eingeben ), wäre, wie ich oben kommentiert habe, das Passwort für den USB-Eintrag zu verschlüsseln . Es ist ein wenig chaotisch in einem Skript, also werde ich erklären, was los ist.

Die Geräte für den aktuellen Benutzer werden aufgelistet, indem Sie /etc/pamusb.conf mit xpath durchsuchen. Jeder wird dann mit seiner UUID unter Verwendung von xpath verbunden, und die UUID wird mit blkid einem Gerät zugeordnet.

Sie haben die Wahl, das Show-Gerät zu sperren, zu entsperren oder Ihren Schlüssel einzurichten. Wenn Sie das Setup ausführen, wird ~ / .ssh / pamusb_rsa erstellt, wenn es nicht vorhanden ist. Sie werden dann aufgefordert, ein Gerät auszuwählen (oder nicht, wenn es nur eines gibt) und Ihr Passwort einzugeben. Ihr PW wird verschlüsselt in {device} /. Pamusb / .auth gespeichert.

Wenn Sie entsperren ausführen, werden die Geräte erneut aufgelistet und nacheinander auf eine Datei /.pamusb/.auth überprüft. Wenn jemand entdeckt wird, wird versucht, ihn zu entschlüsseln, und wenn er erfolgreich ist, wird er verwendet, um Ihr Passwort in das einzugeben, was gerade Text akzeptiert. Es kann nur ausgeführt werden, wenn die Sitzung gesperrt ist. Hoffentlich werden Sie dadurch nicht zu sehr entlarvt.

Ich habe diese ~ / .bin / Unity-Lock-Steuerung (~ / .bin ist auf meinem Pfad) genannt und habe "Unity-Lock-Control Lock" und "Unity-Lock-Control Unlock" als meine Agenten in pam.conf .

#!/bin/bash
PAM_KEY=${HOME}/.ssh/pamusb_rsa
devices() {
    local NAMES NAME UUID DEV
    NAMES=$(xmllint /etc/pamusb.conf --xpath '//user[@id="'$USER'"]/device')
    NAMES=${NAMES//"<device>"/""}
    NAMES=${NAMES//'</device>'/' '}
    for NAME in $NAMES; do
        UUID=$(xmllint /etc/pamusb.conf --xpath '//device[@id="'$NAME'"]/volume_uuid/text()')
        DEV=$(blkid -U $UUID)
        if [[ -n $DEV ]]; then
            echo ${NAME}:${UUID}:${DEV}
        fi
    done
}
locked() {
    LS=$(ps -A -o cmd | grep 'unity-panel-service --lockscreen-mode' | grep -v grep)
    if [[ -z $LS ]]; then
        return -1
    else
        return 0
    fi
}
mounted() {
    MOUNTED=$(grep $1 /proc/mounts)
    if [[ -z $MOUNTED ]]; then
        return -1
    fi
    return 0
}
mount_point() {
    cat /proc/mounts | grep $1 | cut -d \  -f 2
}
case "$1" in
    devices)
        devices
        exit 0
    ;;
    lock)
        setsid paplay /usr/share/sounds/ubuntu/stereo/service-logout.ogg &
        setsid gnome-screensaver-command -l &
        sleep 1
        exit
    ;;
    unlock)
        if ! locked; then
            echo "Screen is not locked" >&2
            exit 1
        fi
        if [[ ! -f $PAM_KEY ]]; then
            echo "${PAM_KEY} does not exist; please run $0 setup." >&2
            exit 1
        fi

        DEVICES=$(devices)
        for device in $DEVICES; do
            NAME=$(echo $device | cut -d : -f 1)
            UUID=$(echo $device | cut -d : -f 2)
            DEV=$(echo $device | cut -d : -f 3)
            mounted $DEV
            MOUNTED=$?
            if [[ $MOUNTED -ne 0 ]]; then
                udisksctl mount -b $DEV
            fi
            AUTH_FILE=$(mount_point $DEV)/.pamusb/.auth
            if [[ -f $AUTH_FILE ]]; then
                PASS=$(openssl rsautl -decrypt -inkey $PAM_KEY -in $AUTH_FILE)
            fi
            if [[ $MOUNTED -ne 0 ]]; then
                udisksctl unmount -b $DEV
            fi
            if [[ -n $PASS ]]; then
                xdotool type --delay 0 "${PASS}" 
                xdotool key Return
                sleep 1
                if locked; then
                    setsid paplay /usr/share/sounds/ubuntu/stereo/service-login.ogg &
                else
                    setsid paplay /usr/share/sounds/ubuntu/stereo/dialog-warning.ogg &
                fi
                exit 0
            fi
        done
        echo "Did not find unlock key" >&2
        exit 1
    ;;
    setup)
        echo "This will set up an OpenSSL key, and encrypt your password to be stored"
        echo "on a pamusb authenticator."
        echo "-----"
        if [[ ! -d ${HOME}/.ecryptfs || ! -d ${HOME}/.Private ]]; then
            echo "Warning: Home folder is NOT encrypted" >&2
            read -p "Continue (y/N):" conf
            if [[ -z $conf ]]; then exit 1; fi
            if [[ $conf == "n" || $conf == "N" ]]; then exit 1; fi
        fi
        mkdir -p $(dirname $PAM_KEY)
        if [[ ! -f $PAM_KEY ]]; then
            openssl genrsa -out $PAM_KEY 1024
        fi
        DEVICES=$(devices)
        if [[ "${#DEVICES[@]}" -eq 1 ]]; then
            device="${DEVICES[0]}"
        else
            echo "Please select the device you would like to contain your encrypted password"       
            for i in "${!DEVICES[@]}"; do
                echo "$i: ${DEVICES[$i]}"
            done
            read selection
            device="${DEVICES[$selection]}"
        fi
        NAME=$(echo $device | cut -d : -f 1)
        UUID=$(echo $device | cut -d : -f 2)
        DEV=$(echo $device | cut -d : -f 3)

        mounted $DEV
        MOUNTED=$?
        if [[ $MOUNTED -ne 0 ]]; then
            echo "${NAME} is not mounted; attempting mount"
            udisksctl mount -b $DEV
        fi
        AUTH_FILE=$(mount_point $DEV)/.pamusb/.auth
        if [[ -f $AUTH_FILE ]]; then
            echo "Storing encrypted password to ${DEVICES[0]}"
            read -sp "Please enter your UNIX password:" PASS
            echo ""
            echo $PASS | openssl rsautl -encrypt -inkey $PAM_KEY -out $AUTH_FILE
        fi
        if [[ $MOUNTED -ne 0 ]]; then
            echo "${NAME} was not mounted; unmounting"
            udisksctl unmount -b $DEV
        fi
        exit 0
    ;;
    *)
        echo "Control for lock screen"
        echo $0 '{start|stop|devices|setup}'
        exit 1
    ;;
esac
Fordi
quelle
0

Aktualisieren! Es gibt eine Möglichkeit, den normalen Sperrbildschirm zu verwenden! Yay!

Ich weiß nicht, wie sicher es ist (Speichern Ihres Passworts im Klartext), aber ich denke, es ist das bestmögliche.

Dies ist der Sperrbefehl: gnome-screensaver -d

Es gibt 2 Entsperrbefehle:

Nr. 1:

Dies ist der erste Entsperrbefehl:

gnome-screensaver -d && xdotool type mypassword12 && xdotool key Return

Der Klick dient zum Aufwecken (er sollte wegen der Mausbewegung in das Anmeldefeld klicken) und zeigt den schönen neuen Sperrbildschirm anstelle des schwarzen Bildschirms "Schlaf".

Dann tippt es mypassword123!mit einer Eingabe in das Textfeld, um es zu senden.

Wichtig. Aus irgendeinem Grund - wahrscheinlich aufgrund dessen, wofür xdotool eigentlich verwendet werden soll (Tastaturkürzel) - können Sie keine Doppelbuchstaben eingeben. Um dies zu umgehen, teilen Sie es bei jedem Doppelbuchstaben in zwei Befehle auf (wie oben). Außerdem müssen Zahlen einen eigenen, von Buchstaben getrennten Befehl haben (ebenfalls oben). Schließlich benötigen Modifikatoren (z. B. Shift) einen separaten Modifikator, ebenso wie die Eingabetaste.


Nr. 2:

Dies ist der zweite. Es ist ein bisschen besser und weniger hackisch, erfordert aber viel Einrichtung.

Installieren Sie zuerst actionaz:

sudo apt-get install actionaz

Öffnen Sie ein neues Skript und ziehen Sie die richtigen Elemente in Ihren Flow. (Sie können das fertige hier herunterladen . Wenn Sie es herunterladen möchten, öffnen Sie es, doppelklicken Sie auf Text schreiben - Passwort hier und geben Sie Ihr Passwort ein.)

  1. Pause: Geben Sie 3 Sekunden ein.
  2. Klicken Sie auf: Kopieren und Einfügen 165:555in das Feld Position. (Abhängig von der Bildschirmseite kann dies unterschiedlich sein. Stellen Sie sicher, dass in das Kennwortfeld geklickt wird, da es sonst nicht funktioniert.)
  3. Text schreiben: Geben Sie Ihr Passwort in das Feld ein
  4. Taste: Klicken Sie in das Feld und drücken Sie die Eingabetaste

Speichern Sie es in Ihrem Home-Ordner als entsperren.ascr (oder einen beliebigen Namen - ich wollte nur nicht bekannt geben, dass mein Passwort darin enthalten ist)

Richten Sie Ihren Näherungsbefehl wie folgt ein:

xdotool mousemove 0 0 && actionaz unlock.ascr -ex

Die Mausbewegung weckt es auf und die Optionen weisen es an, das Skript auszuführen und am Ende zu beenden.


Wenn Sie Ihr Gerät verlieren, können Sie immer nur Ihr Passwort eingeben, damit es umkehrbar ist.

Tim
quelle
2
Hey, das sieht ziemlich gut aus, aber leider ist das Speichern des Passworts in sauberem Text keine Option. Es ist fast so schlecht, alles in root auszuführen, wie mein Benutzer auf der Sudoers-Liste steht. Aber ich denke, eine Kombination Ihrer beiden Antworten würde funktionieren. Ich werde etwas ausprobieren, sobald ich kann. Dimmen Sie den Bildschirm grundsätzlich ab, bis sich die Maus bewegt, eine Taste gedrückt wird oder das Bluetooth-Gerät wieder in Reichweite ist. Wenn sich die Maus bewegt oder die Taste gedrückt wird, schalten Sie den Bildschirm wieder ein und führen Sie ihn aus, gnome-screensaver-command -ldamit ein Passwort eingegeben werden kann, während das Bluetooth-Gerät fehlt. Ich denke, es sollte machbar sein.
d_inevitable
Ich habe mir schnell die Option 'Maus bewegen' angesehen ... Ich dachte, dass xev das könnte? Sie könnten festlegen, dass sich die Maus über das xev-Fenster bewegt, und wenn sich die Ausgabe ändert, wissen Sie, dass etwas vorhanden ist passierte.
Tim
Stimmen Sie zu, das Speichern von Passwörtern im Klartext ist ziemlich schlecht. Wenn Ihr Homedir verschlüsselt ist - wie ich denke, ist dies jetzt die Standardeinstellung in Ubuntu - würde es allerdings etwas weniger schlimm werden. Ich habe ein bisschen damit herumgespielt und finde Lösung Nr. 1 viel einfacher und halte das nicht wirklich für so hackig. Eine kleine Änderung vorgenommen. Anstelle der Mausbewegung habe ich eingefügt, gnome-screensaver -dda dies den Bildschirm immer noch aufweckt und es mir ermöglicht, eine viel kürzere zu haben sleep(ich habe sie jetzt auf 0,1 eingestellt, frage mich aber, ob sie überhaupt benötigt wird)
Wouter Van Vliet
Ich dachte, ich könnte eine Datei mit meinem Passwort auf den Schlüssel schreiben, die mit meinem Schlüssel aus .ssh / id_rsa verschlüsselt wurde, und ein Skript schreiben, um es zu entschlüsseln und zur Anmeldung einzugeben. Ich werde Sie wissen lassen, ob ich Erfolg habe.
Fordi