Linux Segurança · 5 min read · Nov 14, 2025
Como permitir que os usuários editem arquivos com segurança usando sudoedit no Linux
Suponha que você seja um administrador de sistema em uma empresa onde as equipes trabalham principalmente no Linux com privilégios limitados. Agora imagine uma situação em que membros de uma das equipes - como parte de algum novo trabalho - precisam editar frequentemente um arquivo que requer privilégios de superusuário. O que você faria?
Uma opção é dar a eles o acesso ‘sudo’, mas isso seria como dar a um estranho acesso à sua casa completa quando tudo o que eles precisam é estar apenas em um dos seus quartos - o que quero dizer é que o acesso ‘sudo’ padrão permitirá que eles façam qualquer coisa que exija privilégios de root, quando tudo o que é necessário é a capacidade de editar um determinado arquivo do sistema.
Dada a flexibilidade que o ‘sudo’ oferece, a outra opção que você tem é ajustar a política do ‘sudo’ de forma que apenas o privilégio de editar o arquivo em questão seja concedido. Por exemplo, algo assim:
%newsudo ALL = vim /caminho/para/arquivoEmbora isso seja, sem dúvida, uma solução muito melhor do que fornecer o acesso completo ao sudo, ainda há uma brecha que alguém poderia explorar.
Para entender do que estou falando, considere um cenário em que o acesso limitado mencionado anteriormente é concedido ao grupo, e alguém abre o arquivo em questão para edição usando o comando ‘sudo’.
Agora, uma mente inteligente com bom conhecimento sobre vim saberia que pode lançar um novo shell de dentro do editor - tudo o que precisa fazer é executar o seguinte comando vim:
:shellIsso o colocará instantaneamente em um shell interativo. Se você estiver testando esses passos em sua máquina, basta executar o comando ‘whoami’ e você entenderá qual brecha eu estava falando - Sim, você está no shell como root.
Aqui está um exemplo de captura de tela:

Desnecessário dizer que o propósito de fornecer acesso de edição a apenas um único arquivo foi derrotado, e o usuário pode fazer QUALQUER COISA agora.
Vamos ver se há alguma outra opção que temos. Existe uma tag NOEXEC que você pode usar na sua entrada sudoers:
%newsudo ALL = NOEXEC: vim /caminho/para/arquivoNOEXEC basicamente permite que você impeça um programa executado pelo sudo de executar qualquer outro programa. Então, esta é a solução definitiva? Infelizmente não. Quanto às razões, aqui está como o manual dos sudoers explica essa tag:
noexec
Muitos sistemas que suportam bibliotecas compartilhadas têm a capacidade de substituir funções de biblioteca padrão apontando uma variável de ambiente (geralmente LD_PRELOAD) para uma biblioteca compartilhada alternativa. Em tais sistemas, a funcionalidade noexec do sudo pode ser usada para impedir que um programa executado pelo sudo execute qualquer outro programa. Observe, no entanto, que isso se aplica apenas a executáveis nativos vinculados dinamicamente. Executáveis vinculados estaticamente e executáveis estrangeiros executados sob emulação binária não são afetados.
A funcionalidade noexec é conhecida por funcionar em SunOS, Solaris, *BSD, Linux, IRIX, Tru64 UNIX, MacOS X, HP-UX 11.x e AIX 5.3 e acima.
...
...
...
Para habilitar noexec para um comando, use a tag NOEXEC conforme documentado na seção de Especificação do Usuário acima. Aqui está aquele exemplo novamente:
aaron shanty = NOEXEC: /usr/bin/more, /usr/bin/vi
Isso permite que o usuário aaron execute /usr/bin/more e /usr/bin/vi com noexec habilitado. Isso impedirá que esses dois comandos executem outros comandos (como um shell). Se você não tiver certeza se seu sistema é capaz de suportar noexec, você sempre pode apenas testá-lo e verificar se as saídas de shell funcionam quando noexec está habilitado.
Observe que restringir saídas de shell não é uma panaceia. Programas executados como root ainda são capazes de muitas operações potencialmente perigosas (como alterar ou sobrescrever arquivos) que poderiam levar a uma escalada de privilégios não intencional.
...
...
...Se você ler cuidadosamente o texto destacado em negrito, saberá que NOEXEC tem seu próprio conjunto de limitações.
Então, qual é a solução mais confiável? Bem, é sudoedit. Até o manual dos sudoers recomenda essa ferramenta:
No caso específico de um editor, uma abordagem mais segura é dar ao usuário permissão para executar sudoedit.Sudoedit é um comando embutido que permite que os usuários editem arquivos com segurança. De acordo com a página do manual do sudo, ‘sudoedit’ é equivalente a executar ‘sudo’ com a opção de linha de comando ‘-e’.
Por que é melhor
Com ‘sudoedit’, os usuários têm a escolha de usar seu editor preferido - o que é diferente da solução que discutimos no início deste tutorial, onde os usuários são forçados a usar o editor Vim - permitindo que eles desfrutem de suas próprias personalizações. E a maior razão de todas, com ‘sudoedit’, o usuário estará editando o arquivo como ele mesmo, e não como ‘root’.
Como o Sudoedit funciona
Para usar o sudoedit, a entrada na sudoers deve ser, por exemplo, algo assim:
%newsudo ALL = sudoedit /caminho/para/arquivoE os usuários que fazem parte do grupo ‘newsudo’ poderão editar o arquivo executando o seguinte comando:
sudoedit /caminho/para/arquivoEntão, o que esse comando fará é que ele primeiro criará uma cópia temporária do arquivo que você deseja editar. Em seguida, o comando buscará as variáveis de ambiente SUDO_EDITOR, VISUAL e EDITOR (nesta ordem) para determinar qual editor deve ser invocado para abrir a cópia temporária que acaba de ser criada. Depois que o usuário terminar o trabalho de modificação, as alterações são copiadas de volta para o arquivo original.
Aqui está a explicação detalhada da página do manual do comando ‘sudo’:
-e, --edit
Edite um ou mais arquivos em vez de executar um comando. Em vez de um nome de caminho, a string "sudoedit" é usada ao consultar a política de segurança. Se o usuário estiver autorizado pela política, os seguintes passos são tomados:
1. Cópias temporárias são feitas dos arquivos a serem editados com
o proprietário definido como o usuário que invocou.
2. O editor especificado pela política é executado para editar os
arquivos temporários. A política dos sudoers usa as
variáveis de ambiente SUDO_EDITOR, VISUAL e EDITOR (nesta
ordem). Se nenhuma das variáveis SUDO_EDITOR, VISUAL ou EDITOR
estiver definida, o primeiro programa listado na opção editor
sudoers(5) é usado.
3. Se eles foram modificados, os arquivos temporários são
copiados de volta para sua localização original e as versões
temporárias são removidas.
Se o arquivo especificado não existir, ele será criado. Observe que, ao contrário da maioria dos comandos executados pelo sudo, o editor é executado com o ambiente do usuário que invocou não modificado. Se, por algum motivo, o sudo não conseguir atualizar um arquivo com sua versão editada, o usuário receberá um aviso e a cópia editada permanecerá em um arquivo temporário.Até agora, você deve ter uma ideia básica sobre ‘sudoedit’, incluindo quando usá-lo e por que é melhor do que usar ‘sudo’ quando tudo o que você deseja é editar um arquivo ou alguns arquivos. Claro, como qualquer outra ferramenta relacionada à segurança, ‘sudoedit’ teve sua parte de exploits, mas ainda é uma solução recomendada em muitos casos de uso.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.