Alat Keselamatan rm-safely Mencetuskan Perdebatan Mengenai Alias Arahan dan Risiko Merentas Sistem

Pasukan Komuniti BigGo
Alat Keselamatan rm-safely Mencetuskan Perdebatan Mengenai Alias Arahan dan Risiko Merentas Sistem

Pelancaran rm-safely, pembungkus shell yang direka untuk mencegah pemadaman fail secara tidak sengaja pada macOS, telah mencetuskan perbincangan hangat dalam komuniti pembangun mengenai pertukaran antara keselamatan dan kebolehpindahan sistem. Alat ini menggantikan arahan rm standard dengan versi yang lebih selamat yang memindahkan fail ke tong sampah berbanding memadamkannya secara kekal.

Kaedah Pemasangan:

  • Melalui curl: curl -fsSL https://raw.githubusercontent.com/zdk/rm-safely/main/rm-safely | bash -s install
  • Melalui homebrew: brew install zdk/tools/rm-safely

Masalah Ingatan Otot

Kebimbangan paling ketara yang dibangkitkan oleh pembangun berpusat pada potensi bahaya mewujudkan tabiat keselamatan palsu. Apabila pengguna menjadi terbiasa dengan arahan rm yang selamat pada sistem tempatan mereka, mereka mungkin mengembangkan tabiat pemadaman yang cuai yang boleh terbukti membawa malapetaka apabila bekerja pada pelayan jauh atau sistem tanpa pembungkus keselamatan yang dipasang. Ini mewujudkan paradoks di mana alat yang direka untuk meningkatkan keselamatan sebenarnya mungkin menjadikan pengguna lebih terdedah dalam persekitaran yang berbeza.

Komuniti telah mengenal pasti ini sebagai sebahagian daripada corak yang lebih luas dengan alat keselamatan - ia boleh mengurangkan perhatian dan kewaspadaan pengguna, yang sering kali merupakan faktor paling penting dalam mencegah kesilapan.

Melangkaui rm: Punca Sebenar

Menariknya, perbincangan mendedahkan bahawa rm mungkin bukan ancaman terbesar kepada keselamatan fail. Ramai pembangun melaporkan bahawa majoriti kehilangan fail mereka secara tidak sengaja datang daripada penggunaan arahan mv dan cp secara cuai, yang boleh menimpa fail sedia ada secara senyap. Operasi ini sering menyebabkan lebih banyak kehilangan data daripada arahan pemadaman kerana ia berlaku tanpa amaran dan boleh merosakkan fail penting dengan menggantikan kandungannya.

Sekurang-kurangnya bagi saya, lebih 90% pemadaman fail yang tidak disengajakan adalah disebabkan oleh mv dan cp berbanding rm. Bersikap cuai dengan mereka boleh dengan mudah berakhir dengan menimpa kandungan fail dengan yang lain.

Pelaksanaan GNU bagi arahan ini menawarkan pilihan keselamatan seperti flag --no-clobber, --backup, dan --update, tetapi ini tidak diterima pakai secara meluas atau di-alias secara lalai.

Pendekatan Alternatif dan Penyelesaian Sedia Ada

Perbincangan komuniti menyerlahkan banyak alternatif sedia ada kepada rm-safely, menunjukkan ini adalah ruang masalah yang telah diterokai dengan baik. Alat seperti trash-cli, trash-rs, dan rip2 menawarkan fungsi yang serupa merentas sistem operasi yang berbeza. Sesetengah pembangun lebih suka kaedah perlindungan yang lebih komprehensif, seperti penyelesaian peringkat sistem fail seperti snapshot btrfs dengan snapper, yang melindungi daripada semua jenis kesilapan sistem fail, bukan hanya pemadaman.

Beberapa pengguna menyebut lebih suka arahan khusus dengan nama yang berbeza berbanding mengalias arahan sedia ada, menggunakan alat dengan nama seperti trash, recycle, atau j (untuk navigasi direktori) untuk mengelakkan kekeliruan dengan arahan Unix standard.

Alat Alternatif yang Disebut:

  • trash-cli: Utiliti tong sampah merentas platform
  • trash-rs: Alat berasaskan Rust yang menyokong Windows, macOS, dan Linux
  • rip2: Alat pemadaman alternatif dengan konsep tanah perkuburan
  • btrfs snapshots dengan snapper: Perlindungan peringkat sistem fail

Kebimbangan Pelaksanaan Teknikal

Dari sudut pandangan teknikal, sesetengah pembangun mengkritik pendekatan rm-safely yang menggabungkan berbilang fungsi ke dalam satu boleh laku, dengan hujah ia melanggar prinsip reka bentuk Unix. Alat ini termasuk fungsi simpan, pulih, dan senarai semuanya dalam antara muka arahan rm, yang sesetengah pihak lihat sebagai mencampurkan terlalu banyak tujuan ke dalam satu alat.

Selain itu, pengkaji teknikal mencatatkan isu dengan pengendalian ralat, khususnya penindasan output stderr yang boleh menyembunyikan masalah sebenar atau memberikan pengalaman pengguna yang tidak membantu.

Pengajaran yang lebih luas daripada perbincangan ini nampaknya ialah walaupun alat keselamatan mempunyai tempatnya, perlindungan paling berkesan terhadap kehilangan data kekal sebagai gabungan tabiat berhati-hati, sandaran yang betul, sistem kawalan versi seperti git, dan strategi sandaran yang komprehensif berbanding bergantung semata-mata pada pembungkus keselamatan baris arahan.

Rujukan: rm-safely