<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi all,<div><br></div><div>I am using lightdm with accountsservice and winbind on Debian 9 (stretch) and Debian 10 (buster).</div><div>My topic described below is equal on both systems. The package versions used are listed at the end of this mail.</div><div><br>Winbind is configured to allow offline logins by using 'winbind offline logon = yes' in smb.conf.<br>My users login using lightdm-gtk-greeter and since I have added 'session-setup-script=lightdm-cache-users.sh' option within the [SeatDefaults]</div><div>they are getting cached by accounts-daemon and the last user who logged on is remembered by lightdm (content of 'lightdm-cache-users.sh' at the end of this mail).</div><div>This works perfectly fine for local user accounts.<br>Unfortunately I have a problem with accounts that login via winbind since lightdm starts previously to winbind being online.<br></div><div>This causes accounts-daemon (which is not waiting for winbind) not being able to provide the account to lightdm and lightdm due to this not being able list the winbind user as "last-user" that was logged in.</div><div>As soon as winbind service was startet up correctly I can see and select my winbind users that were already logged in previously from the users list.</div><div><br></div><div>A "workaround" I was able to perform is changing lightdm.service unit file as follows:<br></div><div><br></div><div><i>After=systemd-user-sessions.serviceĀ </i></div><div>to</div><div><i>After=systemd-user-sessions.service winbind.service</i><br></div><div><i><br></i></div><div><i>ExecStartPre=/bin/sh -c '[ "$(cat /etc/X11/default-display-manager 2>/dev/null)" = "/usr/sbin/lightdm" ]'</i><br></div><div>to</div><div><i>ExecStartPre=/bin/sh -c '[ "$(cat /etc/X11/default-display-manager 2>/dev/null)" = "/usr/sbin/lightdm" ] && sleep 2'</i><br></div><div><br></div><div>The 'sleep 2' I think was necessary since it seemed to take a second or two until accounts-daemon recieved the accounts from winbind service after it started correctly.<br>Never the less this caused up to 9 seconds of 'black screen'/'usual non X window login screen' shown to the user when startup already 'finished'.</div><div>(depending on network etc since winbind is looking for 'network-online.target' which takes some seconds to start...</div><div><br></div><div>Any ideas how this can be solved in a smoother way than my workaround above?<br><br>Thank you in advance</div><div><br></div><div>MartinĀ </div><div><br></div><div><br></div><div>------------- lightdm-cache-users.sh -------------</div><div><i>#! /bin/bash</i></div><div><i><br></i></div><div><div><i>##--register user in /var/lib/AccountsService/users</i></div><div><i>dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.Accounts /org/freedesktop/Accounts org.freedesktop.Accounts.CacheUser string:"$USER"</i></div><div><i><br></i></div><div><i>##--save user as last logged on user for lightdm</i></div><div><i>lightdm_gtk_d="/var/lib/lightdm/.cache/lightdm-gtk-greeter"</i></div><div><i>if [ ! -d "${lightdm_gtk_d}" ];then mkdir -p "${lightdm_gtk_d}" && chmod 755 "${lightdm_gtk_d}" && chown lightdm:lightdm "${lightdm_gtk_d}";fi</i></div><div><i>if [ -f "${lightdm_gtk_d}/state" ];then</i></div><div><i><span style="white-space:pre">      </span>sed -i "s#last-user\=.*#last-user\=${USER}#g" "${lightdm_gtk_d}/state"</i></div><div><i>else</i></div><div><i>cat > "${lightdm_gtk_d}/state" <<-EOF</i></div><div><i><span style="white-space:pre"> </span>[greeter]</i></div><div><i><span style="white-space:pre">  </span>last-user=$USER</i></div><div><i><span style="white-space:pre">    </span>last-session=lightdm-xsession</i></div><div><i>EOF</i></div><div><i>fi</i></div></div><div><br></div><div>------------- Debian 9 (stretch) package versions -------------</div><div><div><i>0.6.43-1<span style="white-space:pre">       </span>accountsservice</i></div><div><i>0.6.43-1<span style="white-space:pre">    </span>libaccountsservice0</i></div><div><i>1.18.3-1<span style="white-space:pre">        </span>liblightdm-gobject-1-0</i></div><div><i>2:4.5.16+dfsg-1+deb9u1<span style="white-space:pre">       </span>libnss-winbind</i></div><div><i>2:4.5.16+dfsg-1+deb9u1<span style="white-space:pre">       </span>libpam-winbind</i></div><div><i>1.18.3-1<span style="white-space:pre">     </span>lightdm</i></div><div><i>2.0.2-1<span style="white-space:pre">     </span>lightdm-gtk-greeter</i></div><div><i>2:4.5.16+dfsg-1+deb9u1<span style="white-space:pre">  </span>winbind</i></div></div><div><br></div><div>------------- Debian 10 (buster) package versions -------------</div><div><div><i>0.6.45-2<span style="white-space:pre">      </span>accountsservice</i></div><div><i>0.6.45-2<span style="white-space:pre">    </span>libaccountsservice0</i></div><div><i>1.26.0-4<span style="white-space:pre">        </span>liblightdm-gobject-1-0</i></div><div><i>2:4.9.5+dfsg-3<span style="white-space:pre">       </span>libnss-winbind</i></div><div><i>2:4.9.5+dfsg-3<span style="white-space:pre">       </span>libpam-winbind</i></div><div><i>1.26.0-4<span style="white-space:pre">     </span>lightdm</i></div><div><i>2.0.6-1<span style="white-space:pre">     </span>lightdm-gtk-greeter</i></div><div><i>2:4.9.5+dfsg-3<span style="white-space:pre">  </span>winbind</i></div></div><div><br></div><div><br></div><div><br></div><div><br></div></div></div></div></div></div></div></div></div></div></div>