Ejecutar script de perl con otro usuario, suEXEC apache2 en ubuntu 9.04 / Debian Lenny

Dado que necesito ejecutar un script de perl desde web pero que sea ejecutado con OTRO uid diferente de www-data encontré que es posible hacer esto vía un módulo de apache llamado suEXEC, a continuación se muestra la bitacora de instalación y pruebas.

# aptitude apache2-suexec-custom  libapache2-mod-perl2

Se eligió la versión personalizada dado que no quiero que por omisión el /var/www sea el directorio a trabajar sino otro, como el /home/user

# cd /etc/apache2/mods-available
# ln -s /etc/apache2/mods-available/suexec.load
# a2enmod perl
# /etc/init.d/apache2 restart
a2enmod es otra forma de habilitar el módulo.

Agregar la ruta del archivo en /etc/apache2/suexec/www-data

/home/cuca/public_html
/var/www
public_html/cgi-bin
# The first two lines contain the suexec document root and the suexec userdir
# suffix. Both features can be disabled separately by prepending a # character.
# This config file is only used by the apache2-suexec-custom package.

El archivo /etc/apache2/sites-enabled/cuca   queda así:


#####################################################
# Cuentas de Usuarios Creadas Automaticamente hacia #
# mail.usac.edu.gt zimbra                           #
#####################################################

VirtualHost *:80>
DocumentRoot /home/cuca/public_html
ServerName cuca.usac.edu.gt
ServerAlias cuca.usac.edu.gt
SuexecUserGroup cuca cuca
        Directory /home/cuca/public_html>
                AddHandler perl-script .cgi .pl
                AddHandler cgi-script .cgi .pl
                AddHandler php-script .php
                DirectoryIndex index.html index.pl index.cgi
                Options +ExecCGI
                AllowOverride All
        /Directory>
        CustomLog /var/log/apache2/cuca_cus.log combined
        ErrorLog /var/log/apache2/cuca_err.log
/VirtualHost>

# (Ojo, hay que agregar el símbolo "<" en las etiquetas de arriba donde corresponda)

Para probar un script de perl 
$pico /home/cuca/public_html/1.pl

#!/usr/bin/perl
use CGI qw/:standard/;
print "Content-type: text/html\n\n";

$w=`id`;
print $w;
system(ls>maje.txt);
$ll=`cat maje.txt`;
print $ll;

print <<"EOM";
suEXEC Test Page
EOM
exit;

Para cambiar el modo de ejecución, y hacer que solamente tenga permisos totales para el usuario cuca:
$chmod 700 1.pl

Debería ser interpretado y mostrar algo como la siguiente imagen:








Va, luego de eso ya podemos ejecutar cualquier script de perl sin el problema que lo ejecute otro usuario sino cuca.

Comentarios

Entradas populares