AcidRain Posted August 24, 2006 Report Share Posted August 24, 2006 Nepieciešams izsaukt komandu no cita pietotāja. Māku to izdarīt no konsolēs, bet problēma ir tajā, ka izmantoju su komandu, kura prasa paroli. Vai kādam ir risinājums kādā veidā nodot paroli vai varbūt it kāds cits risinājums? Apache man ir ar SUEXEC un attiecīgi php skripts izpildās ar kaut kādu manis nodefinētu lietotāju. Link to comment Share on other sites More sharing options...
Delfins Posted August 24, 2006 Report Share Posted August 24, 2006 nodot paroli tas ir tāpat kā iedot 777 tiesības... Lieto sudo Link to comment Share on other sites More sharing options...
AcidRain Posted August 24, 2006 Author Report Share Posted August 24, 2006 sudo ir labs variants, vienīgi jānorāda kurš lietotājs drīkstēs palaist attiecīgo komandu. Bet, ir viens mīnuss, nevar lasīt/rakstīt failus kā root. Ja nu vienīgi taisa vēl papildus scriptu, kas to dara, bet to es negribu! Link to comment Share on other sites More sharing options...
Delfins Posted August 24, 2006 Report Share Posted August 24, 2006 Piedo, tu gribi ar PHP čikāties pa root-failiem? Moška iedod jūzerim grupu un failam iedod grupas vajadzīgas tiesības Link to comment Share on other sites More sharing options...
AcidRain Posted August 24, 2006 Author Report Share Posted August 24, 2006 Es gribu administratīvas lietas darīt, konfigurēt. Bet, lai to darītu vajag ja ne root, tad kāda cita lietotāja pieeju :) Link to comment Share on other sites More sharing options...
Delfins Posted August 25, 2006 Report Share Posted August 25, 2006 ar webmin nepietiek? :) Nu ja negribi papildus skriptus taisīt, tad palaid apaci/php zem rūta/jūzera (sudo) Link to comment Share on other sites More sharing options...
goldy Posted August 25, 2006 Report Share Posted August 25, 2006 gy gy un pēc tam ieliec šeit servera adresi :) iesaku šo domu atmest, jau iesākumā, ja negribi lai kāds pionieris tevi cenšas pačakarēt, uzliec labāk http://www.webmin.com/, un nevajadzēs ne tev apaci laist ar admin tiesībām, ne ko citu domāt. šis sastāv no dažādiem moduļiem un var likt tieši to ko vajag P.S. mans admins laikam sajuktu prātā, ja viņam kaut ko tādu paprasītu izdarīt Link to comment Share on other sites More sharing options...
AcidRain Posted August 25, 2006 Author Report Share Posted August 25, 2006 he he, es ļoti labi zinu kas ir webmin, bet tas nav tas, ko man vajag! Mēģināšau vēlreiz izklāstīt situāciju: Man ir php skripts, kas tiek izpildīts ar kaut kādu lietotāju, bet ir nepieciešamas cita lietotāja tiesības, lai editotu failus un izsauktu komandas. Mani ļoti apmierinātu iespēja, ja varētu izmantot su komandu no php. Vakar to mēģināju izdarīt ar proc_open() bet arī nekā, tikko kā tiek izpildīta su komanda, tā viņa jau bļauj "su: Sorry" :( Link to comment Share on other sites More sharing options...
goldy Posted August 25, 2006 Report Share Posted August 25, 2006 šie risinājumi neder? http://lv.php.net/manual/en/function.shell-exec.php Link to comment Share on other sites More sharing options...
AcidRain Posted August 25, 2006 Author Report Share Posted August 25, 2006 Es negribēju uzskaitīt visus risinājumus, kas man neder, bet nē neder, jo pēc su izpildes ir jānosūta parole. Link to comment Share on other sites More sharing options...
Delfins Posted August 25, 2006 Report Share Posted August 25, 2006 (edited) Nu var to izdarīt... tik jāpparaksta strīmus (pipes) ar to pāsu proc_open/popen... Tikai vot nezinu, vai su tiešām ļauj iebīdīt kaut ko no ārpuses... Pats esmu rakstījis wraperi iekš C++ priekš gnupg, lai tiktu izmantotas konsoliskās komandas kur tieši tāpat paroli ir jāiebaksta arroku nevis caur parametriem.. Netā dabūju CPipeConsole.cpp un tad caur pipe-iem vari simulēt keyboardu :) CPipeConsole *pConsole = new CPipeConsole(); pConsole->Execute(procName); // Commit password pConsole->WriteToPipe(_passphrase); pConsole->WriteToPipe("\n"); Sleep(400); Un re kur manuālī ir PHP piemērs <?php function pgp_encrypt($keyring_location, $public_key_id, $plain_text) { $encrypted_text=''; $key_id = EscapeShellArg($public_key_id); putenv("PGPPATH=$keyring_location"); // encrypt the message $descriptorspec = array( 0 => array("pipe", "r"), // stdin 1 => array("pipe", "w"), // stdout 2 => array("pipe", "w") // stderr ?? instead of a file ); $process = proc_open("pgpe -r $key_id -af", $descriptorspec, $pipes); if (is_resource($process)) { fwrite($pipes[0], $plain_text); fclose($pipes[0]); while($s= fgets($pipes[1], 1024)) { // read from the pipe $encrypted_text .= $s; } fclose($pipes[1]); // optional: while($s= fgets($pipes[2], 1024)) { $encrypted_text.= "\n<p>Error: $s</p>\n"; } fclose($pipes[2]); } return $encrypted_text; } Edited August 25, 2006 by Delfins Link to comment Share on other sites More sharing options...
AcidRain Posted August 25, 2006 Author Report Share Posted August 25, 2006 Es tieši šo piemēru izmantoju bet nekādīgi tomēr man neizdevās pielauzt to paroli paņemt :( Link to comment Share on other sites More sharing options...
Recommended Posts