Abra um Editor Baseado em Console com acesso limitado

6

Eu tenho um script que será executado por meio do SSH. Meu servidor SSH está configurado para sempre acionar esse script, para que o usuário não tenha acesso à máquina real.

Uma das características deste script é editar um arquivo, gostaria de saber se existe uma maneira de invocar o VIM (ou algum outro editor baseado em console) sem permitir que ele edite outros arquivos ou execute comandos. Eu quero que o VIM seja forçado a editar apenas o arquivo aberto.

    
por André Puel 22.05.2012 / 18:17

7 respostas

3

Eu não acho que seja possível limitar o próprio Vim do jeito que você quiser.

Mas você pode limitar todos os direitos do usuário a apenas um arquivo / diretório específico. Desta forma, ele nunca seria capaz de ler ou escrever em qualquer outro arquivo / diretório. Esteja ciente de que seu usuário ainda deve ser capaz de executar programas localizados em outro lugar ( /usr/bin/vim , por exemplo).

Um google rápido provavelmente retornará dezenas de tutoriais. Esta ferramenta pode ajudar: permite que você configure uma espécie de sandbox em seu servidor.

    
por 22.05.2012 / 19:27
3

Você pode criar uma cópia do vim para o usuário específico, e restringir o usuário a apenas as partes do FS que ele precisa acessar - portanto, apenas privilégios de leitura / gravação para esse arquivo, e não outros grupos adicionados ao sua conta. Isso deve efetivamente restringi-lo a apenas esses arquivos.

Outra coisa possível a fazer seria restringir o usuário a uma prisão chroot depois de fazer o acima - então ele só veria o vim e o arquivo.

    
por 26.05.2012 / 13:44
3

Não usando o Vim, só posso sugerir sem testar:

  • Invoque o Vim com o parâmetro -Z
  • Mapeie o comando W para uma função que salvará o arquivo atual e ignorará o parâmetro
  • Desativar o comando E

Aqui estão mais algumas informações para indicar o caminho:

Mapeamento de chaves no Vim - Tutorial
Vim: Qual é a diferença entre o remapeamento, noremap, nnoremap e vnoremap
Documentação do Vim: map

    
por 26.05.2012 / 12:25
1

Use o Nano no modo restrito .

O rnano é uma versão restrita do nano, que edita apenas arquivos específicos e não permite que o usuário acesse o sistema de arquivos ou um shell de comando .

No modo restrito, o nano não:

  • ler ou gravar em qualquer arquivo não especificado na linha de comando
  • leia qualquer arquivo nanorc
  • permite suspender
  • permite que um arquivo seja anexado, prefixado ou salvo com um nome diferente
  • use arquivos de backup ou verificação ortográfica
por 29.05.2012 / 20:33
0

Não exatamente o que você está procurando, mas o rvim faz alguns o que você quer. Talvez seja possível fazer alguns truques com o chroot. Não sei.

It will not be possible to start shell commands, or suspend Vim.

    
por 22.05.2012 / 18:34
0

Minha recomendação é criar um ambiente de login chroot completo para os usuários quando eles fizerem login. Isso é semelhante ao que a Apple e OEM OEM fabrica para seus dispositivos. link . Isso permite criar um ambiente específico para cada usuário que efetua login com privilégios limitados.

Dessa forma, você pode bloqueá-los apenas em uma seção específica das ferramentas disponíveis. Mesmo se eles tiverem acesso de gravação, eles não poderão afetar o sistema de arquivos raiz e qualquer coisa que esteja sendo executada lá, sem algum esforço significativo.

Os links a seguir ajudarão você ao longo do caminho link

link

Assim como o rooting, ou o jail breaking the iphone, dispositivos Android, exigem conhecimento sofisticado de programação para explorar processos privilegiados, não é muito fácil de fazer.

Este tutorial para o Ubuntu explica o que é um ambiente de raiz / chroot de alteração e como criá-lo. link

    
por 30.05.2012 / 09:32
0

Você pode usar qualquer editor de texto que desejar e criar um pequeno script de wrapper assim:

#!/bin/sh
case "$1" in
  /an/acceptable.file|/another/file)texteditor "$1";;
  *)echo you don't have permission to edit this file
    exit;;
esac

definir permissões de acordo

(Nota: Este método pode ser usado para muitas coisas e é comum em scripts cgi)

    
por 31.05.2012 / 02:39