Quiero ejecutar un servidor web en mi Mac como un proceso no root. Normalmente, solo los procesos raíz pueden unirse al puerto 80 (o a cualquier puerto por debajo de 1024).
¿Puedo abrir el puerto 80 específicamente para que los procesos no root puedan escucharlo?
Respuestas:
Esto es difícil de hacer por diseño, y a menos que tenga acceso de root a su máquina, ninguno de los siguientes funcionará, ya que requieren root para configurar los cambios. Sin embargo, una vez cambiados, los programas de espacio de usuario tendrán acceso sin tener root.
Hay dos formas comunes de lograr esto, y la que elija dependerá de por qué está tratando de evitar la restricción:
Apunte el puerto 80 a otro puerto, como 8080
Al reconfigurar su máquina para pasar todo el tráfico del puerto 80 al puerto 8080, o cualquier puerto de su elección, puede permitir que los servidores de espacio de usuario reciban puertos de privilegio raíz en el área a la que tienen acceso.
El proceso es sencillo:
( fuente )
Este es un cambio temporal, y se revertirá una vez que reinicie o se vacíe como se indica en la última línea.
Puede hacer que el cambio sea permanente , o puede agregar el comando como una línea de inicio antes de iniciar su servidor, lo que probablemente sea más seguro desde el punto de vista de la seguridad.
Use Authbind
Authbind fue diseñado específicamente para permitir el acceso de un programa a puertos de nivel inferior sin darle acceso completo a la raíz.
Hay un puerto MacOSX:
https://github.com/Castaglia/MacOSX-authbind
Sin embargo, aún puede estar limitado al tráfico IPv4, por lo que es posible que tenga que hacer una investigación adicional para determinar si cumple con sus necesidades.
fuente
launchd
.plist
... `"ProgramArguments": [ "path/to/authbind", "/usr/bin/php", "-c", "/www/.router.ini", "-S", "0.0.0.0:80", "-t", "/www", "/www/.router.php"]
Woohoo!ipfw
. Esta esencia describe una solución alternativa usandopf
.Puede utilizar
ncat
para reenviar el tráfico de un servidor web que se ejecuta en otro puerto:Esto reenviará el tráfico en el puerto 80 a localhost: 1234. Sin embargo, esto es un poco complicado, no lo usaría en ningún lugar más allá de las pruebas rápidas y definitivamente no en producción.
Tenga en cuenta que esto no permitirá que un proceso no root se una a él, pero al elegir un puerto al que se pueda unir el proceso, 1234 en este ejemplo, parecerá que está vinculado al puerto 80. Esto está haciendo el equivalente de reenvío del puerto 80 al puerto 1234 con un firewall, pero de forma mucho más temporal.
fuente
ncat
viene con elnmap
que se puede instalar a través de puertos Mac consudo port install nmap
. MacPorts se puede instalar desde macports.org/install.php .También puede usar ssh para reenviar puertos. Entonces, si tiene un servidor que se ejecuta en 8080, puede reenviar el tráfico desde el puerto 80. Aquí hay un script que uso, que detiene el apache nativo si se está ejecutando y reenvía el tráfico:
forward8080to80.command:
fuente
Lo que debería poder hacer es abrir el puerto 80 en su enrutador y apuntarlo a la dirección IP local de su servidor web. Luego, en su Mac, habilite Compartir web desde el panel de preferencias Preferencias del sistema> Compartir y apúntelo al directorio que elija. Esto me ha funcionado en el pasado hasta que cambié al servidor 10.6.
fuente