🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #5972

Re: PHP APACHE y nobody

#5972
From: Jesús M. NAVARRO
Date: Wed, 20 Aug 2003 12:25
79 lines
4716 bytes
Hola, Alex:

Alex Estevez escribi� en es.comp.os.linux.programacion:

> 
> En todo caso, tengo hecho un script sh que se encargara de realizar la
> tarea de dar el alta y este script sera llamado por el php.
> 
> ahora bien, este script necesitara permisos de root. mi idea, es que el
> script se ejecute con permisos de root, y lo que haga es lo siguiente.
> Compruebe que el user que se quiere crear, existe dentro de una BBDD
> mysql y si es asi, haga el adduser pertinente.
> 
> El unico problema es ejecutarlo en modo root. En teoria si yo hago un
> 
>   #chmod 6755 myscript.sh
> 
> deberia ejecutarse como root si este myscript.sh es tiene por
> propietario a root no? lo tengo con propietario root y grupo root y no
> se ejecuta como root.
> 

Como sabes, ning�n script ni programa se ejecuta como el usuario al que
*pertenece*, sino como el usuario *que lo invoca*.  Esto es bastante
sensato �no te parece?

> dentro del script puse el comando 'id' a ver ... y no se ejecuta como
> root sino como yo cuando lo hago desde consola, o nobody desde php.
> 

En efecto.

> o yo no he entenido bien eso del suid y el sgid, o alguna cosa no hago
> bien.
> 

Creo que lo has entendido bien, pero no has tenido en cuenta todos los
detalles (ya sabes; el diablo est� en los detalles): En teor�a, al hacer un
ejecutable suid a un usuario, el programa se ejecutar� con el usuario
efectivo que es propietario del fichero.  *PERO*, hacer un programa suid,
sobre todo si es a root, es tan peligroso y es tan dif�cil hacer que un
script sea m�nimamente seguro que Linux "no hace honor" al bit SUID en los
scripts.  En definitiva, contra lo que pone el libro, un script no se
ejecuta en modo SUID.

Alternativas:
* Hacer que el script no sea tal, sino un ejecutable compilado; en este caso
el sistema s� "har� honor" al bit SUID y podr�s ejecutarlo como root.  El
problema es similar al del script: a menos que seas bastante experto en
programaci�n de sistemas, corres un grave riesgo de dejar en el sistema un
agujero del tama�o de una boca de metro.
* Ejecutar Apache con el suwrapper, que permite que ciertas partes de la web
se ejecuten con un "usuario cambiado" (viene a ser equivalente a tener una
parte de la web permanentemente en suid).  Est�s en lo mismo: cualquier
errorcillo y se podr� obtener una "shell escapada" y, por tanto, acceso a
root desde donde se pueda alcanzar a esa web.
* El m�todo desacoplado: hacer lo que te dije en mi primer mensaje.  Puede
que lo veas enrevesado pero, como te dije, se trata de la opci�n m�s
natural puesto que remeda lo que har�a un "usuario real" de encontrarse en
la misma circunstancia: explicarle el problema a un administrador y dejar
que �l haga el trabajo.  El desacople te permite tener dos puntos de
control de la informaci�n y minimizar el paso de par�metros a la parte que
se ejecuta con altos privilegios (idealmente, no se deber�a pasar ning�n
par�metro pero esto, en este caso, es imposible pero, al poder utilizar un
fichero de intercambio cuyo formato de datos deber�a ser muy sencillo -por
ejemplo, una l�nea para cada par�metro, login/password, etc.- es m�s
sencillo de controlar mediante expresiones regulares: basta recordar que no
se trata de validar todo lo que pueda aparecer en el fichero, sino de
buscar expl�citamente cosas con el formato m�nimo preestablecido; todo lo
dem�s ni si quiera se revisa).

Si se trata �nicamente de esta cosa puntual mi consejo es que lo m�s seguro
es seguir la tercera opci�n.
-- 
SALUD,
Jes�s
***
jesus_navarro@undominio.net
***
Technical Details
Message-ID: <ju5c11-6dr.ln1@mithrandir.intranet>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.freenet.de!fu-berlin.de!uni-berlin.de!212.97.189.72!not-for-mail
References: <3F2F9BCD.8050601@SPAMpuertatel.com> <ltt401-3kc.ln1@mithrandir.intranet> <3F434C4E.1070705@SPAMpuertatel.com>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,9afc73b3e3571e08
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2003-08-20 06:12:35 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.freenet.de!fu-berlin.de!uni-berlin.de!212.97.189.72!not-for-mail
From: Jesús M. NAVARRO <jesus_navarro@undominio.net>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: PHP APACHE y nobody
Date: Wed, 20 Aug 2003 14:25:21 +0200
Lines: 79
Message-ID: <ju5c11-6dr.ln1@mithrandir.intranet>
References: <3F2F9BCD.8050601@SPAMpuertatel.com> <ltt401-3kc.ln1@mithrandir.intranet> <3F434C4E.1070705@SPAMpuertatel.com>
NNTP-Posting-Host: 212.97.189.72
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-15
Content-Transfer-Encoding: 8Bit
X-Trace: news.uni-berlin.de 1061385154 3902346 212.97.189.72 (16 [173178])
X-Orig-Path: mithrandir.intranet!news
User-Agent: KNode/0.7.2