작업 상태
express로 만든 node server.js를 서버에서 실행할때 나온 에러입니다.
에러 메시지
Error: listen EACCES: permission denied 0.0.0.0:443
원인
- 1024 미만의 포트는 특권 포트로 간주되며 루트 또는 슈퍼유저 권한을 가진 프로세스만 바인드할 수 있습니다.
포트 80, 443에 바인드하려는 경우 프로세스가 충분한 권한을 가지도록 해야합니다.
처리
- 관리자 권한으로 node에게 포트 접근 권한을 부여합니다.
]# setcap 'cap_net_bind_service=+ep' /usr/bin/node
~$ getcap /usr/bin/node
/usr/bin/node = cap_net_bind_service+ep
참고
setcap은 파일에 특정 권한을 부여하는 명령어입니다.
-e : effective 효력 부여
-p : Permitted 허용
-i : Inheritable 권한 상속 여부(execve)
-r: is used to remove a capability set from a file.
cap_net_bind_service : 특정 포트에 대한 바인딩 권한을 부여
cap_chown: 파일 소유자 변경 권한
cap_dac_override: 파일 권한 무시 권한
cap_fowner: 파일 소유자 변경 권한
cap_setgid: 그룹 ID 변경 권한
cap_setuid: 사용자 ID 변경 권한
cap_sys_admin: 시스템 관리 권한
cap_sys_chroot: chroot() 시스템 호출을 사용하여 디렉토리를 변경할 수 있는 권한
cap_sys_ptrace: 다른 프로세스를 추적할 수 있는 권한