Newsgroup: it.comp.lang.perl
Titolo: useradd via cgi-bin

Ciao a tutti,
ho la necessità di creare dei nuovi utenti tramite un'interfaccia web (in
particolare devo attivare deglia account e-mail). Suppongo che il comando da
usare sia useradd ma quando ci provo ottengo un "useradd: permission
denied". qualcuno mi sa dare qualche dritta in merito?
grazie
gm

Giuma wrote:

Ti fai un cgi in perl che fa nell'ordine:
1) modifica /etc/passwd ed /etc/shadow
2) crea la home
3) ci copia i file di skel
 
lo metti suid e il gioco e' fatto ( probabilmente apache non gira come root
ecco perche' useradd non funziona)
Oppure dallo script in perl fai richiamare useradd.
Io invece il cgi lo ho fatto i c, nella versione precedente era invece un
perl che faceva una ssh al master NIS+ con accesso via chiave ed aggiungeva
l'account aggiornava il database e mandava una mail a staff.
Luca
-- 
<<>><<>><<>><<>><<>><<>><<<>><<>><<>><<
Luca Paredi
Computing technical supporter              
Universita' degli Studi dell'Insubria  
<<>><<>><<>><<>><<>><<>><<<>><<>><<>><<

 lo metti suid
Suid non funziona sugli script.
Davide
-- 
This planet has -- or rather had -- a problem, which was this: most of
the people living on it were unhappy for pretty much of the time.  Many
solutions were suggested for this problem, but most of these were
largely concerned with the movements of small green pieces of paper,
which is odd because on the whole it wasn't the small green pieces of
paper that were unhappy.
		-- Douglas Adams



Domanda:
useradd aggiunge un utente ma passato così crea anche un account di shell
con ciò che ne consegue..
vorrei capire se ti basta questo o se devi creare le caselle in stile 
in...@dominio1.com
pl...@dominio2.org
pape...@dominio3.net
in questo caso vanno settati pure bind (DNS) e SMTP (postfix)

ho notato che facendo useradd crei anche l'account e-mail....
le mie sono prove empiriche ma ho visto che funziona.... in realtà io non
devo creare account di shell ma solo POP3...
se hai altre soluzioni al posto di adduser te ne sarei grato
gm
"AZX" <A...@AZX.com> ha scritto nel messaggio
news:pan.2004.08.28....@AZX.com...


 
per eliminare la shell il trucco è semplice..
scrippettino..
#!/bin/bash
#verifico i permessi di root
id | grep "uid=0(" >/dev/null
if [ $? != "0" ]; then
        echo "Spiacente per eseguire questo script devi essere root";
        exit 1;
fi
#verifico la presenza di /etc/ftponly
if ! grep -q ftponly /etc/shells
  then
echo "/etc/ftponly" >> /etc/shells
fi
#creo una skel vuota
if ! [ -d /etc/skelweb ]; then
mkdir -p /etc/skelweb/html
mkdir -p /etc/skelweb/cgi-bin
fi
#########finescript#######
a questo punto passi il comando:
useradd  $nomeutente -c $commento -s /etc/ftponly -d
/home/$nomeutente -mk /etc/skelweb
ed ottieni la home dir sotto /home/nomeutente (vuota) e priva di shell
ma tornando al problema iniziale...
per accedere come root via web non puoi passare tramite apache o meglio..
puoi ma è meglio evitare per ragioni di sicurezza..
La soluzione più ovvia e semplice è di utilizzare un altro demone http
che gira con i permessi di root e perché no, con SSL abilitato
quindi..
scarichi webmin da 
www.webmin.com
 (rpm o tgz)
funziona su tutti i sistemi Linux, BSD, SCO e Mac OSX e ti fornisce un
interfaccia standard per amministrare il sistema..
dopodiché scarichi Net::SSL 
perl -MCPAN -e shell
install Net::SSL
accedi via 
http://localhost:10000
 come root
configuri la lingua e abiliti il supporto SSL 
dopodiché puoi riloggarti via 
https://ecc
..
ora non ti resta che creare un modulo customizzato che fa ciò che vuoi
semplicissimo...
mkdir miomodulo 
cd miomodulo
mkdir images
e qui puoi salvare un icona a piacere che dovrai chiamare icon.gif
touch 
module.info
e dentro ci scrivi qualcosa come:
name=miomodulo
desc=Il mio primo modulo webmin
os_support=solaris redhat-linux mandrake-linux debian-linux slackware-linux suse-linux united-linux aix hpux freebsd osf1 irix unixware openserver macos open-linux turbo-linux openbsd corel-linux cobalt-linux lfs-linux netbsd msc-linux generic-linux gentoo-linux trustix-linux
depends=1.0
category=servers
ultima operazione..
touch index.cgi
e dentro ci scrivi:
#!/usr/bin/perl
do '../
web-lib.pl
';
&init_config();
header();
&ReadParse();
############## fin qui sono campi obbligatori #####
if($in{'submit'} ){
if($in{'username'} and $in{'password'}){
#passati i valori ci fai quel che ti pare
print "Username: $in{'username'}<br>"; 
print "Password: $in{'password'}<br>"; 
}
}
print <<EOF;
<br><br><form ACTION="index.cgi" METHOD="post" name="demoform">
Nome utente<input type="text" name="username" size="50"><br>
Password:<input type="text" name="password" size="50"><br>
<input type="submit" name="submit" value="Invia"><input type="reset"
name="reset" value="Reset"><br>
EOF
print "Io mi trovo qua: $module_root_directory"; 
fatto tutto ciò non ti resta che creare il modulo 
quindi cd .. 
cd ..
ls
e dovresti vedere la cartella miomodulo
quindi :
tar cvfz miomodulo.tar.gz miomodulo/
et voilà un nuovo modulo pronto per essere installato
quindi vai sotto 
https://localhost:10000/webmin/edit_mods.cgi
e lo installi, ovviamente andrà sotto la categoria servers
ora puoi andare sotto la voce Webmin Users e creare un utente
"amministratore" con relativa password e dare accesso esclusivo a quel
modulo (se ti va..)
Così in meno di 2 minuti hai risolto:
Login e gestione dei permessi
Cifratura delle password tra client e server (SSL) e di tutto il traffico
Portabilità del software con relativa semplicità di installazione a
prova di winzozziano..
Risparmio di 1 indirizzo IP per abilitare SSL
e qualche altra cosina...
NB. con due piccoli ritocchi potresti anche scrivere codice in PHP e
farcelo girare dentro (questo per la cronaca)
Inoltre non dimenticare l'estrema portabilità di webmin tra i vari S.O.
ed il non indifferente vantaggio di avere accesso a tutto il file system
con i permessi di root (occhio a non fare cazz..e però)

sei un grande..
ora provvedo
ciao
gm
"AZX" <A...@AZX.com> ha scritto nel messaggio
news:pan.2004.08.30....@AZX.com...
