디렉토리를 나열할 때 빨간색 배경에 노란색 텍스트로 표시되는 /usr/bin
것을 볼 수 있습니다 .ping
이 파일에는 특별한 기능이 없습니다.
$ file /usr/bin/ping
/usr/bin/ping: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV),
dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for
GNU/Linux 2.6.32, BuildID[sha1]=2508ea2a85b70c68967b3e6345541430f5317d5f,
stripped
$ stat /usr/bin/ping
File: '/usr/bin/ping'
Size: 62096 Blocks: 136 IO Block: 4096 regular file
Device: 802h/2050d Inode: 4457229 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:ping_exec_t:s0
Access: 2016-11-01 10:02:57.332925719 +0100
Modify: 2016-06-22 14:01:14.000000000 +0200
Change: 2016-07-10 23:41:59.623796126 +0200
Birth: -
~에 따르면터미널의 다양한 색상은 무엇을 의미하나요?여기서 우리는 "ca"를 의미하는 "yellow-on-red"라는 색상 해석을 나열하는 스크립트를 찾을 수 있습니다.
"ca"은(는) 무슨 뜻인가요? 아마도 이는 파일이 다른 곳에서 하드 링크되었음을 의미할 수 있습니다( 동일한 파일임) /usr/bin/ping
./usr/ping
PS 시청할 때 이 문제가 발생했습니다.더러운 소를 설명하다, ping
Ubuntu의 명령이 setuid 루트로 나타나는데 이상하게 들립니다.
답변1
이는 ping
추가 기능이 있음을 의미합니다.
$ getcap /usr/bin/ping
/usr/bin/ping = cap_net_raw+ep
짝수(Fedora에서는 최대 30개):
$ getcap /usr/bin/ping
/usr/bin/ping = cap_net_admin,cap_net_raw+ep
이를 통해 ping
.NET으로 실행하지 않고도 원시 소켓을 열고 ICMP 패킷을 보내고 받을 수 있습니다 root
.setcap(8)
그리고capabilities(7)
자세한 내용을 제공하세요.
역사적으로 ping
setuid는 원시 소켓으로 실행되고 root
원시 소켓을 사용할 수 있도록 설치되었습니다. 많은 배포판은 권한 제어를 위해 제공되는 보다 세밀한 세분화로 인해 이러한 기능을 사용할 수 있게 된 후 이러한 기능으로 이동했습니다. 하지만 우분투에서는확실히 설치 프로그램에 문제가 있는 것 같습니다.이므로 ping
setuid는 여전히 설치되어 있습니다 root
(함수 코드는관련 관리자 스크립트, Debian에서 ping
구성됨활용능력가능하다면).
ping
맨페이지요구 사항을 설명그러므로:
ping
CAP_NET_RAW
1) 프로그램이 에코가 아닌 쿼리에 사용되는 경우(옵션 참조 ), 2) 커널이 원시가 아닌 ICMP 소켓을 지원하지 않는 경우, 또는 3) 사용자가 ICMP 에코를 생성하는 것이 허용되지 않는 경우 수행 기능 이-N
필요합니다. 소켓. 이 프로그램은 set-uid 루트로 사용될 수 있습니다.
커널 2.6.39 이상에서 사용 가능프로그램이 ICMP 에코 메시지를 보내고 받을 수 있도록 하는 또 다른 메커니즘:net.ipv4.ping_group_range
. 이는 Fedora 31 이상에서 사용되며 ping
추가 기능 없이 작업할 수 있습니다(특히 루트 없는 컨테이너 내에서).setuid 및 기능 없이 Fedora에서 Ping은 어떻게 작동합니까?더 알아보기.