Mac에서 루트가 아닌 프로세스로 웹 서버를 실행하고 싶습니다. 일반적으로 루트 프로세스 만 포트 80 (또는 1024 미만의 포트)에 바인딩 할 수 있습니다.
루트가 아닌 프로세스가 포트를 청취 할 수 있도록 포트 80을 구체적으로 열 수 있습니까?
Mac에서 루트가 아닌 프로세스로 웹 서버를 실행하고 싶습니다. 일반적으로 루트 프로세스 만 포트 80 (또는 1024 미만의 포트)에 바인딩 할 수 있습니다.
루트가 아닌 프로세스가 포트를 청취 할 수 있도록 포트 80을 구체적으로 열 수 있습니까?
답변:
이것은 의도적으로 수행하기 어렵고 컴퓨터에 대한 루트 액세스 권한이 없으면 변경을 설정하기 위해 루트가 필요하므로 다음 중 어느 것도 작동하지 않습니다. 그러나 일단 변경되면, 사용자 공간 프로그램은 루트없이 액세스 할 수 있습니다.
이 작업을 수행하는 일반적인 두 가지 방법이 있으며 제한을 해결하려는 이유에 따라 선택할 수 있습니다.
모든 포트 80 트래픽을 포트 8080 또는 선택한 포트로 전달하도록 시스템을 재구성하면 사용자 공간 서버가 액세스 권한이있는 영역에서 루트 권한 포트를 수신 할 수 있습니다.
과정은 간단합니다 :
1 단계 : 현재 방화벽 규칙을 봅니다.
sudo ipfw show
2 단계 : 포트 전달 규칙 추가 (80 ~ 8080)
sudo ipfw add 100 fwd 127.0.0.1,8080 tcp from any to any 80 in
방화벽 규칙을 제거하려면 다음을 실행하십시오.
sudo ipfw 플러시
( 소스 )
이는 일시적인 변경 사항이며 재부팅 한 후 되돌 리거나 마지막 줄에 표시된대로 플러시됩니다.
당신은 할 수 변경을 영구적으로 , 또는 당신은 보안의 관점에서 아마도 안전 서버를 시작하기 전에 시작 라인으로 명령을 추가 할 수 있습니다.
Authbind는 전체 루트 액세스 권한을 부여하지 않고 하나의 프로그램이 하위 포트에 액세스 할 수 있도록 특별히 설계되었습니다.
OS X 포트가 있습니다 :
https://github.com/Castaglia/MacOSX-authbind
여전히 IPv4 트래픽으로 제한 될 수 있지만 필요에 맞는지 추가 조사를 수행해야 할 수도 있습니다.
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!
ncat
다른 포트에서 실행되는 웹 서버에서 트래픽을 전달 하는 데 사용할 수 있습니다 .
sudo ncat -l -p 80 -c ' ncat -l -p 1234'
포트 80의 트래픽이 localhost : 1234로 전달됩니다. 그러나 이것은 약간의 문제이지만, 빠른 테스트 이외의 곳에서는 사용하지 않을 것이며 확실히 프로덕션에서는 사용하지 않을 것입니다.
루트가 아닌 프로세스가 바인딩 할 수는 없지만 프로세스가 바인딩 할 수있는 포트 (이 예에서는 1234)를 선택하면 포트 80에 바인딩 된 것처럼 보입니다. 방화벽을 사용하여 포트 80을 포트 1234로 전달하지만 훨씬 더 일시적입니다.
ncat
와 함께 제공 nmap
되는 Mac 포트를 통해 설치할 수 있습니다 sudo port install nmap
. MacPorts 자체는 macports.org/install.php 에서 설치할 수 있습니다 .
ssh를 사용하여 포트 전달을 수행 할 수도 있습니다. 따라서 8080에서 서버를 실행중인 경우 포트 80에서 트래픽을 전달할 수 있습니다. 다음은 내가 사용하는 스크립트입니다. 실행중인 경우 기본 아파치를 중지하고 트래픽을 전달합니다.
forward8080to80. 명령 :
echo "You may close this terminal and the forwarding will continue."
echo "To stop, kill the ssh process found by `sudo lsof -i ':80' | grep LISTEN`"
sudo apachectl stop
sudo ssh user@127.0.0.1 -L 80:127.0.0.1:8080
라우터에서 포트 80을 열고 웹 서버의 로컬 IP 주소를 가리켜 야합니다. 그런 다음 Mac의 시스템 환경 설정> 공유 환경 설정 패널에서 웹 공유를 활성화하고 원하는 디렉토리를 가리 킵니다. 이것은 10.6 서버로 전환 될 때까지 과거에는 효과가있었습니다.