เครื่องมือความปลอดภัย rm-safely จุดประกายการถิ่งถ่างเรื่อง Command Aliasing และความเสี่ยงข้ามระบบ

ทีมชุมชน BigGo
เครื่องมือความปลอดภัย rm-safely จุดประกายการถิ่งถ่างเรื่อง Command Aliasing และความเสี่ยงข้ามระบบ

การเปิดตัวของ rm-safely ซึ่งเป็น shell wrapper ที่ออกแบบมาเพื่อป้องกันการลบไฟล์โดยไม่ตั้งใจบน macOS ได้จุดประกายการถกเถียงอย่างเข้มข้นในชุมชนนักพัฒนาเกี่ยวกับการแลกเปลี่ยนระหว่างความปลอดภัยและความสามารถในการใช้งานข้ามระบบ เครื่องมือนี้จะแทนที่คำสั่ง rm มาตรฐานด้วยเวอร์ชันที่ปลอดภัยกว่า ซึ่งจะย้ายไฟล์ไปยังถังขยะแทนการลบถาวร

วิธีการติดตั้ง:

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

ปัญหาของ Muscle Memory

ความกังวลที่สำคัญที่สุดที่นักพัฒนายกขึ้นมาคือความเสี่ยงที่อาจเกิดขึ้นจากการสร้างนิสัยความปลอดภัยที่ผิดพลาด เมื่อผู้ใช้คุ้นเคยกับคำสั่ง rm ที่ปลอดภัยในระบบท้องถิ่นของตน พวกเขาอาจพัฒนานิสัยการลบไฟล์อย่างไม่ระมัดระวัง ซึ่งอาจกลายเป็นหายนะเมื่อทำงานบนเซิร์ฟเวอร์ระยะไกลหรือระบบที่ไม่มี safety wrapper ติดตั้งไว้ สิ่งนี้สร้างความขัดแย้งที่เครื่องมือที่ออกแบบมาเพื่อเพิ่มความปลอดภัยอาจทำให้ผู้ใช้มีความเสี่ยงมากขึ้นในสภาพแวดล้อมที่แตกต่างกัน

ชุมชนได้ระบุว่าสิ่งนี้เป็นส่วนหนึ่งของรูปแบบที่กว้างขึ้นกับเครื่องมือความปลอดภัย - พวกมันสามารถลดความใส่ใจและความระมัดระวังของผู้ใช้ ซึ่งมักเป็นปัจจัยสำคัญที่สุดในการป้องกันความผิดพลาด

นอกเหนือจาก rm: ตัวการตัวจริง

น่าสนใจที่การถกเถียงเผยให้เห็นว่า rm อาจไม่ใช่ภัยคุกคามที่ใหญ่ที่สุดต่อความปลอดภัยของไฟล์ นักพัฒนาหลายคนรายงานว่าการสูญเสียไฟล์โดยไม่ตั้งใจส่วนใหญ่มาจากการใช้คำสั่ง mv และ cp อย่างไม่ระมัดระวัง ซึ่งสามารถเขียนทับไฟล์ที่มีอยู่แล้วโดยไม่มีเสียงเตือน การดำเนินการเหล่านี้มักทำให้เกิดการสูญเสียข้อมูลมากกว่าคำสั่งลบ เพราะมันเกิดขึ้นโดยไม่มีคำเตือนและสามารถทำลายไฟล์สำคัญได้โดยการแทนที่เนื้อหา

อย่างน้อยสำหรับผม การลบไฟล์โดยไม่ตั้งใจมากกว่า 90% เกิดจาก mv และ cp มากกว่า rm การใช้งานอย่างไม่ระมัดระวังสามารถเขียนทับเนื้อหาของไฟล์ด้วยไฟล์อื่นได้อย่างง่ายดาย

การใช้งาน GNU ของคำสั่งเหล่านี้มีตัวเลือกความปลอดภัยเช่น --no-clobber, --backup, และ --update flags แต่สิ่งเหล่านี้ไม่ได้รับการยอมรับอย่างกว้างขวางหรือถูกตั้งเป็น alias โดยค่าเริ่มต้น

แนวทางทางเลือกและโซลูชันที่มีอยู่

การถกเถียงในชุมชนเน้นทางเลือกที่มีอยู่มากมายของ rm-safely ซึ่งบ่งบอกว่านี่เป็นพื้นที่ปัญหาที่ได้รับการสำรวจอย่างดี เครื่องมือเช่น trash-cli, trash-rs, และ rip2 มีฟังก์ชันการทำงานที่คล้ายกันในระบบปฏิบัติการที่แตกต่างกัน นักพัฒนาบางคนชอบวิธีการป้องกันที่ครอบคลุมมากขึ้น เช่น โซลูชันระดับไฟล์ระบบเช่น btrfs snapshots กับ snapper ซึ่งป้องกันความผิดพลาดของไฟล์ระบบทุกประเภท ไม่ใช่แค่การลบเท่านั้น

ผู้ใช้หลายคนกล่าวถึงการชอบคำสั่งเฉพาะที่มีชื่อที่แตกต่างกันมากกว่าการตั้ง alias คำสั่งที่มีอยู่ โดยใช้เครื่องมือที่มีชื่อเช่น trash, recycle, หรือ j (สำหรับการนำทางไดเรกทอรี) เพื่อหลีกเลี่ยงความสับสนกับคำสั่ง Unix มาตรฐาน

เครื่องมือทางเลือกที่กล่าวถึง:

  • trash-cli: ยูทิลิตี้ถังขยะข้ามแพลตฟอร์ม
  • trash-rs: เครื่องมือที่พัฒนาด้วย Rust รองรับ Windows, macOS และ Linux
  • rip2: เครื่องมือลบไฟล์ทางเลือกที่มีแนวคิดสุสาน
  • btrfs snapshots with snapper: การป้องกันในระดับระบบไฟล์

ข้อกังวลการใช้งานทางเทคนิค

จากมุมมองทางเทคนิค นักพัฒนาบางคนวิจารณ์แนวทางของ rm-safely ในการรวมฟังก์ชันหลายอย่างเข้าไว้ในไฟล์ปฏิบัติการเดียว โดยโต้แย้งว่ามันละเมิดหลักการออกแบบของ Unix เครื่องมือนี้รวมฟังก์ชัน save, restore, และ list ทั้งหมดไว้ในอินเทอร์เฟซคำสั่ง rm ซึ่งบางคนมองว่าเป็นการผสมวัตถุประสงค์หลายอย่างเข้าไว้ในเครื่องมือเดียว

นอกจากนี้ ผู้ตรวจสอบทางเทคนิคยังสังเกตปัญหาเกี่ยวกับการจัดการข้อผิดพลาด โดยเฉพาะการระงับ stderr output ที่อาจซ่อนปัญหาจริงหรือให้ประสบการณ์ผู้ใช้ที่ไม่เป็นประโยชน์

บทเรียนที่กว้างขึ้นจากการถกเถียงนี้ดูเหมือนจะเป็นว่าแม้เครื่องมือความปลอดภัยจะมีที่ของมัน แต่การป้องกันการสูญเสียข้อมูลที่มีประสิทธิภาพที่สุดยังคงเป็นการผสมผสานของนิสัยที่ระมัดระวัง การสำรองข้อมูลที่เหมาะสม ระบบควบคุมเวอร์ชันเช่น git และกลยุทธ์การสำรองข้อมูลที่ครอบคลุม มากกว่าการพึ่งพา command-line safety wrappers เพียงอย่างเดียว

อ้างอิง: rm-safely