มันเป็นไปได้ที่จะเปิดเซสชั่นไม่ระบุตัวตนในbash?
ตัวอย่างเช่นเมื่อเราต้องป้อนรหัสผ่านในคำสั่งและไม่ต้องการbashเพิ่มลงในประวัติ
secrectcommandจะไม่อยู่ในประวัติทุบตี
มันเป็นไปได้ที่จะเปิดเซสชั่นไม่ระบุตัวตนในbash?
ตัวอย่างเช่นเมื่อเราต้องป้อนรหัสผ่านในคำสั่งและไม่ต้องการbashเพิ่มลงในประวัติ
secrectcommandจะไม่อยู่ในประวัติทุบตี
คำตอบ:
เมื่อคุณต้องการbashหยุดการบันทึกคำสั่งของคุณเพียงแค่ยกเลิกการตั้งค่าHISTFILEตัวแปร:
HISTFILE=
.bash_historyคำสั่งต่อไปทุกคนควรแล้วไม่ได้รับการบันทึกลงใน
ในทางกลับกันถ้าคุณระบุรหัสผ่านเป็นข้อโต้แย้งกับคำสั่งจริงแสดงว่าคุณกำลังทำอะไรผิดไป .bash_historyไม่สามารถอ่านได้ทั่วโลกและไม่ใช่ภัยคุกคามที่ใหญ่ที่สุดในสถานการณ์นี้:
psและ/procเป็นปัญหาใหญ่ ผู้ใช้ทุกคนในระบบสามารถดูคำสั่งที่คุณกำลังทำงานอยู่ในปัจจุบันที่มีทั้งหมดของขัดแย้งของพวกเขา ผ่านรหัสผ่านเป็นอาร์กิวเมนต์บรรทัดคำสั่งดังนั้นจึงเป็นเรื่องที่ไม่ปลอดภัยโดยเนื้อแท้ ใช้ตัวแปรสภาพแวดล้อมหรือไฟล์กำหนดค่า (ที่คุณมี chmodded 600) เพื่อจัดหารหัสผ่านอย่างปลอดภัย
unset HISTFILEมีผลคล้ายกัน n() { HISTFILE=; PS1="~${PS1#\~}"; }ฉันมีฟังก์ชั่นนี้: ด้วยวิธีนี้ฉันสามารถเห็นได้อย่างชัดเจนว่าฉันอยู่ใน "โหมดไม่ระบุตัวตน" หรือไม่
HISTCONTROL=ignorespace
หากตัวเลือกนี้ยังไม่ได้ตั้งค่าbashอาจเป็นสิ่งที่คุณต้องการ มันลดน้อยลงกว่าปิดการใช้งานประวัติทั้งหมด ด้วยชุดนั้น commandline ใด ๆ ที่ขึ้นต้นด้วยอักขระเว้นวรรคจะไม่ถูกบันทึกลงในรายการประวัติ
จากลิงค์ที่เกี่ยวข้องเหล่านี้:
คุณสามารถปิดการใช้งานประวัติชั่วคราว: set +o history
set +o history
...
set -o history
มีความแตกต่างระหว่างการปิดใช้งานประวัติและไม่ได้ตั้งค่าHISTFILE:
HISTFILE=
date
ls
HISTFILE=~/.bash_history
history
แสดงผลแบบนี้:
84 HISTFILE=
85 date
87 ls
88 HISTFILE=~/.bash_history
89 history
เช่นคำสั่งทั้งหมดจะถูกบันทึกไว้ในรายการประวัติ พิมพ์exitเพื่อบันทึก
แต่
set +o history
date
ls
set -o history
history
แสดงผลแบบนี้:
115 set +o history
116 history
สรุป :
set +o historyสำหรับการประชุมที่ยาวนาน
HISTCONTROLและ<space>commandในเวลาอื่น ๆ
cat | bashจะเรียกใช้แบบไม่โต้ตอบbashโดยไม่แจ้งให้แก้ไขบรรทัดคำสั่ง (เพียงแก้ไขภายในวินัยของบรรทัด) หรือประวัติ