Computer: Eseguire comandi root con apache e php

Linux adminScritto da tombo :
Qualche volta in ambito intranet, è necessario che l'applicativo php su cui stiamo lavorando sia in grado di eseguire dei comandi shell al fine di abbreviare i processi di sviluppo.
Alle volte questi comandi possono richiedere specifici privilegi riservati all'utente root.
Fermo restando che questa è sempre una pessima idea, vediamo come fare...

Per eseguire comandi shell riservati all'utente root via php con le funzioni system() oppure exec() è possibile utilizzare diversi metodi.
I due descritti qui sotto, permettono di eseguire comandi root senza scrivere le password dell'utente root da nessuna parte...

Uno di questi è usare il trick ssh. In breve bisogna modificare l'utente apache (o quello utilizzato dal web server) fornendo all'utente predetto una shell valida (diversa dalla /sbin/nologin predefinita).
Una volta che l'utente è stato "dotato" della shell si può operare sulle chiavi dsa al fine di consentirgli di conseguire l'obbiettivo desiderato lanciando (orrore!!) qualsiasi comando, compresi quelli privilegiati via ssh.

Un secondo metodo, è quello di utilizzare il meccanismo sudo. Editiamo il sudoers file con visudo ed inseriamo almeno le seguenti direttive:
Defaults:apache !requiretty
apache ALL=NOPASSWD: /mio/path/comandosoloroot
La prima direttiva permette all'utente apache di eseguire comandi anche se non possiede una shell valida.
La seconda consente all'utente apache di eseguire senza password esclusivamente il comando prescelto che richiede privilegio elevato.