디렉토리를 나열 할 때 /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: -
에 따라 서로 다른 색상이 터미널에 무슨 뜻 이죠? 여기서 색상 해석을 나열하는 스크립트를 찾을 수있는 “yellow-on-red”는 “ca”를 의미합니다.
“ca”는 무엇을 의미합니까? 아마이 파일이 다른 곳에서 hardlinked (됨을 의미 /usr/bin/ping
와 /usr/ping
같은 파일입니다)
추신 : Explaining Dirty COW 를 보면서 ping
우분투 의 명령이 setuid 루트로 표시되는 이상한 질문이 있습니다.
답변
이것은 ping
추가 기능 이 있음을 나타냅니다 .
$ getcap /usr/bin/ping
/usr/bin/ping = cap_net_raw+ep
또는 심지어 (Fedora에서) :
$ getcap /usr/bin/ping
/usr/bin/ping = cap_net_admin,cap_net_raw+ep
이렇게하면 ping
로 실행하지 않고 원시 소켓을 열고 ICMP 패킷을 보내고받을 수 root
있습니다.
setcap(8)
및 capabilities(7)
더 자세한 정보를 제공합니다.
역사적으로, ping
setuid는 root
원시 소켓 으로 작동 하고 사용할 수 있도록 설치되었습니다 . 일단 기능이 사용 가능 해지면, 많은 배포판이 대신 사용 권한으로 전환합니다. 그러나 우분투 에는 설치 프로그램에 문제가있는 것이므로 ping
setuid가 여전히 설치되어 있습니다 root
(기능 코드는 관련 관리자 스크립트 에서 비활성화되어 있으며 가능한 경우 기능을 사용하여ping
구성된 데비안에서 제공 됩니다).
ping
맨 페이지 의 요구 사항을 설명 하여 :
ping
필요CAP_NET_RAW
프로그램이 아닌 에코 쿼리 (참조를 위해 사용되는 경우 기능) 1을 실행하는-N
사용자가 에코 ICMP의 작성을 허가되어 있지 않은 경우 커널)가 아닌 원시 ICMP 소켓을 지원, 3하지 않는 경우 옵션) 또는 2) 소켓. 프로그램은 set-uid root로 사용될 수 있습니다.