Traduzindo UIDs no smbstatus para nomes reais no Samba 4 com AD

Quando se administra um ambiente Samba 4 com Active Directory, uma situação comum é ao rodar o comando smbstatus encontrar apenas números de ID (UIDs) no campo “Username”. Esses números, geralmente a partir de 3000000, representam objetos do domínio, como usuários e máquinas.

O desafio surge quando precisamos identificar quem é quem nesses IDs numéricos. Saber qual usuário ou estação de trabalho está associada a um ID é essencial para auditorias, troubleshooting e manutenção de sessões.

A causa disso é simples: o Samba4 gera UIDs automáticos para cada objeto do Active Directory e associa esses valores no backend interno.

Para resolver manualmente, podemos utilizar o wbinfo, que é a ferramenta de consulta do winbindd. Primeiro, convertemos o UID para o SID e depois o SID para o nome real.

Comandos:

wbinfo --uid-to-sid 3000033
wbinfo --sid-to-name S-1-5-21-xxxx-xxxx-xxxx-xxxx

Ou de forma encadeada:

wbinfo --sid-to-name $(wbinfo --uid-to-sid 3000033)

Esses comandos retornam o nome do usuário ou da máquina associado ao UID.

Para facilitar e automatizar o processo, criamos um script chamado smbstatus-resolve.sh, que coleta todos os UIDs do smbstatus e resolve os nomes em uma tabela organizada.

Script:

#!/bin/bash

# Script: smbstatus-resolve.sh
# Autor: Anderson Kemper + LLM
# Finalidade: Traduzir UIDs do smbstatus para nomes reais de usuários e máquinas.

echo "Coletando UIDs ativos no smbstatus..."
uids=$(smbstatus | awk '{print $2}' | grep -E '^[0-9]{7}$' | sort -u)

printf "\n%-10s %-30s\n" "UID" "Usuário/Máquina"
printf "%-10s %-30s\n" "----------" "------------------------------"

for uid in $uids; do
  sid=$(wbinfo --uid-to-sid $uid 2>/dev/null)
  if [ -n "$sid" ]; then
    name=$(wbinfo --sid-to-name "$sid" 2>/dev/null)
    if [ -n "$name" ]; then
      printf "%-10s %-30s\n" "$uid" "$name"
    else
      printf "%-10s %-30s\n" "$uid" "(SID encontrado, nome não)"
    fi
  else
    printf "%-10s %-30s\n" "$uid" "(UID inválido)"
  fi

done

Salvar o script, dar permissão de execução com chmod +x smbstatus-resolve.sh e executá-lo sempre que precisar.

Esse pequeno utilitário torna a gestão do Samba/AD mais rápida e clara, sem precisar fazer consultas manuais toda vez que um UID desconhecido aparecer.

Rolar para cima