본문 바로가기

리눅스

[draft] 리눅스에서 일반 사용자가 1024 이하의 포트를 사용할 수 있도록 설정하는 방법

728x90

리눅스에서 일반 사용자가 1024 이하의 포트를 사용할 수 있도록 설정하는 방법(setcap/getcap)

Linux에서 setcap 명령으로 capabilities 설정하기

setcap 명령은 Linux 시스템에서 프로그램 또는 스크립트에 부여할 수 있는 capabilities를 설정하는 데 사용됩니다. Capabilities는 특정 작업을 수행하는 데 필요한 권한 수준을 정의하며, 일반 사용자에게는 허용되지 않는 작업을 수행하도록 프로그램을 승인하는 데 유용할 수 있습니다.

기본 구문

setcap [옵션] capability-spec program_name
  • 옵션
    • -c : 현재 프로세스의 capabilities 설정을 변경합니다.
    • -r : 프로그램에서 설정된 모든 capabilities를 제거합니다.
    • -p : 프로그램의 capabilities 설정을 출력합니다.
  • capability-spec
    • =capability : 프로그램에 해당 capability 부여
    • +capability : 프로그램에 해당 capability 추가
    • -capability : 프로그램에서 해당 capability 제거

예제

Nginx 웹 서버가 1024 이하 포트를 사용하도록 허용

sudo setcap 'cap_net_bind_service=+ep' /usr/sbin/nginx

tcpdump를 사용하여 모든 사용자가 패킷 스니핑을 수행하도록 허용

sudo setcap 'cap_net_raw=+ep' /usr/bin/tcpdump

nc(Netcat) 명령어를 사용하여 포트를 오픈하는 방법을 예제

1. setcap 명령어를 사용하여 권한 설정

  • nc 바이너리에 CAP_NET_BIND_SERVICE 권한을 설정합니다.
sudo setcap 'cap_net_bind_service=+ep' /bin/nc

2. 권한 확인

  • 설정된 권한을 확인하려면 getcap 명령어를 사용합니다.
sudo getcap /bin/nc
/bin/nc = cap_net_bind_service+ep
  • 이 출력은 cap_net_bind_service 권한이 올바르게 설정되었음을 나타냅니다.

3. nc 명령어로 포트 오픈

  • 일반 사용자로 로그인하여 nc 명령어를 사용하여 999 포트를 오픈합니다.
nc -l -p 999

 

nc를 사용하여 999 포트를 리슨(listen)하게 합니다. 이제 포트 999가 일반 사용자에 의해 사용되고 있습니다.

 

참고URL

- 커피닉스 : 일반유저가 1024이하 포트를 사용하려면

 

728x90