!["nethogs"를 설치할 때 setuid 비트가 설정되지 않은 이유는 무엇입니까?](https://linux55.com/image/39478/%22nethogs%22%EB%A5%BC%20%EC%84%A4%EC%B9%98%ED%95%A0%20%EB%95%8C%20setuid%20%EB%B9%84%ED%8A%B8%EA%B0%80%20%EC%84%A4%EC%A0%95%EB%90%98%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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
ping
setuid는 상당히 "안전"하지만 원시 소켓을 열 수 있어야 하기 때문입니다. 마침내소요된다CAP_NET_RAW
능력이 있거나 루트가 됩니다.
nethogs
몇 가지 이유로 다릅니다. 네트워크 스택에 대한 권한 있는 액세스가 필요할 뿐만 아니라 다른 사용자에 대한 정보도 표시한다는 점에 주목할 가치가 있습니다. 다중 사용자 시스템에서는 어떤 사용자도 누가 무엇을 사용하고 있는지 알 수 없도록 하고 싶을 것입니다.
nethogs
또 다른 이유는 이것이 상당히 복잡한 절차이기 때문입니다 . setuid 프로그램 실행추가 보안이 필요함: 예를 들어 버퍼 오버플로로 인해 임의의 권한 상승이 발생할 수 있습니다. ping
안전을 위해서는 누가 실제로 실행하고 있는지 감지하여 다르게 동작하도록 주의를 기울여야 합니다( ping -f
예를 들어 실제로 루트인 경우에만 작동합니다). .nethogs
사용자에게 루트 액세스 권한을 요구하면 이미 이러한 문제를 방지하거나 위임할 수 있습니다 sudo
. 이미 루트인 경우 권한 상승에 대해 걱정할 필요가 없습니다. 일반적으로 프로그램은 기능에 중요한 경우가 아니면 기본적으로 setuid를 설정하지 않습니다 passwd
.
즉, 단일 사용자 시스템이나 이러한 문제에 관심이 없는 시스템에서는 자신의 편의를 위해 setuid로 설정하는 것이 큰 문제가 아닙니다.