Un ordinateur entièrement patché sur Xubuntu 16.04 avec un utilisateur fraîchement créé ne me laissera pas déverrouiller après avoir utilisé light-locker pour verrouiller mon écran (que le verrouillage ait été activé manuellement ou avec un dépassement de délai). Le l'écran reste noir (mais alimenté) lors de la saisie du mot de passe correct
Tuer light-locker de tty1 révélera alors le bureau (et empêchera par conséquent tout verrouillage supplémentaire).
Tentatives tentées:
This session is locked: You will be redirected to the unlock dialog automatically in a few seconds
- sans qu'aucune redirection n'ait lieuloginctl unlock-session
n'a aucun effetsystemctl status lightdm
révèle seulement les messages (inoffensifs, attendus) concernant le module kwallet pam manquantnopasswdlogin
group (un écran noir apparaît ensuite juste après le verrouillage, pas seulement après la saisie du mot de passe)Quelles étapes supplémentaires pourraient s'avérer utiles pour déterminer comment résoudre ce problème?
Journal de débogage:
$ export LC_ALL=C; light-locker --debug & ( sleep 5; echo "## Locking now"; light-locker-command --lock; sleep 10; echo "### 10 seconds have passed - entering password now"; sleep 10; echo "### 10 more seconds have passwd - Killing"; killall light-locker; sleep 5; echo "### Killed now" )
[1] 23463
[gs_debug_init] gs-debug.c:106 (00:08:32): Debugging enabled
[main] light-locker.c:142 (00:08:32): initializing light-locker 1.7.0
[main] light-locker.c:144 (00:08:32): lock after screensaver 10
[main] light-locker.c:145 (00:08:32): late locking 0
[main] light-locker.c:146 (00:08:32): lock on suspend 1
[main] light-locker.c:147 (00:08:32): lock on lid 0
[main] light-locker.c:148 (00:08:32): idle hint 1
[query_session_id] gs-listener-dbus.c:2088 (00:08:32): org.freedesktop.login1.NoSessionForPID raised:
PID 23463 does not belong to any known session
[init_session_id] gs-listener-dbus.c:2180 (00:08:32): Got session-id: (null)
[query_sd_session_id] gs-listener-dbus.c:2164 (00:08:32): Couldn't determine our own sd session id: No such process
[init_session_id] gs-listener-dbus.c:2185 (00:08:32): Got sd-session-id: (null)
[init_seat_path] gs-listener-dbus.c:2262 (00:08:32): Got seat: /org/freedesktop/DisplayManager/Seat0
[gs_listener_delay_suspend] gs-listener-dbus.c:449 (00:08:32): Delay suspend
[gs_listener_x11_acquire] gs-listener-x11.c:172 (00:08:32): ScreenSaver Registered
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:32): obj_path=/org/freedesktop/DBus interface=org.freedesktop.DBus method=NameAcquired destination=:1.316
## Locking now
[gs_grab_grab_root] gs-grab-x11.c:647 (00:08:37): Grabbing the root window
[gs_grab_get_keyboard] gs-grab-x11.c:153 (00:08:37): Grabbing keyboard widget=E3
[gs_grab_get_mouse] gs-grab-x11.c:213 (00:08:37): Grabbing mouse widget=E3
[gs_manager_create_windows_for_screen] gs-manager.c:548 (00:08:37): Creating 1 windows for screen 0
[gs_manager_create_window_for_monitor] gs-manager.c:324 (00:08:37): Creating window for monitor 0 [0,0] (1600x900)
[update_geometry] gs-window-x11.c:197 (00:08:37): got geometry for monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:210 (00:08:37): using geometry for monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:197 (00:08:37): got geometry for monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:210 (00:08:37): using geometry for monitor 0: x=0 y=0 w=1600 h=900
[gs_window_move_resize_window] gs-window-x11.c:243 (00:08:37): Move and/or resize window on monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:197 (00:08:37): got geometry for monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:210 (00:08:37): using geometry for monitor 0: x=0 y=0 w=1600 h=900
[gs_window_move_resize_window] gs-window-x11.c:243 (00:08:37): Move and/or resize window on monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:197 (00:08:37): got geometry for monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:210 (00:08:37): using geometry for monitor 0: x=0 y=0 w=1600 h=900
[gs_window_move_resize_window] gs-window-x11.c:243 (00:08:37): Move and/or resize window on monitor 0: x=0 y=0 w=1600 h=900
[gs_manager_timed_switch] gs-manager.c:445 (00:08:37): Start switch to greeter timer
[gs_window_xevent] gs-window-x11.c:369 (00:08:37): not raising our windows
[window_map_event_cb] gs-manager.c:233 (00:08:37): Handling window map_event event
[gs_listener_resume_suspend] gs-listener-dbus.c:513 (00:08:37): Resume suspend: fd=14
[manager_maybe_grab_window] gs-manager.c:204 (00:08:37): Moving grab to 0x5595f8d5a290
[gs_grab_move_keyboard] gs-grab-x11.c:450 (00:08:37): Moving keyboard grab from E3 to 3A0000C
[gs_grab_move_keyboard] gs-grab-x11.c:457 (00:08:37): *** doing X server grab
[gs_grab_release_keyboard] gs-grab-x11.c:279 (00:08:37): Ungrabbing keyboard
[gs_grab_get_keyboard] gs-grab-x11.c:153 (00:08:37): Grabbing keyboard widget=3A0000C
[gs_grab_move_keyboard] gs-grab-x11.c:479 (00:08:37): *** releasing X server grab
[gs_grab_move_mouse] gs-grab-x11.c:395 (00:08:37): Moving pointer grab from E3 to 3A0000C
[gs_grab_move_mouse] gs-grab-x11.c:402 (00:08:37): *** doing X server grab
[gs_grab_release_mouse] gs-grab-x11.c:320 (00:08:37): Ungrabbing pointer
[gs_grab_get_mouse] gs-grab-x11.c:213 (00:08:37): Grabbing mouse widget=3A0000C
[gs_grab_move_mouse] gs-grab-x11.c:425 (00:08:37): *** releasing X server grab
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:37): obj_path=/org/freedesktop/login1 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[update_geometry] gs-window-x11.c:197 (00:08:37): got geometry for monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:210 (00:08:37): using geometry for monitor 0: x=0 y=0 w=1600 h=900
[gs_window_move_resize_window] gs-window-x11.c:243 (00:08:37): Move and/or resize window on monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:197 (00:08:37): got geometry for monitor 0: x=0 y=0 w=1600 h=900
[update_geometry] gs-window-x11.c:210 (00:08:37): using geometry for monitor 0: x=0 y=0 w=1600 h=900
[gs_window_move_resize_window] gs-window-x11.c:243 (00:08:37): Move and/or resize window on monitor 0: x=0 y=0 w=1600 h=900
[gs_listener_send_lock_session] gs-listener-dbus.c:180 (00:08:38): Send lock session
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:38): obj_path=(null) interface=(null) method=(null) destination=:1.316
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/session/c5 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/session/c12 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/seat/seat0 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
process 23463: arguments to dbus_message_new_method_call() were incorrect, assertion "path != NULL" failed in file ../../dbus/dbus-message.c line 1340.
This is normally a bug in some application using the D-Bus library.
[query_session_active] gs-listener-dbus.c:1124 (00:08:39): Couldn't allocate the dbus message
[listener_dbus_handle_system_message] gs-listener-dbus.c:1361 (00:08:39): systemd notified ActiveSession 0
[listener_session_switched_cb] gs-monitor.c:298 (00:08:39): Session switched: 0
[gs_manager_stop_switch] gs-manager.c:456 (00:08:39): Stop switch to greeter timer
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/seat/seat0 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/session/c12 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/user/_108 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/seat/seat0 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
process 23463: arguments to dbus_message_new_method_call() were incorrect, assertion "path != NULL" failed in file ../../dbus/dbus-message.c line 1340.
This is normally a bug in some application using the D-Bus library.
[query_session_active] gs-listener-dbus.c:1124 (00:08:39): Couldn't allocate the dbus message
[listener_dbus_handle_system_message] gs-listener-dbus.c:1361 (00:08:39): systemd notified ActiveSession 0
[listener_session_switched_cb] gs-monitor.c:298 (00:08:39): Session switched: 0
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:39): obj_path=/org/freedesktop/login1/session/c5 interface=org.freedesktop.login1.Session method=Lock destination=(null)
### 10 seconds have passed - entering password now
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:51): obj_path=/org/freedesktop/login1/session/c5 interface=org.freedesktop.login1.Session method=Unlock destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:51): obj_path=/org/freedesktop/login1/session/c13 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:51): obj_path=/org/freedesktop/login1/session/c5 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
[listener_dbus_handle_system_message] gs-listener-dbus.c:1330 (00:08:51): obj_path=/org/freedesktop/login1/seat/seat0 interface=org.freedesktop.DBus.Properties method=PropertiesChanged destination=(null)
process 23463: arguments to dbus_message_new_method_call() were incorrect, assertion "path != NULL" failed in file ../../dbus/dbus-message.c line 1340.
This is normally a bug in some application using the D-Bus library.
[query_session_active] gs-listener-dbus.c:1124 (00:08:51): Couldn't allocate the dbus message
[listener_dbus_handle_system_message] gs-listener-dbus.c:1361 (00:08:51): systemd notified ActiveSession 0
[listener_session_switched_cb] gs-monitor.c:298 (00:08:51): Session switched: 0
[xroot_filter] gs-listener-x11.c:124 (00:08:52): ScreenSaver stopped
### 10 more seconds have passwd - Killing
### Killed now
En le comparant à un système de qualité connue, on obtient:
$ comm -3 <(grep -iv grab good | sed 's/[0-9:]\+/[NN]/g;s/[ \t]\+/ /g' | sort) <(grep -iv grab bad | sed 's/[0-9:]\+/[NN]/g;s/[ \t]\+/ /g' | sort) | head -n2
[init_session_id] gs-listener-dbus.c[NN] ([NN])[NN] Got session-id[NN] (null)
[init_session_id] gs-listener-dbus.c[NN] ([NN])[NN] Got session-id[NN] /org/freedesktop/login[NN]/session/c[NN]
Et en effet, quelque chose semble être très délicat à propos de la configuration de la session:
$ loginctl session-status
Could not get properties: No such process
TL; DR: light-locker garde l'écran noir si systemd ne peut pas lire/proc
light-locker
dépend de dbus
en fournissant IPC
.dbus
dépend de systemd-logind
fournissant les informations session
.systemd-logind
dépend de /proc
fournissant des informations process
.Ce qui signifie que cela ne fonctionnera pas très bien ensemble:
$ file /sbin/init
/sbin/init: symbolic link to /lib/systemd/systemd
$ mount | grep proc
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime,hidepid=2,gid=1337)
Et ni l'un ni l'autre ne peut être attendu à:
hidepid n'est pas vraiment compatible avec systemd. Pardon. [..] Quoi qu'il en soit, fermer car cela n'a pas été causé par systemd. - Lennart Poettering
Solution partielle 1
Solution partielle , car elle s'accompagne d'une divulgation d'informations.
Autorisez les programmes non privilégiés (tels que systemd, après avoir supprimé les privilèges) à accéder aux informations de traitement des autres utilisateurs dans /proc
.
$ Sudo mount -o remount,hidepid=0 /proc
# and fix /etc/fstab accordingly
Solution partielle 2
Solution partielle , car systemd peut se casser à d’autres endroits, pas seulement se connecter.
Ajoutez systemd-logind au groupe approprié, de manière plus pratique en ajoutant un service Drop-In.
$ addgroup showpid
$ adduser myuser showpid
$ Sudo mount -o remount,hidepid=2,gid=showpid /proc
# and fix /etc/fstab accordingly
$ echo -e '[Service]\nSupplementaryGroups=showpid' | Sudo tee /etc/systemd/system/systemd-logind.service.d/10-showpid.conf
$ Sudo systemctl daemon-reload
$ Sudo systemctl restart systemd-logind
Après une solution , le message Got session-id: (null)
devrait ressembler davantage à Got session-id: /org/freedesktop/login1/c7
et light-locker sera en mesure de communiquer correctement via dbus
.
Que devrais-je faire pour comprendre cela plus rapidement?
diff -ruiN
tout le système.