나는 일반 사용자로부터 dhclient를 실행하기 위해 setcap을 사용하여 다소 실망스러운 상황에 직면했습니다. 제가 작업 중인 환경으로 인해 sudoers에 추가하는 것은 옵션이 아닙니다.
내 시도:
sudo setcap 'CAP_NET_BIND_SERVICE,CAP_NET_RAW=+ep' /sbin/dhclient
그런 다음 getcap을 통해 기능이 실제로 올바르게 설정되었는지 확인했습니다. 하지만 실행하면 허용되지 않는 작업이 발생합니다. 그런 다음 strace에서 실행하여 socket(PF_NETLINK, SOCK_RAW, 0) = 4
몇 가지 다른 시스템 호출을 보여주었고 PF_PACKET에서 읽은 모든 내용은 socket(PF_PACKET, SOCK_RAW, 768) = -1 EPERM (Operation not permitted)
cap_net_raw만 필요하다는 것을 나타냅니다.
Linux 3.16.0-77-generic #99~14.04.1-Ubuntu SMP Tue Jun 28 19:17:10 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux