14.04'te `` gnome-screensaver-command '' olmadan ekran kilidini açın


10

13.10'da blueproximity kullanıyorum, ancak 14.04'e yükseltme yaptığımdan beri sadece telefonumun menzili dışına çıktığında kilitleniyor (kullanarak gnome-screensaver-command -l), ancak kilidini açmıyor gnome-screensaver-command -d.

Şimdi gnome-screensaver-command -dişe yaramamanın nedeni bir hata yüzünden .

Ancak bu hata raporunda, gnome-screensaver'ın artık güvenilir olarak kullanılmadığı ve bu nedenle gnome-screensaver-commandkomutun neden çalışmadığına bağlı olabileceği düşünülüyor.

Benim sorum şu, eğer gnome-ekran koruyucu değiştirilirse, o zaman güvenmeden ekran kilidini açmak için yeni komut ne olurdu gnome-screensaver-command?


@Braiam Bu soru 14.04 ve sonraki sürümlere özgüdür. Etiketi neden kaldırdınız? gnome-screensaver-commandÖnceki sürümlerde kullanmaktan kaçınmanın bir nedeni yoktur !
d_inevitable

Kendiniz cevap verdi: 14.04 ve sonrası . 14.04 yalnızca etkilenen tek sürüm ise kullanılmalıdır, 14.10 sürümünden bu yana doğru değildir. BTW, böcek hakkında sormayın.
Braiam

@ Braiam 1. Daha sonra bilmiyorum !! Nasıl yapabilirim? Henüz daha yeni bir sürüm yok. Şu an itibariyle sadece 14.04. Ve ben hatalar hakkında soru sormadım. Eğer sakıncası yoksa düzenlemenizi geri alacağım.
d_inevitable


1
@Braiam bu bir sürüm değil.
d_inevitable

Yanıtlar:


6

Bu benim için çalıştı:

Komut satırında:

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

İlk oturum açtığınızda ekran klavyesi görünür, ancak kapatabilirsiniz.

Bundan sonra gnome-screensaver-command -dçalışır.

Benshayden'den https://bugs.launchpad.net/ubuntu/+source/gnome-screensaver/+bug/1307163 adresinden alınmıştır.


Bu, diğer cevaplardan çok daha yüksek puan almalıdır. Bu komut dosyalarına şifrenizi yazmamalısınız, bu gerçekten kötü!
Patrick Cornelissen

3

Bunu maalesef yapmanın bir yolu yok :(

Güncelleme - Bir yol buldum. Yeni cevabımı kontrol et

Bu benim önceki çözümüm - Kullanılması tavsiye edilemez, telefonunuzu kaybederseniz kilitlenemez; kilidini açmak için yeniden başlatmalısın

Sonunda bir çözüm buldum - ilk etapta kilitlemeyin. Bu kulağa tuhaf gelebilir.

Kilitlemek yerine, Fare ve Klavyeyi devre dışı bıraktım, tüm masaüstü simgelerini sakladım ve masaüstüne geçtim. Muhtemelen daha fazla şey gizleyebilirsiniz (başlatıcı gibi) ama yine de sakladım.

Bu komut biraz kurulum gerektirir.

Kurulum: xdotool - sudo apt-get install xdotool

Girin: xinput --listve fare ve klavye kimliklerinizi not edin.

Bu komutları düzenlemeyi öneririm gedit

Bu bir dolap gibi davranır.

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

Bu kilit açma görevi görür.

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

Ve komutlarını her iki komutta ilgili sayılarıyla değiştirin.

Bunun için:

  • Klavyeyi Devre Dışı Bırakır / Etkinleştirir
  • Fareyi Devre Dışı Bırakır / Etkinleştirir
  • Tüm masaüstü simgelerinizi gizler / gösterir
  • Masaüstünüzü gösterme arasında geçiş yapar.

Akılda tutulması gereken önemli bir şey - bu, bluetooth cihazınız olmadan geri alınamaz. Herhangi bir nedenle başarısız olursa, yeniden başlatmanız gerekir. Bu nedenle, klavyeyi etkin durumda bırakmanız ve kilit açma komutunu seçilen bir kısayola ayarlamanız önerilir.


Hey güzel fikir! Tüm klavye girişlerini yoksaymak yerine herhangi bir klavye girişinin ekranı kilitleyeceği (bluetooth cihazı olmadan kilidini açma şansı verecek) şekilde değiştirmek mümkün müdür?
d_inevitable

Daha da iyi! Başka bir fikir yayınlamak üzereydim, ama bunun üzerinde çalışacağım!
Tim

@d_inevitable Yeni cevabıma bir göz atın, daha temiz (özellikle 2. yöntem). Eminim işe yarıyor.
Tim

1

Yani, bunu yapmanın "en iyi" yolunu anladım (apocryphal, çünkü hala bir şifre saklıyoruz ve şifreyi bir şeye yazarak taklit ediyoruz ), yukarıda yorumladığım gibi, şifreyi giriş USB anahtarına şifrelemek olacaktır . Bir senaryo biraz dağınık, bu yüzden neler olduğunu açıklayacağım.

Geçerli kullanıcı için cihazlar /etc/pamusb.conf ile xpath; her biri daha sonra xpath kullanılarak UUID'si ile eşleştirilir ve UUID, blkid kullanılarak bir aygıta eşlenir.

Kilitleme, gösteri aygıtının kilidini açma veya anahtarınızı ayarlama seçeneğiniz vardır. Kurulumu çalıştırdığınızda, yoksa ~ / .ssh / pamusb_rsa oluşturur. Daha sonra sizden bir cihaz seçmeniz (veya yalnızca bir tane varsa) seçmeniz ve şifrenizi girmeniz istenir. PW'niz {device} /. Pamusb / .auth dosyasında saklanacak, şifrelenecektir.

Kilidi açtığınızda, aygıtlar yeniden numaralandırılır ve /.pamusb/.auth dosyası için tek tek kontrol edilir. Biri tespit edildiğinde, şifre çözme denenir ve başarılı olursa, şifrenizi o anda metin kabul eden her şeye yazmak için kullanılır. Bu olacak sadece oturumu kilitlendiğinde, yani umarım bu size çok kötü açığa gitmiyor çalıştırmak izin verirler.

Bu ~ / .bin / unity-lock-control (~ / .bin benim yolumda) olarak adlandırdım ve pam.conf'daki aracılarım olarak "birlik-kilit-kontrol kilidi" ve "birlik-kilit-kontrol kilidini" var. .

#!/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

0

Güncelleme! Normal kilit ekranını kullanmanın bir yolu var! Yaşasın!

Ne kadar güvenli olduğunu bilmiyorum (şifrenizi düz metin olarak saklamak), ancak mümkün olan en iyi olduğunu düşünüyorum.

Bu kilit komutudur: gnome-screensaver -d

2 kilit açma komutu vardır:

No1:

Bu ilk kilit açma komutudur:

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

Tıklama, onu uyandırmak içindir (fare hareketinden dolayı giriş kutusunun içine tıklamalıdır) ve "uyku" siyah ekranı yerine güzel yeni kilit ekranını göstermektir.

Daha sonra mypassword123!metin kutusuna bir enter ile gönderilir.

Önemli. Bazı nedenlerden dolayı - muhtemelen xdotool'un aslında ne için kullanıldığı (klavye kısayolları) nedeniyle - çift harf giremezsiniz. Bu sorunu aşmak için, her bir çift harften 2 komuta bölün (yukarıdaki gibi). Ayrıca, sayıların harflerden ayrı, kendi komutlarına sahip olması gerekir (ayrıca yukarıda). Son olarak, değiştiriciler (shift gibi), Return tuşu gibi ayrı bir modele ihtiyaç duyar.


No2:

Bu ikincisi. Biraz daha iyi ve daha az hackish, ancak çok fazla kurulum gerektirir.

İlk önce actionaz'ı yükleyin:

sudo apt-get install actionaz

Yeni bir komut dosyası açın ve doğru öğeleri akışınıza sürükleyin. (eğer tamamlanmış indirebilirsiniz burada - burada Parola ve şifrenizi girin. Bunu indirmek için seçtiyseniz, açmak, çift Yaz yazısını tıklayın).

  1. Duraklat: 3 saniye girin.
  2. Şunu tıklatın: kopyalayıp 165:555Konum kutusuna yapıştırın . (Ekran tarafına bağlı olarak, bu farklı olabilir. Parola kutusuna tıkladığından emin olun, aksi takdirde çalışmaz).
  3. Metin yazma: kutuya şifrenizi girin
  4. Anahtar: Kutuyu tıklayın ve Return tuşuna basın

Unlock.ascr (veya herhangi bir ad olarak - şifremde olduğunu bildirmek istemedim) olarak ana klasörünüze kaydedin

Yakınlık komutunuzu şu şekilde ayarlayın:

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

Fare hareketi uyanır ve seçenekler komut dosyasını yürütmesini ve sonunda çıkmasını söyler.


Cihazınızı kaybederseniz, şifrenizi her zaman yazabilirsiniz, böylece geri dönüşümlüdür.


2
Hey, bu oldukça iyi görünüyor, ancak maalesef temiz metinde şifre saklamak bir seçenek değil. Benim kullanıcı sudoers listesinde olduğu gibi kökünde her şeyi çalışan neredeyse kötü. Ama bence iki cevabınızın bir kombinasyonu işe yarayacaktır. En kısa zamanda bir şey deneyeceğim. Temelde fare hareket edene, bir tuşa basılana veya bluetooth cihazı menzile dönene kadar ekranı karartın. Fare hareket eder veya tuşa basılırsa, ekranı açın gnome-screensaver-command -lve bluetooth cihazı yokken bir parola girilebilecek şekilde çalıştırın . Bence yapılabilir olmalı.
d_inevitable

Hızlı bir şekilde 'fare taşıma' seçeneğine baktım ... xev'in bunu yapabileceğini düşünüyordum? Farenin xev penceresinin üzerinde hareket etmesini ayarlayabilirsiniz ve çıktı değişirse, bir şeyin olmuş.
Tim

Kabul et, şifreyi düz metin olarak saklamak oldukça kötü. Evinizin şifrelenmiş olması - sanırım şimdi Ubuntu'da varsayılan - biraz daha az kötü hale getirecektir. Onunla biraz oynadım ve aslında # 1 çözümünü çok daha kolay buldum ve gerçekten tüm bu hackish olarak düşünmeyin. Gerçi küçük bir değişiklik yaptık. Bunun yerine mouseMove, ben koymak gnome-screensaver -dhala ekranı uyanır olarak ve bana çok daha kısa olması sağlayan sleep(Ben 0.1 şimdi set var ama merak hepsi de gerekli olması durumunda)
Wouter van Vliet

Şifremle anahtar üzerinde bir dosya yazabileceğimi, .ssh / id_rsa anahtarımı kullanarak şifrelenebildiğimi ve şifresini çözmek ve giriş için girmek için bir komut dosyası yazabileceğimi düşünüyordum. Herhangi bir başarım olursa size haber vereceğim.
Fordi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.