Para dar uma permissão binária para executar as coisas como root, você precisa definir o "sticky bit" no binário.
Normalmente, depois da compilação, você pode ver:
# ls -l print
-rwxr-xr-x 1 mark mark 111 24 Oct 17:32 print
Definir o bit set-uid (sticky) pode ser feito usando o modo octal, ou simbolicamente (observe que você precisará de privilégios de "root" para alterar a propriedade de um arquivo):
# chown root print
# chmod o-x print
# chmod u+s print
# ls -l print
-rwsr-xr-- 1 root mark 111 24 Oct 17:32 print
Na primeira versão, o s
nas permissões, como você já descobriu, indica que isso é executável e "set-uid". Mas você também precisa alterar a propriedade do arquivo, para que "set-uid" defina o fluxo de root em vez de seu próprio usuário. Neste ponto, o "grupo" não mudou seu valor, mas isso não é importante neste caso específico. (Embora possa ser um fator de segurança.)
A linha final acima mostra as permissões que também podem ser expressas como um número octal, portanto, se esse for o resultado desejado, você poderá substituir as duas chmod
linhas acima por uma única:
# chmod 4754 print
Dê uma olhada na página man do chmod
para mais detalhes.
Se não for isso que você está procurando, esclareça suas dúvidas na sua pergunta.
NOTA IMPORTANTE : o arquivo /etc/shadow
é mantido privado por um motivo. Se você a expuser com algo que possa ser executado por outros usuários, poderá comprometer a segurança do seu sistema. Remover a permissão executável do mundo é um "aceno" em relação à segurança, mas se você acha que precisa expor /etc/shadow
desta forma, você pode estar resolvendo o problema errado .