Quero executar um servidor Web no meu Mac como um processo não raiz. Normalmente, apenas processos raiz podem se ligar à porta 80 (ou a qualquer porta abaixo de 1024).
Posso abrir a porta 80 especificamente para que processos não raiz possam ouvi-la?
Respostas:
Isso é difícil de fazer por design e, a menos que você tenha acesso root à sua máquina, nenhuma das opções a seguir funcionará, pois elas exigem root para configurar as alterações. Uma vez alterados, porém, os programas do espaço do usuário terão acesso sem ter raiz.
Há duas maneiras comuns de fazer isso, e a escolha depende do motivo pelo qual você está tentando contornar a restrição:
Aponte a porta 80 para outra porta, como 8080
Ao reconfigurar sua máquina para passar todo o tráfego da porta 80 para a porta 8080 ou qualquer porta de sua escolha, você pode permitir que os servidores de espaço do usuário recebam portas de privilégios de root na área à qual têm acesso.
O processo é direto:
( fonte )
Essa é uma alteração temporária e será revertida quando você reiniciar ou liberar conforme indicado na última linha.
Você pode tornar a alteração permanente ou adicionar o comando como uma linha de inicialização antes de iniciar o servidor, o que provavelmente é mais seguro do ponto de vista de segurança.
Use Authbind
O Authbind foi projetado especificamente para permitir que um programa acesse portas de nível inferior sem fornecer acesso root completo.
Há uma porta MacOSX:
https://github.com/Castaglia/MacOSX-authbind
No entanto, ele ainda pode estar limitado ao tráfego IPv4; portanto, talvez seja necessário fazer uma investigação adicional para descobrir se ele atende às suas necessidades.
fonte
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 essência descreve uma solução alternativa usandopf
.Você pode usar
ncat
para encaminhar o tráfego de um servidor da web em execução em outra porta:Isso encaminhará o tráfego na porta 80 para o host local: 1234. No entanto, isso é um pouco complicado, eu não o usaria além de testes rápidos e definitivamente não estava em produção.
Observe que isso não permitirá que um processo não raiz se vincule a ele, mas escolhendo uma porta à qual o processo possa se vincular, 1234 neste exemplo, parecerá que ele está vinculado à porta 80. Isso está fazendo o equivalente a encaminhando a porta 80 para a porta 1234 com um firewall, mas em uma base muito mais temporária.
fonte
ncat
vem com onmap
qual pode ser instalado via portas Mac comsudo port install nmap
. O próprio MacPorts pode ser instalado em macports.org/install.php .Você também pode usar o ssh para encaminhar portas. Portanto, se você possui um servidor em execução no 8080, pode encaminhar o tráfego da porta 80. Aqui está um script que eu uso, que interrompe o apache nativo se estiver em execução e encaminha o tráfego:
forward8080to80.command:
fonte
O que você deve poder fazer é abrir a porta 80 no seu roteador e apontá-la para o endereço IP local do seu servidor web. Em seguida, no seu Mac, ative o Compartilhamento da Web no painel Preferências do sistema> Compartilhamento e aponte-o para o diretório de sua escolha. Isso funcionou para mim no passado até passar para o 10.6 Server.
fonte