Debian und Ubuntu Startskripte für user svxlink

  • Viele Relaisbetreiber finden es offensichtlich zu kompliziert, mit dem Startskript dass Relais in einem sicheren Modus als Benutzer "svxlink" zu betreiben. Sie verzweifeln relativ schnell am Setzen der richtigen Rechte und das Ergebnis ist dann der Betrieb unter "root".

    Daher an dieser Stelle noch einmal der Appell: Server, wenn es geht, nicht unter root betreiben, sondern den vorgesehen user svxlink.

    wie geht das? (wenn ich ein Relais mit debian oder ubuntu betreibe, HW-Squelch und PTT über serielle Schnittstelle anschließe)

    • Rechte für svxlink setzen, so dass die serielle Schnittstelle für HW-Squelch und PTT-Steuerung möglich
    • Rechte setzen für den Zugriff auf die Audiokarte
    • aus root heraus user svxlink werden und damit die Rechte erproben
    • Verwenden des geänderten Startskripts (s.u.)
    • Anpassung der Defaultwerte in /etc/default/svxlink
    • alle notwendigen Directories und Dateien auf die richtigen Rechte setzen, so dass user svxlink zugreifen kann
    • Startskript mit "/etc/init.d/svxlink start" erproben
    • vorher verwendete Startskripte deaktivieren
    • Startskript als Startskript im Betriebssystem vereinbaren
    • Rechner neu starten

    Voraussetzung: debian squeeze oder wheezy (momentaner Stand)

    1. User svxlink mit Gruppe svxlink sind eingerichtet, es gibt ggf. sogar ein Homeverzeichnis /home/svxlink
    2. in /etc/default/svxlink werden alle notwendigen Vereinbarungen, insbesondere RUNASUSER=svxlink getroffen
    3. root werden und svxlink spätestens bei Schritt 5 abschalten

    zu 1+2
    Ist svxlink in den Gruppen audio und dialout?

    Code
    root@debian:/home/dk5hh# groups svxlinksvxlink : svxlink dialout audio


    und ggf. weitere Gruppen
    Diese können eingestellt werden mit

    Code
    adduser svxlink dialoutadduser svxlink audio

    zu 3

    Code
    root@debian:/home/dk5hh# su svxlinksvxlink@debian:/home/dk5hh$

    Aufruf: svxlink

    Jetzt sollte svxlink im Terminal arbeiten und normal starten und arbeiten: also mal mit Tastatur "*" Relais öffnen

    Mit "q" Relais verlassen / beenden und mit

    exit

    wieder root werden
    zu 4
    geändertes Startskript /etc/init.d/svxlink

    Bash
    #!/bin/sh### BEGIN INIT INFO# Provides:        svxlink# Required-Start:  $network $local_fs $syslog $ntp# Required-Stop:   # Default-Start:   2 3 4 5# Default-Stop:    0 1 6# Short-Description: Start SvxLink Server daemon### END INIT INFO# Use the following command to activate the start script#   update-rc.d svxlink start 30 2 3 4 5 . stop 70 0 1 6 .PATH=/sbin:/bin:/usr/sbin:/usr/bin. /lib/lsb/init-functionsPNAME=svxlinkNAME="SvxLink Server"DAEMON=/usr/bin/$PNAMEtest -x $DAEMON || exit 5if [ -r /etc/default/$PNAME ]; then        . /etc/default/$PNAMEfi# higher process- and io priority needed for small computerIOSHED="real-time:1"NICEPRIO="-10"POPTS="--daemon ${PIDFILE:+--pidfile=$PIDFILE}  ${LOGFILE:+--logfile=$LOGFILE} ${CFGFILE:+--config=$CFGFILE}"USERRUN="${RUNASUSER:+--chuid $RUNASUSER:$RUNASUSER}"HOMEDIR="-d /home/svxlink"create_logfile(){        touch $LOGFILE        if [ -n "$RUNASUSER" ]; then                chown $RUNASUSER.$RUNASUSER $LOGFILE        fi}case $1 in        start)                log_daemon_msg "Starting $NAME: $PNAME"                create_logfile                export $ENV                start-stop-daemon --start $USERRUN $HOMEDIR --pidfile $PIDFILE \                  --iosched $IOSHED --nicelevel $NICEPRIO --startas $DAEMON -- $POPTS                log_end_msg $?                ;;        stop)                log_daemon_msg "Stopping $NAME: $PNAME"                start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE                log_end_msg $?                rm -f $PIDFILE                ;;        restart|force-reload)                $0 stop && sleep 2 && $0 start                ;;        try-restart)                if $0 status >/dev/null; then                        $0 restart                else                        exit 0                fi                ;;        reload)                exit 3                ;;        status)                pidofproc -p $PIDFILE $DAEMON >/dev/null                status=$?                if [ $status -eq 0 ]; then                        log_success_msg "$NAME is running."                else                        log_failure_msg "$NAME is not running."                fi                exit $status                ;;        *)                echo "Usage: $0 {start|stop|restart|try-restart|force-reload|status}"                exit 2                ;;esac

    zu 6:

    Code
    chown -R svxlink.svxlink /etc/svxlinkchown -R svxlink.svxlink /usr/share/svxlinkchown -R svxlink.svxlink /var/spool/svxlinkchown svxlink.svxlink /var/log/svxlink*

    zu 7:
    erproben mit

    Code
    /etc/init.d/svxlink start


    überprüfen von Fehlermeldungen im Logbuch (/var/log/svxlink.log)

    zu 9:
    siehe oben im Skript

    Code
    update-rc.d svxlink start 30 2 3 4 5 . stop 70 0 1 6 .

    nun würde mich interessieren, ob jemand Schwierigkeiten bei der Verwendung und Einrichtung dieser Tipps hat.

    vy 73

    Michael
    DK5HH

  • Hallo Michael, hallo SVXLink Gemeinde,

    ich habe die letzten Tage als Linux Neuling am Startskript verbracht. Basis war das Skeleton Skript (daher kommen auch die englischen Beschreibungen :D )
    Hardware ist ein BananaPi mit Lubuntu mit Steuerung PTT und Squelch über die gpio Ports.
    Diese werden leider bei einem Neustart komplettt deaktiviert, so dass diese im Startskript wieder aktiviert werden müssen.

    Ich freue mich über Hinweise, da ich sicher bin, dass hier noch einiges verbessert werden kann.

    Vielen Dank und Grüße,