Portál AbcLinuxu, 21. července 2025 17:36


Dotaz: Apache spousteni bash skriptu

29.7.2006 23:58 Zmije
Apache spousteni bash skriptu
Přečteno: 263×
Odpovědět | Admin
Zdravim. Pár dní se marně snažím vymyslet jak vytvořit php stránku, ze které by bylo možné měnit některá nastavení iptables. Jde mi hlavně o to aby uživatelé mohli měnit parametry připojení (především připojit a odpojit net popř. nastavit si mac adresu). Je mi jasné že se to neobejde bez menší či větší bezpečnostní trhliny, ale to mi tak zvlášť nevadí protože nemám veřejné ip ani žádné cennosti na routru a počitám s tim. Napadlo mě několik možností: spouštět příkazi rovnou z apache(problémy s právy), spouštět bashovský skript,nebo zapisovat do souboru či databáze mysql a nasledně pomocí bash. skriptu číst. Jaké řěšení byste mi doporučovali (kromě vykašlat se na to a webadmina - chci si to zkusit sám). Četl jsem tady už pár podobných diskuzí, ale nikde to nebylo dořešené. Děkuji za odpověď a omlouvám se za neelegantní řešení.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

30.7.2006 01:34 Marian Krucina | skóre: 13
Rozbalit Rozbalit vše Re: Apache spousteni bash skriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
man sudo

Nastav pro uživatele, pod kterým běží apache, aby mohl spouštět nez hesla skript, nebo rovnou iptables. Zapis aktualniho nastaveni do db nebo souboru by taky nebylo na skodu pro obnoveni stavu po restartu.

Bezpečnostní trhlina to byt nemusi, ale musíš důkladně kontrolovat vstupy od uživatele. Asi nejbezpečnejší by bylo:

php >> sudo >> skript >> iptables

A kontrola by byla v php a ve skriptu.
31.7.2006 15:08 Zmije
Rozbalit Rozbalit vše Re: Apache spousteni bash skriptu
Takže apt-get sudo, načež jsem musel dát apt-get upqrade, pak jsem měl menší problém s tím že jsem editoval jiný sudores než je /etc/sudores a ale po půl dni mě to došlo (mám poněkud delší vedení).
Toto je můj /etc/sudores
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL) ALL
server ALL=(ALL) NOPASSWD: ALL
Opravdu to funguje, ale asi by bylo lepší omezit práva Apache(mimochodem to pod kterým uživatelem poběží jsem nastavil v httpd.conf, klíčovými slovy User server, a Group users, ale User root nastavit nejde) pouze na soubor /etc/network/webconfig, ve kterém bude obslužný bash. skript, ale to zatím bohužel neumím.
Mám ještě jeden lamerský dotaz: jak předám z php do bash skriptu a naopak proměné?
V php bude něco jako exec("sudo /etc/network/webconfiq")
Jak tam přidám řtěz_tam a řetěz_zpět a jak to přečtu a odešlu v bashi?
31.7.2006 15:11 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: Apache spousteni bash skriptu
PHP sice neznám, ale existují i jiné funkce než exec()... Překvapivě slouží přesně k tomu co chcete :-)
31.7.2006 19:10 Zmije
Rozbalit Rozbalit vše Re: Apache spousteni bash skriptu
Omlouvám se za svoji tupost, ale anqlina není moje silná stránka. Prostě sem z toho nějak nevyčet jakou fci mám použit. Zkoušel sem i systém, ale nějak se mi nepodařilo tu proměnou předat.
Tady je výpis php kódu:
$data="neco";
$cmd = "sudo /etc/network/webconfig $data";
system($cmd,$return_value);
echo $return_value;
 ($return_value == 0) or die("returned an error: $cmd");
data je proměná kterou chci předat do skriptu v bashi:
#! /bin/bash
echo "$data"
Ale nic se mi nevrací, respektive se mi vraci hodnota 0 protože operace proběhla úspěšně.
Jak by se to řešilo kdybych chtěl předat více proměných tam i zpět?
31.7.2006 20:09 oron | skóre: 27
Rozbalit Rozbalit vše Re: Apache spousteni bash skriptu
toto by ti malo pomoct http://www.mensik.cz/beranka/dashboard.html
31.7.2006 21:10 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: Apache spousteni bash skriptu
on je ten manual i česky (ale mě se v tom blbě hledá, a fakt jako programátoři co neumí anglicky... to musí být rarita, ne? teda vlastně člověk v čr pod třicet, který neumí anglicky - _to_ musí být rarita, ne?)

http://cz.php.net/manual/cs/ref.exec.php
31.7.2006 21:13 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: Apache spousteni bash skriptu
jinak tam má být něco jako (fakt php neumím :-))
$cmd = '/bin/ls';
$vysl = system($cdm, $ret);
print $vysl;

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.