Als je een meer dynamische configuratie wil en de mogelijkheid om verbinding te maken voor meerdere gebruikers dan is er een betere manier om dit te doen. Maak als root het bestand (en de map als die nog niet bestaat) /etc/sysconfig/vncservers aan, doe bijvoorbeeld
mkdir -p /etc/vncserver
touch /etc/vncserver/vncservers.conf
Voeg servers toe naar behoefte voor iedere gebruiker door iets als het volgende toe te voegen aan het vncservers.conf bestand dat je zojuist hebt aangemaakt:
VNCSERVERS="1:justin 2:bob"
VNCSERVERARGS[1]="-geometry 1920x1080 -depth 24"
VNCSERVERARGS[2]="-geometry 800x600 -depth 8"
Maak vervolgens een leeg init-script en maak het uitvoerbaar:
touch /etc/init.d/vncserver
chmod +x /etc/init.d/vncserver
voeg het volgende toe aan /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
Zoals Stephen in zijn antwoord zei, moet je vncserver TEN MINSTE EEN KEER laten draaien ALS ELKE GEBRUIKER waarmee je wilt inloggen. Ik zet dat in hoofdletters omdat als je die stap overslaat niets van dit alles zal werken. Dus als root zou je kunnen doen:
su justin -c vncserver
su bob -c vncserver
Dit maakt een .vnc directory aan in de home dir van iedere gebruiker met de juiste startup scripts.
Doe tenslotte het volgende:
update-rc.d vncserver defaults 99
nu kun je ofwel opnieuw opstarten of de service handmatig starten door te typen:
service vncserver start