A instalação do Steam pode apagar minha casa. Como evitar isso?

13

Eu li um tópico perturbador em Valve onde um usuário perdeu o sistema ao usar o roteiro a vapor. Há uma discussão sobre reddit.linux e em reddit/steam .

  

Isso pode não ser um problema comum, porque eu mudo todo tipo de configuração do meu sistema. O script em questão faz algo de uma maneira realmente estúpida, mas provavelmente não aciona o cenário de falha para cada sistema porque ...

     

Bug original:

     

Não tenho certeza do que aconteceu. Mudei a pasta no título para uma unidade montada em /media/user/BLAH e symlinked /home/user/.local/steam para o novo local.

     

Eu lancei vapor. Ele não lançou, ofereceu-me para deixar-me navegar, e ainda não consegui encontrá-lo quando apontei para o novo local. O Steam caiu. Eu reiniciei.

     

Ele se reinstala e tudo parece ótimo. Até que eu olhei e vi que o vapor aparentemente havia deletado tudo que era de meu usuário de maneira recursiva do diretório raiz. Incluindo minha unidade externa de 3 TB eu respaldo tudo até que foi montado em / media.

     

Tudo importante, na maior parte, estava na nuvem. É um incômodo enorme, mas não é um desastre. Se houver a chance de que mover sua pasta de vapor possa resultar na exclusão recursiva de tudo na árvore de diretórios, você provavelmente deve apenas lançar um erro em vez de tentar apontar para outras coisas. Ou você sabe, permitir que o usuário escolha um diretório de instalação inicialmente, como no Windows.

     

Meu sistema é o ubuntu 14.04, e a unidade para a qual eu o movi era ntfs se valesse alguma coisa.

    
por Rinzwind 17.01.2015 / 10:51

1 resposta

13

O problema começa na linha 19 do script "steam.sh.":

STEAMROOT="$(cd "${0%/*}" && echo $PWD)"
STEAMDATA="$STEAMROOT"

$STEAMROOT pode ficar vazio aqui efetivamente, fazendo com que rm -rf "$STEAMROOT/"* no script seja o mesmo que rm -rf "/"*.

Existem correções aparecendo e há muita coisa errada com esse script. Mais fácil de alterar e, pelo menos, evitar a exclusão de arquivos não deve ...

rm -rf "$STEAMROOT/"*

para ...

[[ -n $STEAMROOT && $STEAMROOT =~ 'steam' ]] && rm -rf $STEAMROOT

Também é possível adicionar uma saída logo após o STEAMDATA ser definido:

STEAMROOT="$(cd "${0%/*}" && echo $PWD)"
STEAMDATA="$STEAMROOT"
if [ -z "$STEAMROOT" ]; then
    echo "stop script otherwise files are deleted from /."
    exit 1
fi

Se alguém aí instalou o Steam como root, avise-o: ele apagará o seu disco inteiro.

    
por Rinzwind 17.01.2015 / 10:51

Tags