Editando arquivos graváveis por raiz com apenas direitos sudo

1

Nossos administradores de sistema fazem login em caixas usando contas não privilegiadas com direitos sudo. Muitas vezes, por hábito, abro arquivos em vim em vez de sudoedit . Eu não quero adquirir o hábito de usar sudoedit . Meu colega sugeriu a criação de um link simbólico vim no caminho que aponta para sudoedit . Isso parece uma ideia horrível para mim.

Eu normalmente apenas :w /tmp/service.conf e, em seguida, mv -i /tmp/service.conf /etc/

Isso parece desajeitado, mas estou quase inclinado a dizer que confio neste processo mais do que adquirir o hábito de usar sudoedit ou sudo vim .

Opiniões?

Nota: Geralmente, temos backups facilmente acessíveis desses arquivos, o que não é uma preocupação.

    
por Belmin Fernandez 02.12.2010 / 02:44

4 respostas

2

Eu continuaria usando o VIM e faria o trabalho para você. Quando você abre um arquivo para o qual não tem acesso de gravação, ainda é possível salvá-lo emitindo o seguinte no VIM: <ESC>:w !sudo tee %

Isso permitirá que você execute o sudo e envie suas edições para o arquivo que você está editando no momento. Depois que você fizer isso, o arquivo será efetivamente editado fora do VIM, portanto, ele solicitará que você carregue o novo conteúdo.

    
por 02.12.2010 / 05:03
2

Com o sudo.vim , você pode fazer vim sudo:path-to-file . Se você já tiver aberto um arquivo sem sudo: , poderá fazer :f sudo:% para alternar para usar sudo para ler / gravar. (Você pode querer :set noro também, para evitar avisos ao tentar editar / gravar o arquivo que o Vim achou que era somente leitura quando aberto pela primeira vez.)

Esteja avisado que as soluções :w !sudo tee % e sudo.vim de Alex sofrem de problemas de escape de shell. Não use a menos que você saiba que os nomes dos arquivos são seguros.

    
por 02.12.2010 / 06:54
1

Se você tiver direitos sudo de tal forma que você possa executar qualquer comando como root, sudoedit realmente não traz nenhum benefício. Ela existe para que, de outra forma, os usuários sem privilégios possam ter a capacidade de editar certos arquivos sem permissão, de modo que eles não executem um editor inteiro como root em algum tipo de modo restrito (o que é difícil de acertar).

Então, sua abordagem parece bem, embora eu ache que lembrar de digitar sudo vim não seja tão ruim, já que você precisa digitar sudo whatever para executar outros comandos como root.

Uma observação na sua nota: acho que ficaria mais preocupado em sobrescrever acidentalmente outro arquivo por acidente ( -i não suportando - você está esperando dizer "sim" a essa pergunta, por isso é fácil adquira o hábito de fazê-lo) do que eu faria com o arquivo que você pretende editar. Então, certifique-se de ter um backup de todo o resto também.

    
por 02.12.2010 / 03:05
0
sudo su -

Se isso falhar, escreva um script de shell, algo assim. Note que ele vai quebrar se você quiser passar argumentos para o vim (você pode estendê-lo para o trabalho, porém, é mais um PoC)

#!/bin/sh
# Pretend to be vim, write to /tmp then sudo copy to original file
$TMPFILE = $(mktemp)
cp $1 $TMPFILE
vim $TMPFILE
sudo mv -i $TMPFILE $1

Isso pode fazer o que você está procurando? Você também pode facilmente configurá-lo para criar duas cópias do arquivo e, antes de fazer a mudança, avisar se elas ainda não forem idênticas (ou seja, se alguém alterou o original)

    
por 02.12.2010 / 03:23