LINUX.ORG.RU

acpid, kdesktop_lock и чудеса с правами.


0

0

Изобретаю свой велосипед, вот, и не понимаю ничего.

Дистр - Gentoo. В /etc/apci/default.sh я написал свою функцию блокировки
всех экранов:

lock_all_x_displays() {
  ps -eo euser,cmd | /usr/bin/perl -e \
    'my $command = "/usr/kde/3.5/bin/kdesktop_lock --forcelock"; \
     my %displays = (); map { \
       $displays{$4} = $1 if m/^\s*(\S+)\s+(\/usr\/bin\/)?xinit(\s+.*\s+|\s+)(:\d+)(\s+|$)/ \
     } <>; \
     `su -l -c "DISPLAY=$_ $command" $displays{$_}` for (keys %displays);'
}

Вызывается оно на события "lid" и "sleep" (закрытие крышки и нажатие
кнопки засыпания).

Экран, конечно, блокирует, но kdesktop_lock сходит с ума и говорит что
"Cannot unlock the session because the authentication system failed to work;
you must kill kdesktop_lock (pid NNNNN) manually."

Права у kcheckpass, как я пониман, правильные, -rws--x--x, root:root.

Если вместо $command делаю "xmessage $(whoami)" то получаю root
и это несмотря на то, что я явно просил $displays{$_} (и там
мой обычный пользователь, от которого запущен xinit, я проверял).
Пользователь, заблокировавший экран, по утвержению kdesktop_lock,
впрочем, обычный, не root.

Если сказать $command от рута, тогда разблокируется нормально, но
просит, соответственно, пароль root (т.к. сессию заблокировал он),
что мне не нравится.

Вопрос - это что вообще такое за поведение и в какую сторону курить?

sudo пробовал, все полностью аналогично. Все что я хочу - прикинуться
собой (тем, от кого я пустил xinit для каждого сервера) и
заблокировать экраны. В идеале, конечно, еще и консоли, если есть
залогиненные, но пока что черт с ними. Конечная цель - одна кнопка
когда я ухожу (или закрытие крышки) и я могу не думать о том, кто
там около моей машинки шатается.


ЗЫ. Да, запускает все Qingy, никакого kdm нету. Используется
несколько разных WM/DE (просто пока не реализован выбор $command
между xscreensaver-command --lock и kdesktop_lock) и, иногда,
несколько X-серверов, почему и изобретаю свои фокусы. Если есть
решение без велосипеда (нет, менять условия "несколько WM" и
"несколько серверов" нельзя), то с радостью бы выслушал. Таблеток
от паранойи не надо, я спрошу у доктора сам.

Заранее спасибо есть у кого есть какие идеи или советы.
anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.