init.d Startscript soll Programme nicht als root starten



  • Hallo,

    ich habe einen Webserver bei dem ich mehrere Programme/Scripte starten will.

    1. Ich habe allen Verzeichnissen und Dateien im Webserververzeichniss den
    Benutzer x.y zugeteilt (nicht root)

    2. Im Verzeichnis init.d startet ein Shell-Startscript (daemon) meine
    benötigten Programme/Scripte. Leider werden alle Programme ja als root
    gestartet.
    d.h. Dateien die wiederum von den Programmen erzeugt werden haben ebenfalls
    Benutzer root.

    Nun meine Fragen:

    1. wie vergebe ich den Zugriff(welche rechte) für den Webserverbereich
    "richtig"

    2. wie kann ich mein Startscript (daemon) veranlassen alle meine
    Programme/Scripte mit bestimmten Rechten zu starten.

    Danke



  • worst_case schrieb:

    2. wie kann ich mein Startscript (daemon) veranlassen alle meine
    Programme/Scripte mit bestimmten Rechten zu starten.

    Du könntest z.B. im Startskript statt 'daemon' 'su user -c daemon' schreiben.



  • Hallo,

    du meinst etwa das ich im meinem startscript schreibe

    su user -c programm1
    su user -c programm2
    usw.

    Hab ich das so richtig verstanden ?

    Danke



  • Ja.



  • worst_case schrieb:

    Hallo,

    du meinst etwa das ich im meinem startscript schreibe

    su user -c programm1
    su user -c programm2
    usw.

    Hab ich das so richtig verstanden ?

    Danke

    Die Skirpte von /etc/init.d werden sowieso von root gestartet, und da root kein Passwort braucht, um su zu benutzen, kann man das anwenden.



  • Hallo,

    ich will ja genau das Gegenteil.
    Das Script im init.d wird mit root-rechten gestartet.
    In diesem Script werden weitere Programme/scripte gestartet.
    Jedoch sollen diese nicht mit root-rechten sondern mit user-rechten starten.



  • eben, benutze su username -c binaryfile



  • Hallo,
    hier mein Shell-Script.
    Warum funktioniert die Schleife mit dem Programmstart nicht ?

    #! /bin/sh
    #
    ### BEGIN INIT INFO
    # Provides:       visual
    # Required-Start:  $remote_fs $syslog
    # X-UnitedLinux-Should-Start: setserial hotplug
    # Required-Stop:   $remote_fs $syslog
    # Default-Start:   2 3 5
    # Default-Stop:    0 1 6
    # Description:    starting and stopping the visual Daemon
    ### END INIT INFO
    
        programme=(
                  "su lxuser -c /srv/www/htdocs/alert/find_alert_data"
                  "su lxuser -c /srv/www/htdocs/alert/alert"
                  "su lxuser -c /srv/www/htdocs/betriebsmeldungen/status"
                  "su lxuser -c /srv/www/htdocs/diagramm/save_data"
                  )
    
     for (( s=0; s < (${#programme[*]}); s++));
          do
          test -x "${programme[s]}" || echo "Fehler bei Programm:${programme[s]}" exit 5
          done
    
    . /etc/rc.status
    rc_reset
    
    case "$1" in
        start)
            echo "Starting Visual-System"
    
            for (( s=0; s < (${#programme[*]}); s++));
                do
                  echo -n "Starting ${programme[s]}"
    	      startproc "${programme[s]}"
                  rc_status -v
                done
            ;;
        stop)
            echo "Shutting down Visual-System "
    
            for (( s=0; s < (${#programme[*]}); s++));
    	    do
    	      echo -n "Shutting down ${programme[s]}"
                  killproc -TERM ${programme[s]}
    	      rc_status -v
                done
            ;;
        try-restart)
            $0 status >/dev/null &&  $0 restart
            rc_status
            ;;
        restart)
            $0 stop
    	sleep 1
            $0 start
            rc_status
            ;;
        status)
            echo "Checking for visual: "
    
            for (( s=0; s < (${#programme[*]} -1 ); s++));
    	    do
                  echo -n "Checking for : ${programme[s]} "
                  checkproc ${programme[s]}
     	      rc_status -v
    	    done
    	;;
        *)
            echo "Usage: $0 {start|stop|try-restart|restart|status}"
            exit 1
            ;;
    esac
    rc_exit
    

    Alle Pfade stimmen und die Programmnamen auch. Trotzdem kann das Script die Programme nicht starten.

    Danke
    worst_case


Anmelden zum Antworten