La instalación de Steam puede borrar mi casa. ¿Cómo prevenirlo?

14

He leído un tema inquietante en Valve donde un usuario perdió su sistema al usar el script de Steam. Hay una discusión sobre reddit.linux y sobre reddit / steam .

Esto puede no ser un problema común porque cambio todo tipo de configuración sobre mi sistema. El script en cuestión hace algo de una manera muy, muy estúpida, pero probablemente no desencadena el escenario de falla para todos los sistemas porque ...

Error original:

No estoy seguro de lo que pasó. Moví la carpeta en el título a una unidad montada debajo /media/user/BLAHy vinculé /home/user/.local/steama la nueva ubicación.

Lancé vapor. No se lanzó, me ofreció dejarme navegar, y aún no podía encontrarlo cuando señalé la nueva ubicación. El vapor se estrelló. Lo reinicié

Se volvió a instalar y todo se veía genial. Hasta que miré y vi que steam aparentemente había borrado todo el contenido de mi usuario recursivamente del directorio raíz. Incluyendo mi disco externo de 3tb, hice una copia de seguridad de todo lo que estaba montado en / media.

Todo lo importante, en su mayor parte, estaba en la nube. Es una gran molestia, pero no es un desastre. Si existe la posibilidad de que mover su carpeta de Steam pueda resultar en la eliminación recursiva de todo en el árbol de directorios, probablemente debería arrojar un error en lugar de intentar señalar otras cosas. O bien, permita que el usuario elija un directorio de instalación inicialmente como en Windows.

Mi sistema es ubuntu 14.04, y la unidad a la que lo moví era ntfs si valía la pena.

Rinzwind
fuente

Respuestas:

14

El problema comienza alrededor de la línea 19 en el script "steam.sh":

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

$STEAMROOTpuede quedar vacío aquí de manera efectiva, lo que hace rm -rf "$STEAMROOT/"*que la secuencia de comandos sea la misma que rm -rf "/"*.


Aparecen parches y hay muchos errores con este script. Más fácil de cambiar y al menos evitar la eliminación de archivos, no debería ...

rm -rf "$STEAMROOT/"*

a ...

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

También es posible agregar una salida justo después de STEAMDATAestablecer:

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

Si alguien por ahí instaló Steam como root se advirtió: eliminará su disco ENTERO.

Rinzwind
fuente