LINUX.ORG.RU

Разблокировка экрана

 , ,


0

1

Когда я нажимаю Ctrl-Alt-L, запускается хранитель экрана и экран блокируется. После этого другой пользователь нажимает «New login», его переключает на другой VT, в котором запускается окно входа lightdm. Он зашёл, поработал и тоже заблокировал экран. Потом возвращаюсь я, вижу чужой заблокированный экран, хочу разблокировать своего пользователя. Ничего не остаётся, кроме как нажать «New login» (переключение консолей по Ctrl-Alt-F* заблокировано). Попадаю в окно входа lightdm, «логинюсь» своим пользователем, меня переключает на мой VT, но (!) здесь меня ожидает xscreensaver и приходится вводить свой пароль дважды.

Вопрос очевиден: как избежать двойного ввода пароля, т.е. чтобы при вводе в lightdm пароля уже вошедшего пользователя, на него не только переключалось, но и автоматически разблокировало его? Т.е. хочу поведения, аналогичного тому, что в ubuntu.

Трудность такова: в ubuntu используется gnome-screensaver, который можно разблокировать командой «gnome-screensaver-command -d». С xscreensaver же такой фокус не прокатывает (его нельзя разблокировать командой, кроме как перезапуском демона), поэтому вариант его замены тоже возможен. Но заменить его на gnome-screensaver не получится, поскольку он требует запущенного gnome-session, а он не запускается при запущенном xfce4-session. kscreensaver тоже не годится, потому что потянет за собой полKDE. Какие ещё есть варианты программ, блокирующих экран и разблокирующих его при вводе пароля на заблокированном экране или экране входа lightdm?

дерзай

vv@crusader ~ $ eix -c lock | grep x11\-m
[I] x11-misc/alock (94@28.09.11): locks the local X display until a password is entered
[N] x11-misc/blockdpy (~1): Tool to block access via the physical display while x11vnc is running.
[N] x11-misc/cairo-clock (~0.3.4): An analog clock displaying the system-time.
[N] x11-misc/dclock (2.1.2_p8): Digital clock for the X window system.
[N] x11-misc/glunarclock (0.34.1): Gnome Moon Phase Panel Applet
[N] x11-misc/i3lock (2.2): Simple screen locker
[N] x11-misc/numlockx (1.2): Turns on numlock in X
[N] x11-misc/slock (1.0): simple X screen locker
[N] x11-misc/xautolock (2.1-r1): An automatic X screen-locker/screen-saver.
[N] x11-misc/xdaliclock (2.35): Dali Clock is a digital clock. When a digit changes, it melts into its new shape.
[N] x11-misc/xlockmore (5.37): Just another screensaver application for X
[N] x11-misc/xtrlock (2.0-r3): A simplistic screen locking program for X
vv@crusader ~ $ 

как найдешь - отпишись

ZuBB ★★★★★ ()
Ответ на: комментарий от ZuBB

Поиском я и сам умею пользоваться, и большинство названий этих программ я уже видел. Другое дело, что я не уверен, что они мне подходят. Судя по всему, этими программами пользуется по 3,5 человека, что свидетельствует об их небольших возможностях (иначе они бы массово использовались и устанавливались бы по дефолту в дистрибутивах). И вряд ли среди этих возможностей есть взаимодействие с lightdm, который появился недавно. Если бы ты ещё подсказал, какая из них умеет разблокировать экран при вводе пароля в lightdm, цены бы тебе не было. Иначе придётся долго и нудно искать жемчужинку в тоннах говна.

Пойду пока смотреть исходники lightdm, чтобы найти, как у него получается разблокировать экран в убунте с gnome-screensaver.

gentoo_root ★★★★★ ()
Ответ на: комментарий от GotF

Могу предложить попробовать libpam-alreadyloggedin :]

Это, конечно, прикольный вариант, но не получится ли так, что кто угодно сможет зайти ко мне на комп по ssh без пароля?

gentoo_root ★★★★★ ()
Ответ на: комментарий от gentoo_root

Это, конечно, прикольный вариант, но не получится ли так, что кто угодно сможет зайти ко мне на комп по ssh без пароля?

А ты не прикручивай этот плагин к чему-либо, кроме LightDM.

GotF ★★★★★ ()
Ответ на: комментарий от GotF

А ты не прикручивай этот плагин к чему-либо, кроме LightDM.

ОК, попробую, если ничего лучше не найду. Пока что нашёл, что в убунте разблокировать экран можно через D-Bus, вызвав метод ConsoleKit'а, причём это работает даже при удалённом /usr/bin/gnome-screensaver-command. Возможно, у меня просто не запущен ConsoleKit, надо будет посмотреть.

gentoo_root ★★★★★ ()
Ответ на: комментарий от GotF

Изучил матчасть и понял, что ConsoleKit поддерживается только gnome-screensaver'ом, который слушает сигналы Lock и Unlock от ConsoleKit по D-Bus. Поскольку gnome-screensaver использовать не в гноме невозможно, то остаётся 2 варианта: либо любой блокировщик экрана + самописный костыль, который будет слушать сигналы на D-Bus и прибивать блокировщик при получении Unlock, либо libpam-alreadyloggedin (но тогда придётся осиливать настройку PAM).

В принципе, есть ещё третий вариант (которым я пользуюсь, пока не воплотил в жизнь один из первых двух): вместо блокировки экрана выполнять dm-tool switch-to-greeter, прописать DontVtSwitch в xorg.conf и отключить SysRq, но тогда многим приходится жертвовать.

gentoo_root ★★★★★ ()
Ответ на: комментарий от gentoo_root

Поскольку gnome-screensaver использовать не в гноме невозможно

Это почему? Нормально работает без гнома.

но тогда придётся осиливать настройку PAM

Думаю, достаточно будет дописать одну строку в /etc/pam.d/lightdm:

auth sufficient pam_alreadyloggedin.so

GotF ★★★★★ ()
Ответ на: комментарий от GotF

Это почему? Нормально работает без гнома.

Что с ним нужно сделать, чтобы он работал без гнома? Ему же нужна запущенная gnome-session, чтобы работала блокировка через некоторое время бездействия. И у меня почему-то не было кнопки переключения пользователя в нём.

Думаю, достаточно будет дописать одну строку в /etc/pam.d/lightdm:

Спасибо, сэкономили мне время. Один только вопрос: почему настройки из этого файла будут применены только к lightdm? Каждое приложение читает только свой конфиг из /etc/pam.d с определённым именем, которое определено при компиляции?

gentoo_root ★★★★★ ()
Ответ на: комментарий от gentoo_root

Ему же нужна запущенная gnome-session, чтобы работала блокировка через некоторое время бездействия. И у меня почему-то не было кнопки переключения пользователя в нём.

Эти два момента меня не интересовали, т.к. пользуюсь только ручной блокировкой и юзер один :) Видимо, никак.

Каждое приложение читает только свой конфиг из /etc/pam.d с определённым именем, которое определено при компиляции?

Не знаю подробностей, но настройки точно изолированы, иначе смысла в PAM было бы немного. Если какие-то параметры должны быть общими, то их пишут в файлы вида common-* и включают с помощью @include в каждый нуждающийся конфиг отдельно.

GotF ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.