Ejecutar comandos linux

Hola, me gustaria saber la forma de hacer llamadas a órdenes del sistema desde un archivo .modules
Por ejemplo si quiero crear un directorio en un momento dado,¿como sería este código dentro del archivo?
En C sería system(mkdir /carpeta_nueva); ¿¿y en drupal?? El S.O. en mi caso es Linux

Gracias

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Prueba con exec

Si no me equivoco la función exec te permite hacerlo en PHP.

¡Saludos!

Alexis Bellido
Aprende a usar Drupal en menos de 48 horas

falla adduser

Hola, en efecto exec es la orden para hacerlo,el problema es que si se quieren ejectuar órdenes que precisan de privilegios de administrador,parece que el servidor (Apache en mi caso) pasa de ellas,sin mostrar error ni nada.
¿Alguien sabe como hacerlo?

Gracias...

No es posible o recomendable hacerlo

Permitir que Apache ejecute comandos que solo un usuario root debería no es recomendable. ¿Qué es lo que quieres hacer en realidad? Talvez sea bueno investigar otras alternativas.

Saludos.

Alexis Bellido
Aprende a usar Drupal en menos de 48 horas

Me explico...

El propósito es instalar drupal en un servidor para una red cerrada, es decir, los usuarios solo podrán entrar en el sistema de drupal si intentan la conexión desde ciertas ip's pertenecientes a la red interna (aún tengo que averiguar como filtrar ip's).
Mi intención es que solamente el administrador pueda crear usuarios, y en el momento de crearlos, que se añada este usuario al sistema (en el servidor,creando /home/user,etc...). De aquí que quiera ejecutar la orden adduser.
No creo que sea peligroso que Apache ejecute órdenes en este caso, ya que las conexiones serán internas, y en mi red no deberían haber usuarios maliciosos :-)

¿Podrías decirme como permitir a Apache esto, o si conoces alguna alternativa mejor?

Gracias!!

Veo tres opciones

  1. Añadir el usuario en el que corre Apache al grupo al que pertenece el usuario root.
  2. Tomar los comandos que quieres ejecutar desde Drupal, es decir desde Apache, como adduser, y asignarles como grupo el mismo grupo del usuario Apache. Luego darles permiso de ejecución con chmod g+x.
  3. Un poco más drástico y no sé si Apache lo permita, modificar httpd.conf y cambiar el usuario, creo que es la directiva User, de apache (o nobody o la que tengas) a root.

Imagino hay más formas de hacerlo. Nos comentas como funciona.

¡Saludos!

Alexis Bellido
Aprende a usar Drupal en menos de 48 horas

prueba

prueba (lo siento...)

...

Opcion 3: Apache2 no permite arrancar con la directiva User root (almenos en xampp).

Modifico httpd.conf para

Modifico httpd.conf para ejecutar con directivas User nobody, Group root

Opcion 1: Añadido el usuario 'nobody' al grupo 'root' sigue poder sin ejecutar adduser y useradd. Despues de hacer muuuuchas pruebas, desde la misma consola, con un usuario del grupo root (habiendo cambiado el grupo de adduser y useradd a root,y añadiendo permisos de ejecucion para el grupo) me doy cuenta que tampoco se puede. Unica y exclusivamente puede el usario root,o en su defecto,con sudo si que se puede,pero Apache pasa olimpicamente de sudo (habiendo añadido al usuario nobody con privilegios ALL),asi q estamos en las mismas.

sigue...

Opcion 2: Probada dentro de la Opcion 1 y nada.
Llevo muchos dias leyendo por foros e info oficial y las opciones que comenta alexis son las unicas soluciones que he encontrado.
Seguire buscando solucion, ya por orgullo. Creo que la clave esta en que Apache sea capaz de ejecutar desde sudo, pero no encuentro nada de info al respecto.
Mi otra duda es si instalando por paquetes Apache2,mysql,phpmyadmin,etc.... me permitiria ejecutar Apache como root.Yo lo tengo instalado todo con xampp, que no permite esta opcion.
De todas formas, muchas gracias, Alexis