"nethogs"를 설치할 때 setuid 비트가 설정되지 않은 이유는 무엇입니까?

"nethogs"를 설치할 때 setuid 비트가 설정되지 않은 이유는 무엇입니까?

nethogs나는 이것을 한동안 사용해왔고 sudo매번 setuid 비트를 설정해야 했습니다 ping. 오늘 나는 그것을 nethogs로 설정했고 작동했습니다.

$ ls -l $(which nethogs) $(which ping)
-rwxr-xr-x 1 root root  64496 Nov  2  2011 /usr/sbin/nethogs
-rwsr-xr-x 1 root root 44168 May  7 17:21 /bin/ping

$ sudo chmod u+s  $(which nethogs)

$ ls -l $(which nethogs)
-rwsr-xr-x 1 root root 64496 Nov  2  2011 /usr/sbin/nethogs

$ nethogs

기본적으로 이런 방식으로 설치되지 않는 이유를 생각할 수 있습니까?

답변1

pingsetuid는 상당히 "안전"하지만 원시 소켓을 열 수 있어야 하기 때문입니다. 마침내소요된다CAP_NET_RAW능력이 있거나 루트가 됩니다.

nethogs몇 가지 이유로 다릅니다. 네트워크 스택에 대한 권한 있는 액세스가 필요할 뿐만 아니라 다른 사용자에 대한 정보도 표시한다는 점에 주목할 가치가 있습니다. 다중 사용자 시스템에서는 어떤 사용자도 누가 무엇을 사용하고 있는지 알 수 없도록 하고 싶을 것입니다.

nethogs또 다른 이유는 이것이 상당히 복잡한 절차이기 때문입니다 . setuid 프로그램 실행추가 보안이 필요함: 예를 들어 버퍼 오버플로로 인해 임의의 권한 상승이 발생할 수 있습니다. ping안전을 위해서는 누가 실제로 실행하고 있는지 감지하여 다르게 동작하도록 주의를 기울여야 합니다( ping -f예를 들어 실제로 루트인 경우에만 작동합니다). .nethogs

사용자에게 루트 액세스 권한을 요구하면 이미 이러한 문제를 방지하거나 위임할 수 있습니다 sudo. 이미 루트인 경우 권한 상승에 대해 걱정할 필요가 없습니다. 일반적으로 프로그램은 기능에 중요한 경우가 아니면 기본적으로 setuid를 설정하지 않습니다 passwd.

즉, 단일 사용자 시스템이나 이러한 문제에 관심이 없는 시스템에서는 자신의 편의를 위해 setuid로 설정하는 것이 큰 문제가 아닙니다.

관련 정보