Como editar um arquivo do sistema com sudoedit preservando o ambiente de usuário de invocação
- 3247
- 246
- Maurice Champlin
No Linux e em outros sistemas operacionais baseados em UNIX, o sudo é usado para executar um programa com os privilégios de outro usuário, geralmente raiz. Quando precisamos modificar um arquivo que exige que os privilégios administrativos sejam editados, se lançarmos nosso editor de texto favorito diretamente com o sudo, ele será executado sem a personalização e as configurações que usamos quando o invocarmos normalmente, uma vez que o ambiente do usuário invocando o usuário é não preservado. Neste tutorial, veremos como podemos resolver facilmente esse problema e como podemos modificar os arquivos do sistema com segurança usando sudoedit.
Neste tutorial, você aprenderá:
- Como editar um arquivo de sistema usando sudoedit
- Quais são as etapas executadas quando um arquivo é editado com sudoedit
- Como definir o editor padrão usado pelo sudo
Requisitos de software e convenções usadas
Categoria | Requisitos, convenções ou versão de software usada |
---|---|
Sistema | Distribuição Independente |
Programas | sudo |
Outro | Nenhum |
Convenções | # - requer que os comandos linux -comidos sejam executados com privilégios de raiz diretamente como usuário root ou por uso de sudo comando$-exige que o Linux-Commands seja executado como um usuário não privilegiado regular |
Comportamento padrão do sudo
A maioria das distribuições Linux está configurada para que a principal maneira de obter privilégios de raiz seja usar sudo. O uso do sudo nos concede uma série de privilégios su
, o principal é que privilégios específicos podem ser concedidos a um usuário sem ter que dar -lhe acesso total à raiz.
Sudo pode ser ajustado através do /etc/sudoers
arquivo; Como este arquivo é muito importante, ele deve ser editado usando o Visudo
Comando, que garante que nenhum erro de sintaxe esteja presente antes que as alterações sejam salvas.
Na grande maioria dos casos, quando um comando é executado com sudo, o ambiente de usuário de invocação não é preservado; portanto, por exemplo, se invocarmos nosso editor usando sudo para modificar um arquivo de sistema de propriedade da root, ele executará ignorando nossa configuração pessoal. Isso pode ser bastante inconveniente e, em certos casos, administrar um editor com privilégios escalados pode representar alguns problemas de segurança. Vamos ver o que podemos fazer, em vez disso.
O problema: o editor é lançado sem configurações definidas pelo usuário
Suponha que devemos editar um arquivo com privilégios administrativos, por exemplo /etc/fstab
, É onde as informações estáticas sobre os sistemas de arquivos são armazenadas no Linux. Se usarmos nosso editor de texto favorito e o invocarmos diretamente usando sudo,
A personalização que definimos para ele (normalmente através dos arquivos de pontos apropriados armazenados em nosso LAR
diretório) não será homenageado, pois o ambiente de usuário de invocação não será preservado.
Vamos ver um exemplo. Digamos que nosso editor favorito é vim e em nosso ~/.Vimrc
Arquivo que digitamos Número definido
Diretiva que faz com que os números de linha sejam exibidos. Se editarmos o /etc/fstab
Arquivo invocando o editor diretamente com sudo, podemos ver que as configurações não são efetivas:
$ sudo vim /etc /fstab
O arquivo será aberto no editor, e o seguinte é o que será exibido. O conteúdo do arquivo não importa para nós neste caso, por isso é truncado:
# #/etc/fstab # # Os sistemas de arquivos acessíveis, por referência, são mantidos em '/dev/disk/'. # Veja Man Pages Fstab (5), Findfs (8), Mount (8) e/ou Blkid (8) para obter mais informações. # # Depois de editar este arquivo, execute 'SystemCtl Daemon-Reload' para atualizar o Systemd # unidades geradas a partir deste arquivo. # /dev /mapper /fingolfin_vg-root_lv /ext4 padrões, X-Systemd.Tempo de dispositivo = 0 1 1 UUID = B308FBE5-68A6-4142-82DE-BA1DC3380484 /BOOT EXT2 Padrões 1 2 […]
Como você pode ver, os números de linha não são exibidos. O exposto acima é apenas um exemplo e provavelmente nossas personalizações do editor vão muito além disso. Como podemos resolver este problema?
A solução: usando sudoedit
Para resolver o problema que ilustramos acima, podemos simplesmente usar sudoedit
em vez de sudo
. Usando sudoedit
é o equivalente a invocar sudo
com o -e
opção, que é a abreviação de --editar
. Conforme declarado no sudo
Manual, esta opção significa basicamente: “Edite um arquivo em vez de executar um comando”.
Quando essa estratégia é usada e o usuário de invocação é permitido para executar a ação pela política do sistema, uma série de etapas será executada. Primeiro de tudo, um temporário A cópia do arquivo que queremos editar é criada. O arquivo temporário será de propriedade do usuário de invasão, para que nenhum privilégio administrativo seja necessário para modificá -lo.
O arquivo temporário será aberto no editor de texto padrão. O editor padrão é definido através de algumas variáveis, que são lidas em uma ordem específica. Eles são:
- Sudo_editor
- VISUAL
- EDITOR
Dependendo da distribuição e do shell que estamos usando, o valor dessas variáveis pode ser definido permanentemente no ~/.Bash_profile
(apenas proveniente da casca de partida) ou o ~/.perfil
arquivo. Pôr vim
Como nosso editor padrão, por exemplo, escrevemos:
exportar sudo_editor =/usr/bin/vim
Observe que usamos o exportar
Shell embutido antes da definição da variável: é necessário exportar a variável em si para todos os processos infantis do shell. As mudanças não serão imediatamente efetivas: devemos fazer logout e fazer login novamente,
ou adquirir o arquivo modificado "manualmente":
$ fonte ~//.Bash_profile
Se nenhuma dessas variáveis for definida, o primeiro editor especificado como o valor do editor
opção no arquivo sudoers (/etc/sudoers
) será usado.
Depois que o arquivo que modificamos for salvo (ele será criado do zero, se ainda não existir), e o editor for fechado, ele será copiado de volta à posição original e o arquivo temporário será removido. O usuário será solicitado a
Confirme a ação se o arquivo editado ficar vazio; Esta é uma medida de segurança adicional e muito útil, que pode evitar erros catastróficos:
sudoedit: truncate /etc /fstab a zero bytes? (y/n) [n] n sudoedit: não substituindo/etc/fstab
Desde quando usar sudoedit
em vez de sudo
O ambiente do usuário da invocação é preservado e o arquivo é editado como o próprio usuário e não como root, poderemos usar nosso editor com toda a personalização que definimos, incluídos plugins carregados.
Conclusões
Neste tutorial, aprendemos como é possível editar um arquivo que exige que os privilégios administrativos sejam modificados, mantendo o ambiente de usuário de invocação usando sudoedit em vez de sudo. Vimos quais são as vantagens dessa abordagem, quais são as etapas executadas quando ela é adotada e como definir o editor padrão usado pelo sudo.
Tutoriais do Linux relacionados:
- Uma introdução à automação, ferramentas e técnicas do Linux
- Coisas para instalar no Ubuntu 20.04
- Mastering Bash Script Loops
- Arquivos de configuração do Linux: os 30 primeiros mais importantes
- Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
- Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
- Manipulando a entrada do usuário em scripts bash
- Como remover Bloatware do seu Samsung Android Mobile…
- Sistema Linux Hung? Como escapar para a linha de comando e…
- Como criar a conta Modificar e Excluir usuários no Linux
- « Como gerenciar hosts virtuais dinâmicos com Apache e o módulo MOD_VHOST_ALIAS
- Como tirar capturas de tela usando o MAIM no Linux »