7
มีวิธีการส่งผ่านข้อมูลที่สำคัญใน bash โดยใช้พรอมต์สำหรับคำสั่งใด ๆ ?
สมมติว่าฉันกำลังใช้sha1passเพื่อสร้างแฮชของรหัสผ่านที่ละเอียดอ่อนบางตัวในบรรทัดคำสั่ง ฉันสามารถใช้sha1pass mysecretเพื่อสร้างแฮชของmysecretแต่นี่มีข้อเสียที่mysecretตอนนี้อยู่ในประวัติศาสตร์ทุบตี มีวิธีการที่จะบรรลุเป้าหมายสุดท้ายของคำสั่งนี้ในขณะที่หลีกเลี่ยงการเปิดเผยmysecretในข้อความธรรมดาpasswdหรือไม่โดยใช้คำสั่ง-style? ฉันสนใจวิธีการทั่วไปในการทำเช่นนี้เพื่อส่งผ่านข้อมูลที่ละเอียดอ่อนไปยังคำสั่งใด ๆ วิธีการจะเปลี่ยนเมื่อข้อมูลที่ละเอียดอ่อนถูกส่งผ่านเป็นอาร์กิวเมนต์ (เช่นในsha1pass) หรือใน STDIN ไปยังคำสั่งบางอย่าง มีวิธีการทำสิ่งนี้หรือไม่? แก้ไข : คำถามนี้ดึงดูดความสนใจจำนวนมากและมีคำตอบที่ดีหลายข้อเสนอด้านล่าง สรุปคือ: ตามคำตอบของ @ Kusalanandaเราจะไม่ต้องให้รหัสผ่านหรือความลับเป็นอาร์กิวเมนต์บรรทัดคำสั่งสำหรับยูทิลิตี้ สิ่งนี้มีความเสี่ยงในหลายวิธีตามที่อธิบายไว้โดยเขาและควรใช้ยูทิลิตี้ที่ออกแบบมาดีกว่าที่สามารถรับข้อมูลลับบน STDIN ได้ คำตอบของ @ vfbsilvaอธิบายถึงวิธีการป้องกันไม่ให้สิ่งต่าง ๆ ถูกเก็บไว้ในประวัติทุบตี @ คำตอบของโจนาธานอธิบายวิธีการที่ดีอย่างสมบูรณ์แบบสำหรับการทำสิ่งนี้ให้สำเร็จตราบใดที่โปรแกรมสามารถใช้ข้อมูลลับของมันใน STDIN ดังนั้นฉันตัดสินใจยอมรับคำตอบนี้ sha1passใน OP ของฉันเป็นเพียงตัวอย่าง แต่การสนทนาได้กำหนดว่ามีเครื่องมือที่ดีกว่าที่ใช้ข้อมูลบน STDIN เป็น@R ..บันทึกในคำตอบของเขาการใช้คำสั่งขยายบนตัวแปรไม่ปลอดภัย ดังนั้นโดยสรุปฉันยอมรับคำตอบของ @ Jonathanเนื่องจากเป็นทางออกที่ดีที่สุดเนื่องจากคุณมีโปรแกรมที่ออกแบบมาอย่างดีและมีความประพฤติดี แม้ว่าการส่งรหัสผ่านหรือความลับในฐานะที่เป็นอาร์กิวเมนต์บรรทัดคำสั่งจะไม่ปลอดภัยโดยพื้นฐาน