sudo suporta isso.
$ echo hello world | sudo cat
SUDO password:
hello world
A diferença é que sudo solicita sua senha de usuário, não a senha root (usuário de destino). No entanto, se você desejar, poderá alterar esse comportamento com a diretiva targetpw (ou runaspw ou rootpw ) em sudoers.conf .
No entanto, ao ler o que você está tentando fazer, embora isso resolva o problema de escalonamento de permissões, ele não fará o que você espera. O significado /output/file não será criado como o usuário raiz, ele será criado / modificado como seu usuário.
A razão para isto é que o redirecionamento de saída do shell é feito antes de chamar qualquer comando. Portanto, o shell abre /output/file e, em seguida, passa esse arquivo aberto para su / sudo (e, consequentemente, cat ).
No entanto, você pode usar tee para fazer isso, pois o utilitário tee abrirá o arquivo em si.
echo "hello world" | sudo tee /output/file >/dev/null
Basicamente tee copia a saída em /output/file e STDOUT, no entanto STDOUT é redirecionado para /dev/null .
Você também pode fazer:
echo "hello world" | sudo sh -c 'cat > /output/file'
... o que é menos enigmático.