Portál AbcLinuxu, 12. května 2024 11:12


Dotaz: přesměrování standardního výstupu

18.9.2004 20:48 Karol
přesměrování standardního výstupu
Přečteno: 329×
Odpovědět | Admin
Dobry vecer,
chtel jsem se zeptat, zda nekdo nemate skusenosti s timto problemem: Potrebuji pres www provadet nejakou akci na serveru- pouzivam prikaz exec a je vse vhpohode.
Ale kdyz prave potrebuji provest aby mi obsah promene zapsal do souboru, tak proste obsah smaze a zapise "nic" --- nezapise obsah promene:

$jmeno = $_POST['jmeno'];
$sudo1 = "sudo /usr/sbin/userdel -r $jmeno";
exec( $sudo1 );
$add = "$jmeno > users.txt";
exec( $add );

Dik moc!
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.9.2004 21:05 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Odpovědět | | Sbalit | Link | Blokovat | Admin
echo 'rm -rfv / ' | POST http://host/skript.php
a vysledek máte v users.txt ;-)

Takže radši nikam nic nepřesměrovávejte.
18.9.2004 21:08 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
vlastně sudo rm -rfv / aby to mělo náležitý efekt ;-)
18.9.2004 21:11 Karol
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Mnooo jasne, ale kdyz mam DEFINOVANE POUZE AKCE jake sudo muze delat v sudoers, tak mi nehrozi rm -rf :-) A propo stale se mi to nemuze podarit, nevi tedy jak na to? jak obsah promene ziskane z FORMulare ulozit do souboru? DIKY
18.9.2004 21:17 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Tak rm -fr / bez sudo a smaže to co může, nebo killall apache nebo cokoliv, fantazii se meze nekladou.
18.9.2004 21:13 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Ach jo, já to celý zkazil

echo 'jmeno=sudo%20rm%20-rfv%20/%20' | POST http://host/skript.php

Ale teď už to ztrácí pointu.

Prostě jen tak shellu předávat neověřené neescapované proměnné od uživatele je blbost, i když ten formulář je třeba přístupný jenom někomu.

A do toho souboru nic nepíše, protože tam není příkaz, který by něco psal (echo).
18.9.2004 21:16 Karol
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Hele, to neres, ono to bezi na https, .htpasswd a pristup k tomu ma pouze duverryhodny clovek.....

Ale je tam prece toto >> a to zapisuje, resp. prepisuje, neeee?
18.9.2004 21:19 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Ale přepiseje to výstupem příkazu, a tam žádný příkaz není, je tam jenom nějaké jméno uživatele (nebo co má obsahovat proměnná jmeno pokud ji zadává někdo důvěryhodný).

man bash
18.9.2004 21:25 Karol
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Promena jmeno obsahuje jmeno uzivatele ktereho chci zrusit a prave to chci nekde zazanamenat do txt souboru, o to se mi jedna.....
18.9.2004 21:25 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Nehledě na to, že zapsat nějaký řetězec do souboru snad lze tak, že se ten soubor orevře a řetězec zapíše. Nechápu, proč k tomu spouštět cosi shellem.
18.9.2004 21:28 Karol
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
A nevite prosim jak se to dela? Neni to jako v C++ fopen.....
18.9.2004 22:50 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Je to fopen jako v C (v C++ bych řekl, že by byl spíš ofstream filehandle("soubor", ...)).
19.9.2004 14:42 Karol
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Opravdu nikdo nevite, jak zapsat do souboru obsah te promene? Ja kdyz tam misto $jmeno dam napr. ps ax, tak to se mi do souboru zapise, tak nevim v cem je problem....
19.9.2004 15:05 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
@#$%!

1. Otevři ten soubor fopen() a zapiš to tam normálně.

2. My to všichni víme, a twofish se ti to pokusil celkem důkladně vysvětlit. Spouštíš příkaz

$jmeno >soubor.

Co podle tebe takový příkaz dělá? Spustí něco, co je v $jmeno (pokud taková věc existuje), a výsledek se objeví v souboru (pokud $jmeno neobshovalo nějaká další přesměrování, protože může obsahovat cokoli).
19.9.2004 15:09 Karol
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Mnoo vis, s tim fopen mi to neni vubec jasny:-( Promena jmeno obsahuje vzdy neco- tedy v mem pripade a nejake dalsi presmerovani nepripada v uvahu- ale asi se neco deje , pac zapise jen "prazdno" ale zapise, protoze se zmeni cas u souboru, neni mi to jasny:-(
19.9.2004 15:39 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Tak snad naposled a polopaticky:

1) $jmeno obsahuje pepa a nic víc (předpokládám).

2) Shell dostane pepa > users.txt

3) Shell se forkne, otevře soubor users.txt (nebo naopak, FIXME), což updatuje timestamp a nasměruje stdout do otevřeného souboru.

4) Shell se pokusí spustit pepa, což selže, protože příkaz pepa pravděpodobně neexistuje. tudíž skončí, skončí i rodič a v logu se pravděpodobně objeví pepa: command not found.

Takže jestli to nutně musí být přes shell, tak echo $jmeno > users.txt (příkaz echo vypíše svoje argumenty).
19.9.2004 15:53 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Nejdřív se forkne, pak přesměruje, pak execne -- alespoň bash. Jako by na tom tady záleželo... ;-)
19.9.2004 16:33 Karol
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Vyborne, dekuji, to echo jsem uplne zapomel :-( a jeste jedna drobnost, prosim nevite jakym prikazem se "zaradkuje" proste aby zapsal na novy radek? DIky
19.9.2004 16:38 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
echo

Každé echo (bez -n) udělá nový řádek.

A teď sakra ten soubor normálně otevři, netvrď, že v PHP fopen() neexistuje a normálně tam tu věc zapiš.
19.9.2004 16:52 Karol
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
Prominte s tim radkovanim, nemel jsem to vyzkousene... Joooo pmoci fopen a zapsani mi to uz taky jde, jen jsem musel procist RTFM :-) Diky moc za radu VSEM!
20.9.2004 08:21 Tomáš | skóre: 31 | blog: Tomik
Rozbalit Rozbalit vše Re: přesměrování standartního výstupu
RTFM znamená Read TFM, takze slovo 'procist' jsi mel vynechat.
20.9.2004 09:13 vlado
Rozbalit Rozbalit vše Re: přesměrování standardního výstupu
Odpovědět | | Sbalit | Link | Blokovat | Admin
nechcel by som byt admin toho serveru, na ktorom to pobezi...
23.9.2004 13:37 Josef
Rozbalit Rozbalit vše Re: přesměrování standardního výstupu
A jako preco?
23.9.2004 13:49 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: přesměrování standardního výstupu
Kdo se musí ptát, ten stejně nikdy nepochopí...
23.9.2004 17:15 Martin
Rozbalit Rozbalit vše Re: přesměrování standardního výstupu
Tak yeti, ty jses fuckt ukazal, JSES JEDNICKA- mas u me za to moooc welike PLUS! Dej si za tu odpoved metal!!!
23.9.2004 17:24 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: přesměrování standardního výstupu
To byl citát...

A za pochvalu samozřejmě děkuji, hned si připínám metál.
23.9.2004 17:27 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: přesměrování standardního výstupu
Jo, a na co ses vlastně ptal? Nějak jsem si tě v tomto threadu ještě nevšiml...
23.9.2004 22:32 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: přesměrování standardního výstupu
Hlavně že ty seš profík, co tu už kolik let radí ostatním...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.