ss -e가 uid를 표시하지 않는 이유는 무엇입니까?

ss -e가 uid를 표시하지 않는 이유는 무엇입니까?

다음 정보가 포함된 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 사용 ssIP 경로 25.6.0), 이는 일반 사용자가 실제로 소유자의 정보를 알 수 있음을 나타냅니다.UID자체 소켓이 아닌 경우에도 다른 소켓입니다. 따라서 항목이 없다는 것은 다음 uid:두 가지 의미만 의미합니다.뿌리사용자 또는 커널 소유(다르지만 여기서는 구별할 수 없음).

귀하의 경우에는 다음과 같습니다SSHD데몬은 다음과 같이 실행됩니다.뿌리, 이와 관련된 모든 TCP 소켓은 다음에 속합니다.뿌리, 일지라도SSHD루트가 아닌 로그인 권한을 부여합니다. 사용자 로그인이 허용됨SSHD어떤 TCP 소켓에도 연결되어 있지 않습니다: 다음에 연결되어 있습니다.SSHD마스터/슬레이브 데몬(또는 별도의 인스턴스)을 통해PTY또는 사용관로. 따라서 ss전달을 통해 로컬로 로그인한 사용자와 TCP 연결을 일치시키는 데 사용할 수 없습니다.SSH.

관련 정보