permessi di scrittura

catellostefano

Utente Attivo
19 Dic 2008
525
2
0
www.stepo.biz
non so se postare questa domanda qui o in web-server, comunque io ho questa pagina php:

PHP:
<?php
//Recupero i dati
session_start();
$utente = $_SESSION['utente'];
$dominio = $_POST['dominio'];

if($_SESSION['utente'])
    {

//creo il virtual host

$fp=fopen('/etc/apache2/sites-available/','a');
fwrite($fp, 
'
<VirtualHost *:80>
DocumentRoot "/etc/apache2/sites-available/'.$dominio.'"
ServerName '.$dominio.'
ServerAlias www.'.$dominio.'
</VirtualHost>
');
fclose($fp);


//creo la cartella $dominio e le sottocartelle www, dns e error

mkdir("/etc/apache2/sites-available/'.$dominio.'", 0700);

    }
else
    {
	@header("Location: /personale");
    }

//ricarico Apache 
exec("net /etc/int.d/apache2 reload");

?>


<html>
<head>
<title>Dominio aggiunto con successo</title>
</head>
<body>

Il dominio <?php print $dominio;?>, è stato aggiunto al tuo pacchtto hosting con successo.<br>
- Creazione vistrual-host OK<br>
- Creazione zona DNS OK<br>
<a href="/personale">Clicca qui per tornare indietro</a>

</body>
</html>

MA MI DA QUESTO ERRORE:


Codice:
Warning: fopen(/etc/apache2/sites-available/) [function.fopen]: failed to open stream: Is a directory in /home/server/personale/adddomain/creazione.php on line 12

Warning: fwrite(): supplied argument is not a valid stream resource in /home/server/personale/adddomain/creazione.php on line 20

Warning: fclose(): supplied argument is not a valid stream resource in /home/server/personale/adddomain/creazione.php on line 21

Warning: mkdir() [function.mkdir]: Permission denied in /home/server/personale/adddomain/creazione.php on line 26
 
Intanto ti vorrei far notare che /etc/apache2/sites-available è una directory, casomai devi aprire un file con un nome specifico lì dentro. E comunque per scrivere in quella cartella credo che tu debba assegnarle permessi particolari, prova con 0777, ma è veramente una cosa pericolosissima...
 
ok ho modificato in questo modo

PHP:
<?php

session_start();

$dominio = $_POST['dominio'];

if($_SESSION['utente'])
    {

?>

<html>
<head>
<title>Aggiunta dominio al vostro pacchetto hosting</title>
</head>
<body>

<?php

if($_SESSION['utente'])
    {

//creo il virtual host

$fp=fopen('/etc/apache2/sites-available/'.$dominio ,'a');
fwrite($fp, 
'
<VirtualHost *:80>
DocumentRoot "/etc/apache2/sites-available/'.$dominio.'"
ServerName '.$dominio.'
ServerAlias www.'.$dominio.'
</VirtualHost>
');
fclose($fp);


    }
else
    {
	@header("Location: /personale");
    }

//ricarico Apache 
exec("net /etc/int.d/apache2 reload");

?>

Il dominio <?php print $dominio;?>, è stato aggiunto al tuo pacchtto hosting con successo.<br>

</body>
</html>

<?php
}
else
{
      @header("Location: /index.php");
}

?>



- Creazione vistrual-host OK<br>
- Creazione zona DNS OK<br>



Chiaramente i permessi di scrittura non li tengo e mi dice


Codice:
Warning: fopen(/etc/apache2/sites-available/stefano.nino) [function.fopen]: failed to open stream: Permission denied in /home/server/public_html/funzioni/adddomain/creazione.php on line 25

Warning: fwrite(): supplied argument is not a valid stream resource in /home/server/public_html/funzioni/adddomain/creazione.php on line 33

Warning: fclose(): supplied argument is not a valid stream resource in /home/server/public_html/funzioni/adddomain/creazione.php on line 34


Come dò i permessi???
 
a parte la pericolosità di rendere completamente accessibile un file all'interno di una directory di sistema,non credo che /etc sia accessibile dalla root del web server...
 
Eliox, in effetti anche io credo che non sa possibile accedere alle directory di sistema da parte di uno script, in quanto il suo campo d'azione deve comunque rientrare in /var/www o nella directory del Web Server installato.

castellostefano, credo che la soluzione adatta in questo caso sia usare un comando specifico di Apache per abilitare il nuovo Virtual Host, di cui al momento non ricordo il nome perché sono sotto Windows. Comunque per eseguire un comando con PHP usa la funzione system, così:
PHP:
<?php
system('comando');
?>
Ho qualche dubbio, tuttavia, che possa funzionare perché il comando lo devi eseguire come root. Non so, in questi giorni mi documenterò e ti farò sapere.
 
Eliox, in effetti anche io credo che non sa possibile accedere alle directory di sistema da parte di uno script, in quanto il suo campo d'azione deve comunque rientrare in /var/www o nella directory del Web Server installato.

E' possibile farlo con un cgi????

castellostefano, credo che la soluzione adatta in questo caso sia usare un comando specifico di Apache per abilitare il nuovo Virtual Host, di cui al momento non ricordo il nome perché sono sotto Windows. Comunque per eseguire un comando con PHP usa la funzione system, così:
PHP:
<?php
system('comando');
?>
Ho qualche dubbio, tuttavia, che possa funzionare perché il comando lo devi eseguire come root. Non so, in questi giorni mi documenterò e ti farò sapere.


itendi
Codice:
a2ensite sito
??????

ma poi non posso configurare bene il vhost!!!
 
Lo so, è la stessa cosa sulla quale sto meditando io. Anche se probabilmente, conoscendo UNIX, per quel comando ci sono 6000 opzioni e parametri che gli puoi dare per configurare al meglio il Virtual Host. Non so, lasciami provare. Calcola che su questo PC ho appena installato Windows Vista e sto installando 98 aggiornamenti :D
 
Non voglio fare il guastafeste :skull: ogni volta che provate una soluzione, ma anche in questo ci sarebbe un problema di sicurezza se fosse possibile attivare comandi CLI da remoto partendo da una pagina salvata nella root del web server..
 
In ogni soluzione PHP (e se è di questo tipo particolarmente) c'è qualche vulnerabilità da sfruttare. La differenza sta nell'evidenza di questa vulnerabilità :D
finalmente una bella discussione sulla sicurezza:)
Non sono daccordo Alessandro, in questo caso stiamo parlando di dare la possibilità di dar vita ad esecuzioni da remoto tramite comandi (come da sistema), se noti nessun buon hosting permette di utilizzare CLI da codice.
 
infatti ma sarebbe da stupidi permetterlo!!! no???

quello che dico è che comunque il sistemista o gestore di server ha un pannello di controllo per la creazione (in questo caso) delle Vhost es. cPannel, io non voglio creare c Pannel ma qualcosa che mi aiuti nella gestione del server!!!!

cmq in merito alla sicurezza cPannel se vede che tu esegui un comando al di fuori della tua home directory da un errore di sintassi del php (claro anche per l'asp e il resto)
 

Discussioni simili