Cria um ambiente vazio temporário no Linux [closed]

2

É possível criar um ambiente vazio temporário para um novo usuário em um shell como Bash ou zsh?

Quero dizer, como o modo de navegação anônima no Chrome, que abre um ambiente isolado no qual tudo que você faz é removido localmente (sem histórico, sem cookies, sem cache, etc.). Isso é possível em um shell Linux?

    
por soner 03.07.2018 / 18:47

4 respostas

3

Para apenas adicionar o óbvio (neste ponto ele não foi mencionado), esta é uma das intenções de jails / containers / zones, e embora possa parecer um exagero para os não iniciados (eu não estou assumindo nada) , é trivial se alguém já estiver usando-os. (E se não for usá-los, tentar reinventar esta roda será terrivelmente propenso a erros.)

Em suma, crie uma instância do docker temp, faça o seu pior e remova-a depois. link

Veja também este backgrounder: link

    
por 03.07.2018 / 22:24
1

Você pode usar isto se você quer apenas rodar o programa sem seus arquivos de configuração, mas você confia que o programa não é malicioso e não tenta olhar para fora da caixa.

Eu escrevi uma coisinha há algum tempo que configura um diretório temporário e inicia um shell com um ambiente mínimo. Eu uso esse muitos vezes diariamente para testar minhas soluções para perguntas deste site.

link

Os usuários do FreeBSD também podem usar a devel/shell-toolbox port.

O comando é chamado shell e cria um diretório de trabalho descartável temporário, opcionalmente pré-preenchido com o conteúdo de outro diretório, e inicia um shell nele. Quando a sessão de shell termina, o diretório temporário é descartado (dependendo dos flags de linha de comando usados).

Isso também pode ser usado para iniciar outro shell diferente do shell de login do usuário.

Ele não cria um usuário temporário (pois isso exigiria permissões administrativas), mas define a variável HOME como o diretório temporário, o que significa que qualquer referência a $HOME ou ~ seria resolvida como o diretório temporário e não para a "casa real" do usuário. É não um ambiente "seguro" no sentido de que o resto do sistema é protegido, mas fornece um shell interativo em um diretório descartável onde os arquivos e diretórios criados serão limpos quando terminados com impacto mínimo do seu ambiente de shell comum.

Exemplo:

[box] $ shell -s "$HOME/skel" zsh
shell: info: Copying /home/kk/skel into /tmp_mfs/shell-zsh.5IAh9F2B
shell: info: Starting /usr/local/bin/zsh in /tmp_mfs/shell-zsh.5IAh9F2B
$ ls -a
.          .Xdefaults .cvsrc     .mailrc    .vimrc
..         .cshrc     .login     .profile   .zshrc
$ echo "$HOME"
/tmp_mfs/shell-zsh.zqHtjz49
$ env
HOME=/tmp_mfs/shell-zsh.zqHtjz49
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin
PS1=$
SHELL=/usr/local/bin/zsh
TERM=screen
LOGNAME=kk
SHLVL=1
PWD=/tmp_mfs/shell-zsh.zqHtjz49
OLDPWD=/tmp_mfs/shell-zsh.zqHtjz49
_=/usr/bin/env
$ exit
shell: info: Removing /tmp_mfs/shell-zsh.5IAh9F2B

Não faz chroot ou algo assim. É basicamente um wrapper glorificado em torno de env -i .

Veja a documentação shell .

    
por 03.07.2018 / 19:59
0

Use um instantâneo em uma máquina virtual.

  1. Crie uma máquina virtual com os pré-requisitos necessários.
  2. Crie um instantâneo da VM.
  3. Faça qualquer teste na sua VM.
  4. Restaure o instantâneo, excluindo qualquer modificação que você fez no sistema.
  5. Vá para 3.
por 04.07.2018 / 12:35
-1

Se você quiser um shell totalmente limpo para todas as variáveis de ambiente ou aliases, você pode gerar um novo shell e digitar:

$ unalias -a
$ unset 'set|grep '^[A-Z_a-z].*=' |sed 's|=.*$||g''

Isso praticamente removerá tudo que puder ser removido. É claro que você vai querer definir PS1 para algo que, de outra forma, não será capaz de dizer se você está em uma citação ou no prompt de comando.

Nota: Isso se aplica apenas a bash e zsh .

    
por 03.07.2018 / 20:46

Tags