No Linux, os privilégios de raiz estavam em um ponto dividido em "capacidades", assim você pode obter uma lista completa de privilégios especiais de raiz, olhando para que a documentação: man 7 capabilities
.
Para responder à sua pergunta, um comando exigirá a execução como root quando ele precisar de um desses privilégios, e seu executável sem script não possui a capacidade relevante definida nos metadados do arquivo (por exemplo, se um script python exigir essa capacidade, então a capacidade precisaria estar no interpretador python especificado na linha shebang).
Observe que alguns comandos que precisam de acesso root não precisam de algo parecido sudo
porque eles têm o bit SUID definido em seu executável. Esse bit faz com que o executável seja executado como proprietário (normalmente root) quando executado por qualquer pessoa que tenha acesso de execução. Um exemplo é o fato de sudo
alterar usuários é uma ação privilegiada que ele precisa executar.
EDIT: Observo da sua pergunta que você pode ter a ideia de que pode determinar se um comando precisará de acesso root antes de executá-lo. Esse não é o caso. Às vezes, um programa pode exigir privilégios de root e outras não, e isso pode ser uma decisão tomada pelo programa devido aos dados fornecidos durante o tempo de execução. Tomemos, por exemplo, chamar vim
assim sem argumentos e, em seguida, através de uma série de pressionamentos de tecla e colar, dizendo para gravar algo em um arquivo que não tem permissão para gravar ou talvez executando outro comando que exija privilégios de root. Nada sobre o comando antes da execução poderia indicar que acabaria por exigir acesso root. Isso é algo que só pode ser determinado no momento em que ele tenta fazer algo que exige isso.
De qualquer forma, aqui estão muito poucos exemplos da página de manual referenciada dos privilégios de root:
- Faça manipulações arbitrárias de UIDs de processo (setuid (2), setreuid (2), setresuid (2), setfsuid (2));
- Ignore o arquivo, leia, grave e execute verificações de permissão. (DAC é uma abreviação de "controle de acesso discricionário".)
- Ignore as verificações de permissão para enviar sinais (consulte kill (2)). Isso inclui o uso da operação ioctl (2) KDSIGACCEPT.
- Execute várias operações relacionadas à rede:
- configuração de interface;
- administração de firewall IP, mascaramento e contabilidade;
- modificar tabelas de roteamento;
- Ligue um soquete às portas privilegiadas do domínio da Internet (números de porta menores que 1024).
- Carregar e descarregar módulos do kernel (consulte init_module (2) e delete_module (2));
- Acerte o relógio do sistema (settimeofday (2), stime (2), adjtimex (2)); ajuste o relógio em tempo real (hardware).
- Execute várias operações de administração do sistema, incluindo: quotactl (2), mount (2), umount (2), swapon (2), swapoff (2), sethostname (2) e setdomainname (2);
- Use reboot (2) e kexec_load (2).
- Use chroot (2).
- Aumente o valor agradável do processo (nice (2), setpriority (2)) e altere o valor agradável para processos arbitrários;