2017-11-06 2 views
0

내가, 내가 strace를 함께 실행 방법 arping 작품을 알아 내려고 노력 해요 통해 실행할 때 내가 얻을 :arping : EPERM는 strace를

socket(PF_PACKET, SOCK_DGRAM, 0)  = -1 EPERM (Operation not permitted) 

내가 strace를하지 않고 실행하면 작업 및 ARP 패킷 도착 보냈습니다. 이것이 어떻게 가능한지? 내 사용자가 할 권한이없는 일을 어떻게 처리합니까?

원래 하나를 실행하면 작동
~/tmp$ sudo cp /usr/bin/arping . 
~/tmp$ ./arping -I enp2s0f0 192.168.2.1 
arping: socket: Operation not permitted 

동안 : 난 그냥 집하고 실행하는 실행 파일 복사하면 흥미롭게도

ls -lrtah `which arping` 
-rwxr-xr-x 1 root root 19K Mai 7 2014 /usr/bin/arping 

더, 나는 같은 오류가 발생합니다 :

그것은이 setuid 비트도 설정되어 있지 않습니다
~/tmp$ arping -I enp2s0f0 192.168.2.1 
ARPING 192.168.2.1 from 1.2.3.4 enp2s0f0 

답변

2

arping 이 필요 CAP_NET_RAW 위해 권한을 (기능 일명) 낮은 수준의 PA를 보낼 수 있도록 그것이 사용하는 ckets. (기타 유닉스 버전 [이상 리눅스 버전] 대한 setuid 루트 대신에 설치된 프로그램을 가질 수있다.) 관찰 : 특권 실행 파일 strace D되게

$ getcap /usr/bin/arping 
/usr/bin/arping = cap_net_raw+ep 

를 (또는 추적/전혀 ptrace(2) 통해 디버깅) 는 잠재적 인 보안 문제이므로 실행 파일을 추적 할 때 추적 프로세스에 이미 권한이 설정되어 있지 않으면 커널은 실행 중에 모든 기능 또는 Set-UID를 제거합니다. 즉, 당신이 sudo strace arping ... (권한이있는 경우)으로이 문제를 해결할 수 있습니다.

관련 문제