본문 바로가기

01. operation/i. Theory

1024 이하 포트를 일반 사용자로 서비스 (setcap / getcap)

서비스를 운영중 1024 이하 포트들은 root권한으로 프로그램이 실행되어야 합니다.

 ※관련 내용 : http://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html


하지만, redhat (centos) 6.x 버전으로 올라오면서 이에 대한 제한을 해제가 가능합니다.

 (kernel version : 2.6.25)


해당 패키지 정보 : libcap

Name        : libcap                       Relocations: (not relocatable)

Version     : 2.16                              Vendor: CentOS

Release     : 5.5.el6                       Build Date:

Install Date:                                  Build Host: c6b18n2.bsys.dev.centos.org

Group       : System Environment/Libraries   Source RPM: libcap-2.16-5.5.el6.src.rpm

Size        : 64437                            License: LGPLv2+ or BSD

Signature   : RSA/SHA1, 2011년 12월 09일 (금) 오전 05시 15분 52초, Key ID 0946fca2c105b9de

Packager    : CentOS BuildSystem <http://bugs.centos.org>

URL         : http://ftp.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.6/

Summary     : Library for getting and setting POSIX.1e capabilities

Description :

libcap is a library for getting and setting POSIX.1e (formerly POSIX 6)

draft 15 capabilities.

/lib64/libcap.so.2

/lib64/libcap.so.2.16

/lib64/security/pam_cap.so

/usr/sbin/capsh

/usr/sbin/getcap

/usr/sbin/getpcaps

/usr/sbin/setcap

/usr/share/doc/libcap-2.16

/usr/share/doc/libcap-2.16/License

/usr/share/doc/libcap-2.16/capability.notes

/usr/share/man/man1/capsh.1.gz

/usr/share/man/man8/getcap.8.gz

/usr/share/man/man8/setcap.8.gz


usage:

 > setcap

    권한을 주거나, 빼앗을수 있다.

ex> setcap 'cap_net_bind_service=+ep' filename

설명1 : setcap 명령어를 통해

        : cat_net_bind_service를 설정한다

        : 권한은 허가/효과/상속 중 허가, 권한을 부여한다 (+ep)

        : 이것은 filename 설정

 설명2 : cap_*

         : 기존 root권한으로 실행되는것(?)들을 부여할수 있다. (상세 하단 man page url 참조)

 설명3 : + or -

         : 권한을 빼앗거나, 주거나

 설명4 : eip

          : Permitted / Inheritable / Effective

    

 > getcap

    설정된 값을 확인 할 수 있다.

 ex> getcap filename


===================================================================================================

[root@kki bin]# setcap 'cap_net_bind_service=+epi' t4imapd

[root@kki bin]# getcap t4imapd

t4imapd = cap_net_bind_service+eip

===================================================================================================


man page : http://man7.org/linux/man-pages/man7/capabilities.7.html