Wenn Sie eine dynamischere Konfiguration und die Möglichkeit der Verbindung für mehrere Benutzer wünschen, gibt es eine bessere Möglichkeit, dies zu tun. Erstellen Sie als root die Datei (und das Verzeichnis, falls es nicht existiert) /etc/sysconfig/vncservers, d. h. führen Sie aus:
mkdir -p /etc/vncserver
touch /etc/vncserver/vncservers.conf
Fügen Sie nach Bedarf Server für jeden Benutzer hinzu, indem Sie etwas wie das Folgende in die gerade erstellte Datei vncservers.conf einfügen:
VNCSERVERS="1:justin 2:bob"
VNCSERVERARGS[1]="-geometry 1920x1080 -depth 24"
VNCSERVERARGS[2]="-geometry 800x600 -depth 8"
Als nächstes erstellen Sie ein leeres Init-Skript und machen es ausführbar:
touch /etc/init.d/vncserver
chmod +x /etc/init.d/vncserver
Fügen Sie Folgendes zu /etc/init.d/vncserver hinzu:
#!/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
Wie Stephen in seiner Antwort erwähnt hat, müssen Sie vncserver MINDESTENS EINMAL FÜR JEDEN BENUTZER ausführen, mit dem Sie sich anmelden wollen. Ich habe das in Großbuchstaben geschrieben, denn wenn Sie diesen Schritt auslassen, wird nichts davon funktionieren. Als root könnten Sie also Folgendes tun:
su justin -c vncserver
su bob -c vncserver
Dadurch wird ein .vnc-Verzeichnis im Homeverzeichnis jedes Benutzers mit den entsprechenden Startskripten erstellt.
Zum Schluss machen Sie folgendes:
update-rc.d vncserver defaults 99
Jetzt können Sie entweder neu starten oder den Dienst manuell starten, indem Sie Folgendes eingeben:
service vncserver start