sábado, 12 de noviembre de 2022

Debian Linux apache2 Habilitar cgi python perl ruby por usuarios en Directorios public_html/cgi-bin : userdir.conf

Debian Linux apache2 Habilitar cgi python perl ruby por usuarios en Directorios public_html/cgi-bin : userdir.conf

Por: Alexander Arias

Fecha: 2022-11-13

1. Activar cgi en apache 2

 $ sudo a2enmod cgi

2. Guardar una copia de /etc/apache2/mods-enabled/userdir.conf

 $ cp /etc/apache2/mods-enabled/userdir.conf /etc/apache2/mods-enabled/userdir.conf.old

3. Permitir a los directorios cgi-bin del user1 y user2, se hace de dos formas:

para user1 con  SetHandler cgi-script, esta habilita todo lo que este en la carpeta como cgi

para user2 con   AddHandler cgi-script .cgi .pl .py .rb

        <Directory /home/user1/public_html/cgi-bin>
                Options +ExecCGI
                SetHandler cgi-script
        </Directory>

        <Directory /home/user2/public_html/cgi-bin>
                Options +ExecCGI
                AddHandler cgi-script .cgi .pl .py .rb
        </Directory>
4. El archivo completo userdir.conf queda:

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                Require method GET POST OPTIONS
        </Directory>

        <Directory /home/user1/public_html/cgi-bin>
                Options +ExecCGI
                SetHandler cgi-script
        </Directory>

        <Directory /home/user2/public_html/cgi-bin>
                Options +ExecCGI
                AddHandler cgi-script .cgi .pl .py .rb
        </Directory>

</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

5. Reiciniciar el apache
 $ systemctl restart apache2

6. Crear las carpetas cgi-bin para user1 y user 2
$ mkdir /home/user1/public_html/cgi-bin
$ mkdir /home/user2/public_html/cgi-bin
7. Se crean los archivos test.cgi para cada usuario dentro de las carpetas cgi-bin

test.cgi para user1
#!/usr/bin/python3

print("Content-type: text/html\n")
print("<html>\n<body>")
print("<div style=\"width: 100%; font-size: 40px; font-weight: bold; text-align: center;\">")
print("CGI Script Test Page User1")
print("</div>")
print("</body>\n</html>")

test.cgi para user2
#!/usr/bin/python3

print("Content-type: text/html\n")
print("<html>\n<body>")
print("<div style=\"width: 100%; font-size: 40px; font-weight: bold; text-align: center;\">")
print("CGI Script Test Page User2")
print("</div>")
print("</body>\n</html>")

8. Permisos para los archivos
$chmod 705 /home/user1/public_html/cgi-bin/test.cgi

$chmod 705 /home/user2/public_html/cgi-bin/test.cgi


9. ir a un browser y escribir con dominio o localhost:

localhot/~user1/cgi-bin/test.cgi

CGI Script Test Page User1

localhot/~user2/cgi-bin/test.cgi

CGI Script Test Page User2

10. Una observación de AddHandler para user2 es que deja ver el contenido de la carpeta cgi-bin y de alli se ven los cgi pero no descagan, se ejecutan al descargar


Referencias:

https://www.server-world.info/en/note?os=Debian_11&p=httpd&f=5

https://www.server-world.info/en/note?os=Debian_10&p=httpd&f=5

https://es.wikieducator.org/Usuario:Lmorillas/desarrollo_web_servidor/apache_cgi


No hay comentarios:

Publicar un comentario