Journalisation des événements d'écran de verrouillage

10

Problème

Voir la date et l'heure exacte à laquelle un utilisateur verrouille et déverrouille son poste de travail - exécutant Fedora 18.

Question

Existe-t-il un moyen de consigner un événement d'un utilisateur entrant et sortant de "l'écran de verrouillage" sur fedora 18 (ou une solution linux générale)?

A essayé

  1. J'ai essayé de regarder /var/log/boot- pas d'aide. Et en regardant, /var/log/messagesj'ai trouvé le message systemd-logind[xxx]: New session 140 of user YYY, mais je n'ai pas trouvé l'événement de verrouillage d'écran (gnome?).
  2. J'ai essayé de voir /var/log/audit/audit.logqui contient beaucoup de messages liés à PAM sur toutes sortes d'utilisateurs et de services, mais je ne sais pas vraiment quoi rechercher pour trouver l'activité de l'écran de verrouillage
tutuDajuju
la source

Réponses:

7

Voici une autre solution utilisant "dbus-monitor". Une petite activité d'écran de journalisation du script bash.

exit_report(){
echo "$(date) Monitoring Terminated."
}
trap "exit_report; exit;" 0

lockmon() {
adddate() {
    while IFS= read -r line; do
      echo "$(date) $line" | grep "boolean" | sed 's/   boolean true/Screen Locked/' | sed 's/   boolean false/Screen Unlocked/'
    done
}
echo "$(date) Monitoring Started."
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | adddate

}

lockmon >> lock_screen.log
Alexander Dallakyan
la source
Je l'ai mis dans un .shfichier et l' ai ajouté aux applications de démarrage de Gnome. Fait ce qu'il dit sur l'étain, thx
aross
4

Essayez de regarder /var/log/auth.log. Vous devriez voir certains messages connexes de PAM et / ou de l'application d'économiseur d'écran.

scai
la source
Je n'ai pas /var/log/auth.log, j'en ai /var/log/audit/audit.logqui contient beaucoup de messages liés à PAM sur toutes sortes d'utilisateurs et de services, mais je ne sais pas vraiment quoi chercher pour trouver l'activité d'écran de verrouillage
tutuDajuju
J'ai /var/log/auth.log et il n'y a aucun message de PAM ni de l'application d'économiseur d'écran concernant les événements de verrouillage / verrouillage.
ychaouche
4

Oui, il ne semble pas être enregistré pour vous. @tutuDajuju a une bonne solution, donc j'ai pensé le porter sur bash (et supprimer la dépendance à l'utilisation de gnome, cela devrait fonctionner indépendamment de l'environnement de bureau) pour ceux qui sont intéressés.
Si vous avez cela en arrière-plan et que vous le dirigez vers un fichier journal, vous aurez votre journal.

#!/bin/bash

#prints out, among other things;
#      string "org.kde.screensaver"
#transform it to 'org.kde.screensaver'
service=$(\
    dbus-send \
        --session \
        --dest=org.freedesktop.DBus \
        --type=method_call \
        --print-reply \
        /org/freedesktop/DBus org.freedesktop.DBus.ListNames \
    | grep -o '[^"]*.screensaver'
)

#prints out, among other things;
#method bool org.freedesktop.ScreenSaver.SetActive(bool e)
#transform it to 'org.freedesktop.ScreenSaver'
interface=$(
    qdbus \
        $service /ScreenSaver \
    | grep -oP '[^ ]*(?=.SetActive)'
)

path='/ScreenSaver'

#monitor it with a while loop
dbus-monitor "type='signal',interface='$interface',member='ActiveChanged',path='$path'" \
| while read -r line; do
    #ignore the metadata and pull the 'boolean <true/false>' line
    read line

    #check if it is set to true
    if echo $line | grep -q 'true'; then
        echo "Locked at $(date)"
    else
        echo "Unlocked at $(date)"
    fi
done

Cela fonctionnait bien sur mon Fedora avec KDE, mais je suppose que cela devrait fonctionner sur d'autres choses comme Debian avec gnome et cetera.
Vous pouvez avoir des problèmes si votre grepne prend pas en charge -P(auquel cas vous pouvez simplement utiliser sed).

Hashbrown
la source
2

Pourrait aussi bien répondre à cela, même si ce n'est pas ma réponse (mon patron m'a fourni la solution) pour aider d'autres personnes ayant le même besoin (ou des esprits curieux).

tl; dr: utilisez D-Bus pour obtenir les signaux activés / désactivés de l'écran de verrouillage.

Il semble que la messagerie D-Bus soit largement prise en charge par les applications GNOME et l' application ScreenSaver en particulier , et il semble que l'application gnome-screensaver soit l'application de verrouillage officielle pour le shell Gnome.

Donc, pour le tester, je viens de lancer dbus-monitor et d'obtenir la réponse:

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"

J'ai écrit un petit script python pour enregistrer cette activité dans un fichier:

#!/usr/bin/env python
from datetime import datetime
import os
import pwd
import subprocess
import time

LOG_FILE = os.path.expanduser('~/hours_log.csv')


cmd = subprocess.Popen(["dbus-monitor \"type='signal',interface="
                        "'org.gnome.ScreenSaver'\""], shell=True,
                       stdout=subprocess.PIPE)

running = 0
while 1:
    time.sleep(0.1)
    if running:
        output = cmd.stdout.readline()
        status = 'unlocked' if 'true' in output else 'locked'
        new_line = "{time} {user} {status} the screen\n".format(
            time=datetime.now().ctime(),
            user=pwd.getpwuid(os.getuid())[0],
            status=status
        )
        with open(LOG_FILE, 'a') as f:
            f.write(new_line)

        running = 0
    line = cmd.stdout.readline()
    if "ActiveChange" in line and 'org.gnome.ScreenSaver' in line:
        running = 1
tutuDajuju
la source
Sondage? quel gaspillage de ressources.
ychaouche
2

quel économiseur d'écran utilisez-vous? s'il s'agit de xscreensaver, activez les options de journal et essayez de surveiller le fichier journal.

http://www.jwz.org/xscreensaver/man1.html


la source
Je viens d'écrire dans ma propre réponse que la valeur par défaut dans gnome shell est gnome-screensaver, qui semble être ce que j'utilise (puisque fedora installe gnome shell par défaut) ...
tutuDajuju
2

Linux Mint 17.1. Ma chaîne dbus ressemble à ceci:

 dbus-monitor --session "type='signal',path='/org/cinnamon/ScreenSaver'" 

ou ça peut ressembler à ça

dbus-monitor --session "type='signal',interface='org.cinnamon.ScreenSaver'"
Alexander Chzhen
la source
2

J'utilise XFCE et XScreensaver. Le dbus-monitor ni la journalisation xscreensaver ne fonctionne pas pour moi. J'ai donc trouvé une autre solution. J'espère qu'il sera également utilisable par d'autres personnes.

J'exécute cette commande lors du démarrage de XFCE:

/usr/bin/xscreensaver-command -watch |logger -t lockLogger

Les événements de verrouillage / déverrouillage sont enregistrés dans le /var/log/messageset peuvent être récupérés par

grep lockLogger /var/log/messages
eNca
la source