1024 미만의 포트는 보호되며 충분한 권한 없이는 사용자가 열 수 없다는 것을 알고 있습니다.
그러나 루트로 실행되지 않더라도 바인딩이나 아파치와 같은 데몬이 어떻게 이를 수행할 수 있는지 알고 싶습니다.
그래서 내 질문은: 바인딩이나 아파치 같은 서버는 어떻게 포트 80, 443 등을 열 수 있습니까?
답변1
Apache는 권한 제거를 지원하는 데몬의 예입니다. 아파치예루트로 시작하고 루트로 포트에 바인딩합니다. 바인딩 후에는 시스템 호출을 사용하여 setuid
권한 setgid
을 낮춥니다. 변경되는 사용자는 사용자 및 그룹 구성 옵션에 따라 결정됩니다.
답변2
모든 애플리케이션은 일련의 루트 기능을 사용할 수 있습니다 setcap
.
그 중 하나가 1024보다 낮은 포트를 여는 경우.
루트가 아닌 사용자로 애플리케이션을 실행할 수 있으며 필요한 기능을 설정하면 문제가 없습니다.
가능한 기능에 대해 알아보세요:http://linux.die.net/man/7/capability.
예를 들어 루트가 아닌 사용자로 apache-tomcat을 실행합니다.
setcap <your needed caps> <java_home>/<java_executable>
실행 파일에 설정된 상한값을 보려면:
getcap /path/to/the/executable