Instalasi uap dapat menghapus rumah saya. Bagaimana cara mencegahnya?

14

Saya telah membaca topik yang mengganggu tentang Valve di mana pengguna kehilangan sistemnya saat menggunakan skrip uap. Ada diskusi tentang reddit.linux dan reddit / steam .

Ini mungkin bukan masalah umum karena saya mengubah segala macam konfigurasi tentang sistem saya. Script yang bersangkutan melakukan sesuatu dengan cara yang sangat, sangat bodoh, tetapi mungkin tidak memicu skenario kegagalan untuk setiap sistem karena ...

Bug Asli:

Saya tidak yakin apa yang terjadi. Saya memindahkan folder dalam judul ke drive yang dipasang di bawah /media/user/BLAHdan terhubung /home/user/.local/steamke lokasi baru.

Saya meluncurkan steam. Itu tidak diluncurkan, itu menawarkan untuk membiarkan saya menjelajah, dan masih tidak dapat menemukannya ketika saya menunjuk ke lokasi baru. Uap jatuh. Saya memulainya kembali.

Ini menginstal ulang sendiri dan semuanya tampak hebat. Sampai saya melihat dan melihat bahwa steam ternyata menghapus semua yang dimiliki oleh pengguna saya secara rekursif dari direktori root. Termasuk drive eksternal 3tb saya, saya mendukung semuanya yang sudah terpasang di bawah / media.

Segala sesuatu yang penting, sebagian besar, ada di awan. Ini adalah masalah besar, tetapi itu bukan bencana. Jika ada kemungkinan memindahkan folder steam Anda dapat menghapus semua pohon direktori secara rekursif, Anda mungkin hanya perlu memunculkan kesalahan alih-alih mencoba mengarahkan ke hal lain. Atau Anda tahu, izinkan pengguna untuk memilih direktori instal awalnya seperti di windows.

Sistem saya adalah ubuntu 14.04, dan drive yang saya pindahkan adalah ntfs jika ada nilainya.

Rinzwind
sumber

Jawaban:

14

Masalahnya dimulai sekitar baris 19 dalam skrip "steam.sh.":

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

$STEAMROOTdapat menjadi kosong di sini secara efektif membuat rm -rf "$STEAMROOT/"*lebih jauh ke dalam skrip sama dengan rm -rf "/"*.


Ada tambalan yang muncul dan ada banyak yang salah dengan skrip ini. Paling mudah untuk mengubah dan setidaknya mencegah menghapus file, seharusnya tidak ...

rm -rf "$STEAMROOT/"*

untuk ...

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

Juga dimungkinkan untuk menambahkan jalan keluar setelah STEAMDATAdiatur:

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

Jika ada orang di luar sana yang memasang steam sebagai root, ia akan diperingatkan: itu akan menghapus seluruh disk Anda.

Rinzwind
sumber