Introdução aos Privilégios Granulares no Linux
O utilitário capsh (Capability Shell Wrapper) destaca-se como um recurso indispensável para inspecionar, depurar e restringir privilégios em nível de processo no ecossistema Linux. Neste tutorial voltado ao Ubuntu, exploramos passo a passo a instalação prática da ferramenta, a análise das credenciais ativas do ambiente, a decodificação de máscaras hexadecimais, o descarte de privilégios via bounding set e a transição segura para contas sem privilégios mantendo apenas capacidades específicas.
Configurando o libcap2-bin e Auditando o Processo Atual (–print)
Para manipular e auditar capacidades POSIX no sistema operacional, é necessário instalar o pacote libcap2-bin, repositório oficial das ferramentas de suporte ao subsistema de segurança.

Ao executar capsh --print, o terminal exibe um diagnóstico exaustivo contendo todos os conjuntos de capacidades vigentes (Effective, Permitted, Bounding e outros), juntamente com identificadores de usuário e grupo (UID/GID) e flags de Securebits.
Essa visão abrangente permite que administradores avaliem com precisão o raio de ação e o nível de autoridade concedido à sessão de shell atual.
⚙️ [Parâmetros Essenciais]
--print : Lista detalhadamente os conjuntos de capabilities do processo, IDs de segurança e flags ativas.--drop : Elimina privilégios de forma definitiva do Bounding set do processo.--caps : Aplica conjuntos arbitrários de capacidades personalizadas ao contexto de execução.--user : Muda a execução para o contexto de credenciais do usuário e grupos especificados.--inh : Configura o conjunto herdável (Inheritable set) de privilégios.--addamb : Anexa permissões ao conjunto ambiente (Ambient set) para transmissão direta a binários filhos.--secbits : Define flags Securebits para restringir alterações dinâmicas nas políticas de privilégio.--chroot : Modifica o diretório raiz do processo para isolar o sistema de arquivos.

Validação de Suporte no Kernel e Decodificação de Bitmasks (–supports, –decode)
Com o parâmetro capsh --supports=cap_net_raw, você valida em tempo de execução se a versão do kernel Linux em atividade reconhece e disponibiliza a capacidade cap_net_raw.
Quando o recurso está plenamente suportado pelo núcleo, o utilitário encerra silenciosamente com código de retorno 0.

A mesma estratégia pode ser empregada para verificar atributos de alta criticidade administrativa, como cap_sys_admin, invocando capsh --supports=cap_sys_admin.
Essa resposta baseada no status de saída viabiliza a criação de scripts de automação robustos que checam pré-requisitos de segurança antes de provisionar aplicações sensíveis.

Frequentemente, entradas do sistema como /proc/[PID]/status apresentam permissões no formato de valores hexadecimais brutos. O comando capsh --decode=0x000001ffffffffff traduz essa máscara em uma listagem legível de capacidades textuais.
Dessa forma, fica evidente quais permissões específicas — incluindo cap_chown, cap_sys_admin e cap_bpf — compõem o mapa de bits analisado.

Redução de Privilégios e Confinamento no Bounding Set (–drop)
Para restringir o potencial de escalonamento indevido, a instrução capsh --drop=cap_chown,cap_setuid --print expurga permanentemente cap_chown e cap_setuid do Bounding set do processo, exibindo em seguida a nova configuração aplicada.
Nos blocos Bounding set e Current IAB do retorno, confirma-se que ambas as capacidades foram revogadas com sucesso, materializando o princípio do menor privilégio.

Podemos certificar a efetividade do confinamento em subprocessos encadeados por meio da chamada capsh --drop=cap_chown -- -c "capsh --print | grep 'Bounding set'".
O texto filtrado atesta que o processo filho executado herda rigorosamente a remoção de cap_chown, impossibilitando que qualquer comando derivado readquira a faculdade de alterar proprietários de arquivos.

Transição para Contas Não Privilegiadas e Ajuste de Capabilities (–user, –caps)
A instrução capsh --user=nobody --print rebaixa o contexto operacional para o usuário não privilegiado nobody, listando em seguida o estado resultante de credenciais e privilégios.
A saída evidencia a transição para UID e GID nobody (65534), servindo como referência de comportamento padrão quando não se agregam permissões especiais durante a mudança de usuário.

Em cenários onde um serviço de baixa autoridade precisa ligar-se a portas reservadas da rede, o comando capsh --user=nobody --caps="cap_net_bind_service+ep cap_setpcap-ep" --print concede cirurgicamente a capacidade cap_net_bind_service nos conjuntos Effective e Permitted ao mesmo tempo em que rebaixa o usuário para nobody.
A presença explícita de cap_net_bind_service=ep na seção Current demonstra como é simples conceder privilégios estritamente necessários a processos corporativos sem abrir mão do isolamento de segurança.

Concluímos este roteiro demonstrando como o utilitário capsh facilita a inspeção e a mitigação de riscos associados a permissões excessivas no Ubuntu.
Substituir privilégios globais de root por conjuntos mínimos e direcionados de capabilities fortalece expressivamente a segurança e a resiliência das suas instâncias Linux.