
다음 정보가 포함된 Debian 가상 머신이 있습니다.
las@Client:~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
입력할 때 ss -nte
옵션 때문에 소켓을 사용하는 프로세스의 uid가 표시될 것으로 예상했지만 -e
표시되지 않고 이유를 모르겠습니다. 출력은 다음과 같습니다.
las@Client:~$ ss -nte
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 176 192.168.56.201:22 192.168.56.1:50468 timer:(on,204ms,0) ino:12286 sk:ffff88000e7f3140 <->
이 문제를 어떻게 해결할 수 있나요?
답변1
이것ss
명령 (모든 버전)이 표시됩니다UID0이 아닌 경우에만. 이것은Debian 8 jessie 버전 소스 코드:
if (show_details) {
if (s.uid)
printf(" uid:%u", (unsigned)s.uid);
printf(" ino:%u", s.ino);
printf(" sk:%llx", s.sk);
if (opt[0])
printf(" opt:\"%s\"", opt);
}
if (s.uid)
소켓 소유자의 uid 값이 가 될 때마다 정보가 표시되지 않도록 테스트 합니다 0
.
추가 테스트(그러나 커널 5.6 사용 ss
및IP 경로 25.6.0), 이는 일반 사용자가 실제로 소유자의 정보를 알 수 있음을 나타냅니다.UID자체 소켓이 아닌 경우에도 다른 소켓입니다. 따라서 항목이 없다는 것은 다음 uid:
두 가지 의미만 의미합니다.뿌리사용자 또는 커널 소유(다르지만 여기서는 구별할 수 없음).
귀하의 경우에는 다음과 같습니다SSHD데몬은 다음과 같이 실행됩니다.뿌리, 이와 관련된 모든 TCP 소켓은 다음에 속합니다.뿌리, 일지라도SSHD루트가 아닌 로그인 권한을 부여합니다. 사용자 로그인이 허용됨SSHD어떤 TCP 소켓에도 연결되어 있지 않습니다: 다음에 연결되어 있습니다.SSHD마스터/슬레이브 데몬(또는 별도의 인스턴스)을 통해PTY또는 사용관로. 따라서 ss
전달을 통해 로컬로 로그인한 사용자와 TCP 연결을 일치시키는 데 사용할 수 없습니다.SSH.