Ele não funciona porque o bash verifica explicitamente o caso "running setuid" e define seu EUID como o mesmo - em outras palavras, ele descarta todos os privilégios que ele pode ter obtido do bit setuid.
Os processos têm vários UIDs separados - os dois principais são o RUID (UID real, geralmente apenas "UID"), que determina quem é o proprietário do processo e o EUID (UID efetivo), que determina os privilégios que o processo possui.
Quando o EUID é 0 (raiz), o processo pode definir qualquer RUID ou EUID desejado; e se o processo não tiver privilégios de root, ele ainda poderá definir seu RUID como o EUID ou vice-versa.
Quando o bit setuid está definido, ele afeta apenas o novo processo EUID, não o RUID - em outras palavras, ele apenas fornece os privilégios do proprietário do arquivo, não o identidade. Tente novamente com /usr/bin/id
.