Se desejar uma configuração mais dinâmica e a capacidade de ligação para múltiplos utilizadores, então existe uma melhor forma de o fazer. Como root criar o ficheiro (e directório se este não existir) /etc/sysconfig/vncservers i.e. fazer:
mkdir -p /etc/vncserver
touch /etc/vncserver/vncservers.conf
Adicionar servidores conforme necessário para cada utilizador, adicionando algo como o seguinte ao ficheiro vncservers.conf que acabou de criar:
VNCSERVERS="1:justin 2:bob"
VNCSERVERARGS[1]="-geometry 1920x1080 -depth 24"
VNCSERVERARGS[2]="-geometry 800x600 -depth 8"
em seguida, crie um script de inicialização vazio e torne-o executável:
touch /etc/init.d/vncserver
chmod +x /etc/init.d/vncserver
adicione o seguinte a /etc/init.d/vncserver:
#!/bin/bash
unset VNCSERVERARGS
VNCSERVERS=""
[-f /etc/vncserver/vncservers.conf] && . /etc/vncserver/vncservers.conf
prog=$"VNC server"
start() {
. /lib/lsb/init-functions
REQ_USER=$2
echo -n $"Starting $prog: "
ulimit -S -c 0 >/dev/null 2>&1
RETVAL=0
for display in ${VNCSERVERS}
do
export USER="${display##*:}"
if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
echo -n "${display} "
unset BASH_ENV ENV
DISP="${display%%:*}"
export VNCUSERARGS="${VNCSERVERARGS[${DISP}]}"
su ${USER} -c "cd ~${USER} && [-f .vnc/passwd] && vncserver :${DISP} ${VNCUSERARGS}"
fi
done
}
stop() {
. /lib/lsb/init-functions
REQ_USER=$2
echo -n $"Shutting down VNCServer: "
for display in ${VNCSERVERS}
do
export USER="${display##*:}"
if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
echo -n "${display} "
unset BASH_ENV ENV
export USER="${display##*:}"
su ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1
fi
done
echo -e "\n"
echo "VNCServer Stopped"
}
case "$1" in
start)
start $@
;;
stop)
stop $@
;;
restart|reload)
stop $@
sleep 3
start $@
;;
condrestart)
if [-f /var/lock/subsys/vncserver]; then
stop $@
sleep 3
start $@
fi
;;
status)
status Xvnc
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac
Como Stephen mencionou na sua resposta, terá de executar o vncserver pelo menos uma vez como CADA UTILIZADOR que queira iniciar sessão. Coloco isso em maiúsculas porque se saltar esse passo, nada disso irá funcionar. Por isso, como raiz, pode fazer:
su justin -c vncserver
su bob -c vncserver
Isto irá criar um directório .vnc em cada diretório home dir de cada utilizador com os scripts de arranque apropriados.
Finalmente, faça o seguinte:
update-rc.d vncserver defaults 99
agora pode reiniciar ou iniciar o serviço manualmente, digitando:
service vncserver start