14.04 में स्क्रीन को `gnome-स्क्रीनसेवर-कमांड` के बिना अनलॉक करें


10

मैं ख़ुशी से 13.10 में ब्लूप्रोसेसर का उपयोग कर रहा हूं, लेकिन 14.04 में अपग्रेड होने के बाद से यह केवल तभी लॉक होता है जब मेरा फोन रेंज (उपयोग gnome-screensaver-command -l) से बाहर हो जाता है , लेकिन यह अनलॉक नहीं होता है gnome-screensaver-command -d

अब कारण जो gnome-screensaver-command -dकाम नहीं करता है वह बग के कारण होता है ।

हालाँकि उस बग रिपोर्ट में यह उल्लेख किया गया है कि सूक्ति-स्क्रीनसेवर अब भरोसेमंद रूप से उपयोग नहीं किया जाता है और इसलिए इसके gnome-screensaver-commandचरणबद्ध होने की उम्मीद है, जो इस बात से भी संबंधित हो सकता है कि कमांड क्यों काम नहीं करता है।

तो मेरा सवाल यह है कि अगर सूक्ति-स्क्रीनसेवर को बदल दिया जाता है, तो स्क्रीन पर भरोसा किए बिना स्क्रीन को अनलॉक करने का नया आदेश क्या होगा gnome-screensaver-command?


@Braiam यह प्रश्न 14.04 और बाद के लिए विशिष्ट है। आपने टैग क्यों हटाया? gnome-screensaver-commandपुराने संस्करणों में उपयोग करने से बचने का कोई कारण नहीं है !
d_inevitable

अपने आप को जवाब दिया: 14.04 और बाद में । 14.04 का उपयोग केवल तभी किया जाना चाहिए जब वह एकमात्र संस्करण प्रभावित हो, जो 14.10 के बाद से सत्य नहीं है। BTW, बग के बारे में मत पूछो।
ब्रिअम

@Braiam 1. मुझे बाद में नहीं पता !! मैं कैसे कर सकता हूँ? अभी तक कोई बाद का संस्करण नहीं है। अब तक यह केवल 14.04 है। और मैंने बग के बारे में नहीं पूछा। इसलिए यदि आप बुरा नहीं मानते हैं, तो मैं आपके संपादन को वापस कर दूंगा।
d_inevitable

गंभीरता से? cdimage.ubuntu.com/daily-live/current इसे आज़माएं।
ब्रिअम

1
@Braiam कि एक रिलीज नहीं है।
d_inevitable

जवाबों:


6

यह मेरे लिए काम किया:

कमांड लाइन पर:

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

जब आप पहली बार साइन-इन करते हैं तो ऑन-स्क्रीन कीबोर्ड दिखाई देता है।

इसके बाद gnome-screensaver-command -dकाम करता है।

पर benshayden से लिया https://bugs.launchpad.net/ubuntu/+source/gnome-screensaver/+bug/1307163


यह अन्य उत्तरों की तुलना में बहुत अधिक मूल्यांकन किया जाना चाहिए। आपको इन लिपियों में अपना पासवर्ड नहीं डालना चाहिए, यह वास्तव में बुरा है!
पैट्रिक कॉर्नेलिसन

3

दुर्भाग्य से ऐसा करने का कोई तरीका नहीं है :(

अपडेट - मुझे एक रास्ता मिल गया है। मेरे नए उत्तर की जाँच करें

यह मेरा पिछला समाधान है - यह उपयोग करने के लिए अस्वीकार्य है, यदि आप अपना फोन खो देते हैं तो यह अनलॉक करने योग्य नहीं है; आपको इसे अनलॉक करने के लिए पुनरारंभ करना होगा

मैं अंततः एक समाधान के साथ आया - इसे पहली जगह में बंद न करें। यह अजीब लग सकता है - साथ सहन।

इसे लॉक करने के बजाय, मैंने माउस और कीबोर्ड को अक्षम कर दिया, सभी डेस्कटॉप आइकन छिपाए और फिर डेस्कटॉप पर स्विच किया। आप संभवतः अधिक सामान (जैसे लॉन्चर) छिपा सकते हैं लेकिन मेरे पास वैसे भी छिपा हुआ है।

इस कमांड के लिए सेटअप की आवश्यकता है।

स्थापित करें: xdotool - sudo apt-get install xdotool

दर्ज करें: xinput --listऔर अपने माउस और कीबोर्ड आईडी को नोट करें।

मैं इन आदेशों को संपादित करने का सुझाव दूंगा gedit

यह एक लॉकर के रूप में कार्य करता है।

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

यह अनलॉक का काम करता है।

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

दोनों आदेशों में और उनकी संबंधित संख्याओं में परिवर्तन करें।

इस क्रम में:

  • कीबोर्ड को निष्क्रिय / सक्षम करता है
  • माउस को निष्क्रिय / सक्षम बनाता है
  • अपने सभी डेस्कटॉप आइकनों को छुपाता / दिखाता है
  • आपके डेस्कटॉप को दिखाने वाले टॉगल।

एक महत्वपूर्ण बात को ध्यान में रखें - यह आपके ब्लूटूथ डिवाइस के बिना पूर्ववत नहीं किया जा सकता है। यदि किसी कारण से यह विफल हो जाता है, तो आपको पुनः आरंभ करना होगा। इसकी वजह से, कीबोर्ड को सक्षम करने और अनलॉक कमांड को एक चुने हुए शॉर्टकट पर सेट करने की सलाह दी जा सकती है।


हे सुविचार! क्या ऐसा बदलना संभव होगा कि कोई भी कीबोर्ड इनपुट स्क्रीन को लॉक कर देगा (सभी ब्लूटूथ इनपुट को अनदेखा करने के बजाय इसे ब्लूटूथ डिवाइस के बिना अनलॉक करने का मौका देगा)?
d_inevitable

वह तो उससे भी बढ़िया है! मैं बस एक और विचार पोस्ट करने वाला था, लेकिन मैं उस पर काम करूँगा!
टिम

@d_inevitable मेरे नए उत्तर पर एक नज़र है, यह नट (विशेषकर दूसरा तरीका) है। मुझे पूरा यकीन है कि यह काम करता है।
टिम

1

इसलिए, मुझे यह करने के लिए "सबसे अच्छा" तरीका लगा (एपोक्रीफाल, क्योंकि हम अभी भी एक पासवर्ड स्टोर कर रहे हैं और इसे एक चीज़ में टाइप कर रहे हैं ), जैसा कि मैंने ऊपर टिप्पणी की थी, एंट्री यूएसबी कुंजी के लिए पासवर्ड एन्क्रिप्ट करें । यह एक स्क्रिप्ट का थोड़ा गड़बड़ है, इसलिए मैं समझाता हूं कि क्या चल रहा है।

वर्तमान उपयोगकर्ता के लिए उपकरणों को xpath के साथ /etc/pamusb.conf के माध्यम से देखा जाता है; हर एक को xpath का उपयोग करके उसके UUID के साथ mated किया जाता है, और UUID को ब्लकिड का उपयोग करके डिवाइस पर मैप किया जाता है।

आपके पास शो डिवाइस को लॉक करने, अनलॉक करने या अपनी कुंजी सेट करने का विकल्प है। जब आप सेटअप चलाते हैं, तो यह ~ / .ssh / pamusb_rsa बनाएगा यदि यह मौजूद नहीं है। फिर आपको एक उपकरण चुनने के लिए कहा जाएगा (या नहीं, यदि केवल एक ही है), और अपना पासवर्ड दर्ज करें। आपके PW को {डिवाइस} /। Pamusb / .auth में संग्रहीत, एन्क्रिप्ट किया जाएगा।

जब आप अनलॉक चलाते हैं, तो उपकरणों को फिर से एन्यूमरेट किया जाता है, और एक /.pamusb/.auth फ़ाइल के लिए एक-एक करके चेक किया जाता है। जब किसी के स्पॉट किए गए, डिक्रिप्शन का प्रयास किया जाएगा और, यदि सफल हो, तो आपके पासवर्ड को टाइप करने के लिए उपयोग किया जाएगा जो कि इस समय पाठ को स्वीकार करने के लिए होता है। यह केवल तभी चलेगा जब सत्र बंद है, इसलिए उम्मीद है कि यह आपको बहुत बुरा नहीं लगेगा।

मैंने इसे ~ / .bin / यूनिटी-लॉक-कंट्रोल (~ / .bin मेरे पथ पर है) नाम दिया है, और 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

0

अपडेट करें! सामान्य लॉक स्क्रीन का उपयोग करने का एक तरीका है! वाह!

मुझे नहीं पता कि यह कितना सुरक्षित है (प्लेनटेक्स्ट में अपना पासवर्ड स्टोर करना), लेकिन मुझे लगता है कि यह सबसे अच्छा संभव है।

यह लॉक कमांड है: gnome-screensaver -d

2 अनलॉक कमांड हैं:

नं .1:

यह पहली अनलॉक कमांड है:

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

क्लिक इसे जगाने के लिए है (यह माउस चाल के कारण लॉगिन बॉक्स के अंदर क्लिक करना चाहिए), और "स्लीपिंग" ब्लैक स्क्रीन के बजाय, अच्छी नई लॉक स्क्रीन दिखाएं।

फिर यह mypassword123!एक प्रविष्टि के साथ टाइप करता है, इसे टेक्स्ट बॉक्स में सबमिट करने के लिए।

जरूरी। किसी कारण से - शायद xdotool का क्या मतलब है (कीबोर्ड शॉर्टकट) का उपयोग करने के लिए - आप दोहरे अक्षरों में प्रवेश नहीं कर सकते हैं। इसके चारों ओर जाने के लिए, इसे प्रत्येक डबल अक्षर पर 2 कमांड में विभाजित करें (जैसा कि ऊपर)। इसके अलावा, संख्याओं का अपना होना चाहिए, अक्षरों से अलग कमांड (ऊपर भी)। अंत में, संशोधक (जैसे कि शिफ्ट) को एक अलग की आवश्यकता होती है, जैसा कि रिटर्न कुंजी।


No2:

यह दूसरा है। यह थोड़ा बेहतर और कम हैकिश है, लेकिन इसके लिए बहुत सारी सेटिंग की आवश्यकता होती है।

पहले स्थापित करें:

sudo apt-get install actionaz

एक नई स्क्रिप्ट खोलें, और सही आइटम को अपने प्रवाह में खींचें। (आप यहां पूरा एक डाउनलोड कर सकते हैं । यदि आपने इसे डाउनलोड करने के लिए चुना है, तो इसे खोलें, यहां लिखें टेक्स्ट पर डबल क्लिक करें - पासवर्ड, और अपना पासवर्ड दर्ज करें)।

  1. ठहराव: 3 सेकंड दर्ज करें।
  2. क्लिक करें: कॉपी करें और 165:555स्थिति बॉक्स में पेस्ट करें । (स्क्रीन पक्ष के आधार पर, यह भिन्न हो सकता है। सुनिश्चित करें कि यह पासवर्ड बॉक्स में क्लिक कर रहा है, अन्यथा यह काम नहीं करता है)।
  3. टेक्स्ट लिखें: बॉक्स में अपना पासवर्ड डालें
  4. कुंजी: बॉक्स में क्लिक करें और रिटर्न दबाएं

इसे अपने होम फोल्डर में unlock.ascr (या किसी भी नाम पर सेव करें - मैं सिर्फ यह विज्ञापन नहीं देना चाहता था कि इसमें मेरा पासवर्ड था)

अपना निकटता कमांड सेट करें:

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

माउस चाल इसे जगाता है, और विकल्प इसे स्क्रिप्ट को निष्पादित करने और फिर अंत में बाहर निकलने के लिए कहते हैं।


यदि आप अपना डिवाइस खो देते हैं, तो आप हमेशा अपना पासवर्ड टाइप कर सकते हैं, इसलिए यह प्रतिवर्ती है।


2
अरे, यह बहुत अच्छा लग रहा है, लेकिन दुर्भाग्य से स्वच्छ पाठ में पासवर्ड संग्रहीत करना विकल्प नहीं है। इसका लगभग उतना ही बुरा है जितना रूट में सब कुछ चल रहा है क्योंकि मेरा उपयोगकर्ता sudoers सूची में है। लेकिन मुझे लगता है कि आपके दो उत्तरों का एक संयोजन काम करेगा। मैं जितनी जल्दी हो सके कुछ बाहर की कोशिश करेंगे। मूल रूप से स्क्रीन को तब तक मंद करते हैं जब तक कि माउस हिलता नहीं है, एक कुंजी दबाया जाता है या ब्लूटूथ डिवाइस रेंज में वापस आता है। यदि माउस ले जाता है या कुंजी दबाया जाता है, तो स्क्रीन को वापस चालू करें और चलाएं gnome-screensaver-command -lताकि ब्लूटूथ डिवाइस अनुपस्थित होने पर एक पासवर्ड दर्ज किया जा सके। मुझे लगता है कि यह उचित होना चाहिए।
d_inevitable

मैंने जल्दी से 'माउस मूव' विकल्प को देखा ... मैं सोच रहा था कि xev ऐसा करने में सक्षम हो सकता है? आप इसे सेट कर सकते हैं कि माउस xev विंडो से आगे बढ़ता है, और यदि आउटपुट बदलता है, तो आपको कुछ पता है हो गई।
टिम

सहमत हूँ, सादे पाठ में पासवर्ड संग्रहीत करना बहुत बुरा है। अपने होमेडिर को एन्क्रिप्ट किया गया है - जैसा कि मुझे लगता है कि उबंटू में अब डिफ़ॉल्ट है - हालांकि यह थोड़ा कम बुरा होगा। मैंने इसके साथ थोड़ा सा खेला है, और वास्तव में समाधान # 1 बहुत आसान लगता है, और वास्तव में यह सब हैकिश नहीं मानते हैं। हालांकि एक छोटा सा बदलाव किया। मूसमव के बजाय, मैंने इसमें gnome-screensaver -dअभी भी स्क्रीन को जगाया और मुझे बहुत छोटा करने के लिए सक्षम किया sleep(मुझे यह अब 0.1 पर सेट हो गया है, लेकिन आश्चर्य है कि अगर यह बिल्कुल आवश्यक है)
Wouter Van Vliet

मैं सोच रहा था कि मैं अपने पासवर्ड के साथ कुंजी पर एक फ़ाइल लिख सकता हूं, .sh / id_rsa से अपनी कुंजी का उपयोग करके एन्क्रिप्ट किया गया है, और डिक्रिप्ट करने के लिए एक स्क्रिप्ट लिख सकता हूं और लॉगिन के लिए दर्ज कर सकता हूं। अगर आपको कोई सफलता मिली तो मैं आपको बता दूंगा।
Fordi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.