ubuntuusers.de

[gelöst]shellscripte mit php als root ausführen

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Rupert

Avatar von Rupert

Anmeldungsdatum:
18. Oktober 2004

Beiträge: 313

Wohnort: leepzz

Hallo,
ich versuche mit den funktionen system oder exec einige shell scripte unter Linux auszuführen, bisher ohne erfolg:
Ich habe die anweisungen auf php.net befolgt und simple sachen wie ls gehen auch, aber wie ich genau aktionen als root ausführe ist mir nicht klar.

hier mal mein code:

<?
function start_ccx() {

        $cmd = "sudo /tmp/ccxstream.sh start" ;
        system("$cmd 2>&1");
}

function stop_ccx() {

        $cmd = "killall -9 ccxstream" ;
        system("$cmd 2>&1");
}

function inputbox ($name, $type, $value = "", $size = "", $maxlength = "")
    {        
        
        if ($value == "")
        {
        
            eval ("global \$_POST;");
          eval ("\$value=\$_POST['$name'];");
      
        }
    
        echo "<input name=\"$name\" type=\"$type\" value=\"$value\" size=\"$size\" maxlength=\"$maxlength\">";
        
    }
?>


<table align='center' class='tblframeline' width=100%>
    <tr>                    
        <td  class='ueberschrift' >CCX Streaming Server</td>
    </tr>
    <tr>
        <td >                
            <table align=center width='100%' cellSpacing='1' cellPadding='15' border='0'>
                 <tr>                         
                <td>
                 CCX läuft
        <? //test
        $cmd = "sudo  /tmp/ccxstream.sh start" ;
        system("$cmd 2>&1");
        ?>
                 </td>
                </tr>
                 <tr >                         
                <td>
                <div align="left">
                            <form method="post" action="<? start_ccx(); ?>">
                            
                            
                            <?    inputbox ("Abschicken", "submit", "Starten"); ?>
                            </form>
                </div>
                
                
                    <div align="left">
                            <form method="post" action="<? stop_ccx(); ?>">
                            <?    inputbox ("Abschicken", "submit", "Stopen"); ?>
                            </form>
                </div>
                </td>
                </tr>
            </table>            
        </td>    
    </tr>        
</table>

Da mit den scripts dienste gestartet werden müssen diese als root ausgeführt werden, kann man evtl durch sudo tricksereien diese bestimmten scripte durch anderen user starten lassen?

danke

MrMind

Avatar von MrMind

Anmeldungsdatum:
25. Mai 2005

Beiträge: 70

Wohnort: Odw.

Rupert hat geschrieben:

Hallo,
Da mit den scripts dienste gestartet werden müssen diese als root ausgeführt werden, kann man evtl durch sudo tricksereien diese bestimmten scripte durch anderen user starten lassen?

Soweit ich weiß nein, denn wenn du was als Root-Ausführen möchtest oder egal als welcher Benutzer, musst du dein PW eingeben und das tust du ja in deiner Anweisung nicht.

Du könntest höchstens ein Shell-Skript schreiben und der eine interne Variable mit deinem PW geben (Vorsicht, das ist ein Sicherheitsrisiko) und bei Programm aufruf als erster Paramater das Programm welches du starten möchtest und jeder weitere Parameter als Parameter für das zu ausführende Programm.

Dann beim sudo-Ausführen kannste glaube ich mit read dann dein PW was in der Variable ist einlesen und er nimmt dies an.

Allerdings führst du das Script im Browser aus läuft das ganze über den Apache, dieser ist wieder ein anderer Benutzer und eine ganz andere Gruppe.
Da geht dann dein PW net mehr, glaube ich.

Mfg
MrMind

Rupert

(Themenstarter)
Avatar von Rupert

Anmeldungsdatum:
18. Oktober 2004

Beiträge: 313

Wohnort: leepzz

ich hab eine Lösung gefunden,
man muss sich nur gegen aussen abschotten und wenns geht wichtige system kommandos rauslassen

mit dieser zeile in visudo gehts dann:

www-data ALL=NOPASSWD:/pfad/zum/script

theRealAfroman

Avatar von theRealAfroman

Anmeldungsdatum:
31. März 2005

Beiträge: 702

also sicher ist das alles nicht. Wenn du php-skripte unter anderen benutzerkennungen ausführen willst, mach das folgendermassen:

1.) kompiliere php als binary für fast-cgi
2.) binde das fast cgi modul in apache ein, suexec auch
3.) Gib dem php binary das suid bit und setze auch das immutble bit.
4.) mit dieser konstruktion kannst du das binary unter beliebigen UserID spawnen.

Wenn du nicht weisst was das bedeutet solltest du es auch nicht machen.
Oder dich wirklich in die Materie einlesen, das ist sicherheitsbedingt nicht ganz ohne, besonders suexec.

blackbird Team-Icon

Avatar von blackbird

Anmeldungsdatum:
19. November 2004

Beiträge: 3397

Wohnort: Hermagor, Kärnten - Österreich

theRealAfroman hat geschrieben:

1.) kompiliere php als binary für fast-cgi
2.) binde das fast cgi modul in apache ein, suexec auch
3.) Gib dem php binary das suid bit und setze auch das immutble bit.
4.) mit dieser konstruktion kannst du das binary unter beliebigen UserID spawnen.

Wäre möglich. Aber php hat !nie was als root verloren.

theRealAfroman

Avatar von theRealAfroman

Anmeldungsdatum:
31. März 2005

Beiträge: 702

blackbird hat geschrieben:

Wäre möglich. Aber php hat !nie was als root verloren.

Genau richtig, deswegen halte ich auch nichts von dieser sudo idee, sondern wenn dann spawnen in den richtigen user ( nicht root ) über suid.

Rupert

(Themenstarter)
Avatar von Rupert

Anmeldungsdatum:
18. Oktober 2004

Beiträge: 313

Wohnort: leepzz

aber so könnte dann doch der php prozess jegliches porgramm starten, auch die die ich nicht freigegeben habe.
Da ich auch keine binaries direkt ausführe sondern diese immer über dritte shellscripte sollten die missbrauchsmöglichkeiten stark eingeschränkt sein,
dann kommt noch die abgeschottete umgebung dazu, man sollte dann nicht von aussen zugreifen können inkl. login.
Am besten wäre über ein htaccess login das su passwort zu übergeben und mit einer session nach x Minuten auslaufen lassen.

Das Ergebniss ist faszinierend, nach 2 Tagen ist fast alles drin was reinsoll, und x mal bequemer wie der webmin oder meine dialog spielerei.

Antworten |