No linux, os privilégios do root estavam em um ponto divididos em "capacidades", então você pode obter uma lista completa dos privilégios especiais do root olhando para essa documentação: man 7 capabilities
.
Para responder a sua pergunta, um comando exigirá a execução como root quando precisar de um desses privilégios, e seu executável sem script não terá o recurso relevante definido em seus metadados de arquivo (por exemplo, se um script python exigir esse recurso, então o recurso precisaria estar no interpretador python especificado na linha shebang).
Observe que alguns comandos que precisam de acesso root não precisam de algo como sudo
, porque eles têm o bit SUID definido em seu executável. Esse bit faz com que o executável seja executado como o proprietário (geralmente root) quando executado por qualquer pessoa que tenha acesso de execução. Um exemplo é sudo
em si, já que mudar de usuário é uma ação privilegiada que ele precisa fazer.
EDIT: Anote a sua pergunta que você pode ter a idéia de que você 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, porque os dados são fornecidos durante o tempo de execução. Tomemos por exemplo, chamando vim
, assim como sem argumentos, e depois através de uma série de pressionamentos de tecla e colando, dizendo para escrever algo em um arquivo que ele não tem permissão para escrever, ou talvez executar outro comando que requererá raiz privilégios. Nada sobre o comando antes de executar poderia indicar que ele eventualmente necessitaria de acesso root. Isso é algo que só pode ser determinado no momento em que ele tenta fazer algo que exija isso.
De qualquer forma, aqui estão alguns exemplos da manpage referenciada dos privilégios do root:
- Faça manipulações arbitrárias de UIDs de processo (setuid (2), setreuid (2), setresuid (2), setfsuid (2));
- Ignorar leitura de arquivo, gravar e executar verificações de permissão. (DAC é uma abreviação de "controle de acesso discricionário").
- Ignorar permissão verifica o envio de sinais (veja kill (2)). Isso inclui o uso da operação ioctl (2) KDSIGACCEPT.
- Realize várias operações relacionadas à rede:
- configuração de interface;
- administração de firewall, mascaramento e contabilidade de IP;
- modificar tabelas de roteamento;
- Vincule um soquete a portas com privilégios de domínio da Internet (números de portas inferiores a 1024).
- Carregue e descarregue módulos do kernel (consulte init_module (2) e delete_module (2));
- Ajusta o relógio do sistema (settimeofday (2), stime (2), adjtimex (2)); defina o relógio em tempo real (hardware).
- Execute um intervalo de 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 o chroot (2).
- Aumente o bom valor do processo (nice (2), setpriority (2)) e altere o valor interessante para processos arbitrários;