A instalação do Steam pode apagar minha casa. Como evitá-lo?

14

Eu li um tópico perturbador na Valve em que um usuário perdeu o sistema ao usar o script steam. Há uma discussão no reddit.linux e no reddit / steam .

Isso pode não ser um problema comum, porque eu altero todos os tipos de configuração do meu sistema. O script em questão faz algo de uma maneira muito, muito estúpida, mas provavelmente não desencadeia o cenário de falha para todos os sistemas porque ...

Bug original:

Eu não tenho certeza do que aconteceu. Mudei a pasta no título para uma unidade montada em /media/user/BLAHe vinculei /home/user/.local/steamo link para o novo local.

Eu lancei vapor. Ele não foi lançado, se ofereceu para me deixar navegar e ainda não conseguiu encontrá-lo quando apontei para o novo local. O vapor travou. Eu o reiniciei.

Ele se reinstalou e tudo parecia ótimo. Até que eu olhei e vi que o vapor aparentemente havia excluído tudo de propriedade do meu usuário recursivamente do diretório raiz. Incluindo minha unidade externa de 3 TB, eu faço o backup de tudo o que foi montado em / media.

Tudo importante, na maior parte, estava na nuvem. É um grande aborrecimento, mas não é um desastre. Se houver a chance de mover a pasta steam pode resultar na exclusão recursiva de tudo na árvore de diretórios, você provavelmente deve gerar um erro em vez de tentar apontar para outras coisas. Ou você sabe, permita 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 mudei era ntfs, se vale alguma coisa.

Rinzwind
fonte

Respostas:

14

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

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

$STEAMROOTpode ficar vazio aqui efetivamente, tornando rm -rf "$STEAMROOT/"*o texto mais aprofundado o mesmo que rm -rf "/"*.


Existem patches aparecendo e há muita coisa errada nesse script. Mais fácil de alterar e, pelo menos, impedir 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 a STEAMDATAconfiguração:

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 por aí instalar o steam como root for avisado: ele excluirá seu disco INTEIRO.

Rinzwind
fonte