LINUX.ORG.RU

[solved] Lock KDE or Gnome session from root


0

0

С KDE 3 всё относительно просто:

/usr/kde/3.5/bin/dcop --all-users --all-sessions kdesktop KScreensaverIface lock

А вот с Gnome пришлось немного повозиться. Вот результат:

#!/bin/sh

export LANG=C

LOCK_CMD="/usr/bin/dbus-send --dest=org.gnome.ScreenSaver --type=method_call /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock"

for i in /proc/*/environ; do
        [ -r "${i}" ] || continue
        user=$( stat -c "%U" "${i}" )
        tr "\0" "\n" < "${i}" | sed -n "s/^DBUS_SESSION_BUS_ADDRESS=\(.*\)$/${user} \1/p"
done | sort | uniq | while read l; do
        user=$( echo "${l}" | cut -d " " -f 1 )
        dbus_sess=$( echo "${l}" | cut -d " " -f 2 )

        export DBUS_SESSION_BUS_ADDRESS="${dbus_sess}"
        su "${user}" -c "${LOCK_CMD}" > /dev/null 2>&1 && exit
done

Возможно есть более простой и правильный способ, но я его не нашёл.

Зачем это надо? Например чтобы блокировать сессию перед s2ram в скрипте для acpid.

Deleted

А зачем работать под рутом ,очень плохая идея ...
Вот приучил своих знакомых даже под офтопик ХР не работать под админом ,так кол-во заражений упало в разы ,автораны и другая хрень просто дохнет ...если права на папки раставлены правильно .
А вообще и на скринсавер можно ставить блокировку ,и в меню кде тоже есть блокировка -зависит от дистрибьютера могут и не добовлять а где выстовляется ... , да и в схемах s2ram где то в скриптах есть опция блокировки и запроса паролей (даже шифрования swap ).
/etc/hibernate/scriptlets.d/lock
AddConfigHandler LockOptions
AddConfigHelp "LockKDE <boolean>" "Lock all local KDE sessions before suspending."
AddConfigHelp "LockXScreenSaver <boolean>" "Lock all local X11 sessions with xscreensaver running before suspending."
AddConfigHelp "LockGnomeScreenSaver <boolean>" "Lock all local X11 sessions with gnome-screensaver running before suspending."
AddConfigHelp "LockXLock <boolean>" "Lock active X11 session using xlock."
AddConfigHelp "LockXAutoLock <boolean>" "Lock all local X11 sessions running xautolock."
AddConfigHelp "LockConsoleAs <username>" "Locks the entire system after resuming, requiring you to enter either <username>'s or root's password to unlock it. (Requires vlock)."

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

>> А зачем работать под рутом ,очень плохая идея ...

А я под рутом и не работаю. Даже в венде =). Цитирую сам себя:

>> Зачем это надо? Например чтобы блокировать сессию перед s2ram в скрипте для acpid.

Мне этот скрипт нужен, чтобы acpid, работающий от root'а, мог заблокировать сессию gnome, которая соответственно запущена от имени моей учётки.

>> А вообще и на скринсавер можно ставить блокировку ,и в меню кде тоже есть блокировка -зависит от дистрибьютера могут и не добовлять а где выстовляется ...

Ни кеды, ни гном не могут сами отследить факт входа в саспенд. Я даже сомневающь что есть возможность перехватить это событие и успеть что-то сделать. Зто кеды и гном могут блокировать сессию, если они _сами_ запускают s2ram (в моём случае - при закрытии крышки ноута). Но это не всегда удобно, так как если сессия кед или гнома не запущена - то s2ram никто и не включет.

>> да и в схемах s2ram где то в скриптах есть опция блокировки и запроса паролей (даже шифрования swap ).

>> да и в схемах s2ram где то в скриптах есть опция блокировки и запроса паролей (даже шифрования swap ).

Это AFAIK только для s2disk/s2both. В случае s2ram ты содержимое памяти никак не зашифруешь. Да и долго это.

>> /etc/hibernate/scriptlets.d/lock

Спасибо, посмотрел. Там в скрипте ИМХО ещё большая жесть, чем у меня =).

Deleted
()

> #!/bin/sh

Ужас.

> Возможно есть более простой и правильный способ, но я его не нашёл.

% ainstall hibernate


% cat /etc/hibernate/ususpend-ram.conf

USuspendMethod ram
USuspendRamForce yes
USuspendRamVbeMode yes
USuspendRamVbePost yes


% cat /etc/hibernate/common.conf

AlwaysForce yes
LockGnomeScreenSaver yes
LockKDE yes

% cat /etc/hibernate/blacklisted-modules

#nvidia

В /etc/sudoers добавляешь /usr/sbin/hibernate-ram без пароля, вешаешь на кнопку sleep hibernate-ram и наслаждаешься.

a3
()

Ужас какой, у нормальных людей в kde или gnome висит какой-нибудь демон, который лучше всяких кривых скриптов знает, как залочить родное окружение, и делает это по нужному событию HAL.

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

> Ужас какой, у нормальных людей в kde или gnome висит какой-нибудь демон, который лучше всяких кривых скриптов знает, как залочить родное окружение

О да. Знает и не делает :)

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