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.
#####################################################
# 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)
Va, luego de eso ya podemos ejecutar cualquier script de perl sin el problema que lo ejecute otro usuario sino cuca.
# 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>
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
Publicar un comentario