LTSP/Display Manager

Материал из ALT Linux Wiki


Изменить Display Manager

создать или изменить файл /etc/sysconfig/desktop список возможных значений можно посмотреть в /etc/X11/prefdm

DESKTOP=KDE
DISPLAYMANAGER=KDE

Autologin

KDM

  • /etc/X11/kdm/kdmrc
  • /etc/X11/kdm4/kdmrc
# Core config for all displays
[X-*-Core]
SessionsDirs=/etc/X11/kdm/xsessions
AutoLoginDelay=0
AutoLoginEnable=true
AutoLoginAgain=true
AutoLoginLocked=false
[X-termina01:*-Core]
AutoLoginUser=user1
AutoLoginLocked=true
[X-terminal02:*-Greeter]
SelectedUsers=user1,user2,user3
DefaultUser=user2
  • Немного безопасности :-) Так можно разрешить пользователям заходить только под определенными учетными записями. Скрипт надо разместить в ~/.kde/env, но лучше в общем(некоторые startkde его не имеют).
HOSTNAME=`echo ${DISPLAY} | cut -f1 -d: | awk -F . {' print $1 '}`
access="yes"
if [ "$HOSTNAME" == "terminal02" ] || [ "$HOSTNAME" == "terminal03" ]; then
   access="no"
   case "$USER" in
       "user1")    access="yes";;
       "user2")    access="yes";;
       "user3")    access="yes";;
       "user4")    access="yes";;
   esac
fi
echo "hostname:" $HOSTNAME "user:" $USER "access:" $access | logger -t USER_ACCESS
if [ "$access" != "yes" ]; then
   pkill -u $USER
fi
  • Чтобы сделать общий для всех пользователей env(Session Environment Variables), в котором можно размещать скрипты, необходимо отредактировать файл /usr/bin/startkde
#строку
for prefix in `echo "$exepath" | sed -n -e 's,/bin[^/]*/,/env/,p'`; do
#заменить на
envpath=/etc/X11/kdm/env/
for prefix in `echo "$exepath" | sed -n -e 's,/bin[^/]*/,/env/,p'` $envpath ; do

GDM

/etc/X11/gdm/custom.conf

[daemon]
AutomaticLoginEnable=true
AutomaticLogin=/etc/X11/gdm/gdm_autologin.sh|
TimedLoginEnable=true
TimedLogin=/etc/gdm/gdm_autologin.sh|
TimedLoginDelay=10
[security]
AllowRemoteAutoLogin=true

/etc/X11/gdm/gdm_autologin.sh

HOSTNAME=`echo ${DISPLAY} | cut -f1 -d: | awk -F . {' print $1 '}`
if [ "x$HOSTNAME" != "xlocalhost" ] ; then
   case "$HOSTNAME" in
       "terminal01")       ltspuser=user1;;
       "terminal02")       ltspuser=user2;;
       "192.168.0.33")     ltspuser=user3;;
   esac
   echo $ltspuser
fi
exit 0