มันเป็นไปได้ที่จะเปิดเซสชั่นไม่ระบุตัวตนใน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
โดยไม่แจ้งให้แก้ไขบรรทัดคำสั่ง (เพียงแก้ไขภายในวินัยของบรรทัด) หรือประวัติ