ฉันจะเปิดเซสชัน bash ที่ไม่ระบุตัวตนได้อย่างไร


50

มันเป็นไปได้ที่จะเปิดเซสชั่นไม่ระบุตัวตนในbash?

ตัวอย่างเช่นเมื่อเราต้องป้อนรหัสผ่านในคำสั่งและไม่ต้องการbashเพิ่มลงในประวัติ


9
cat | bashจะเรียกใช้แบบไม่โต้ตอบbashโดยไม่แจ้งให้แก้ไขบรรทัดคำสั่ง (เพียงแก้ไขภายในวินัยของบรรทัด) หรือประวัติ
Stéphane Chazelas

เขียนช่องว่างด้านหน้าคำสั่งของคุณ: 'secretcommand' ตอนนี้secrectcommandจะไม่อยู่ในประวัติทุบตี
Martin Thoma

คำตอบ:


79

เมื่อคุณต้องการbashหยุดการบันทึกคำสั่งของคุณเพียงแค่ยกเลิกการตั้งค่าHISTFILEตัวแปร:

HISTFILE=

.bash_historyคำสั่งต่อไปทุกคนควรแล้วไม่ได้รับการบันทึกลงใน

ในทางกลับกันถ้าคุณระบุรหัสผ่านเป็นข้อโต้แย้งกับคำสั่งจริงแสดงว่าคุณกำลังทำอะไรผิดไป .bash_historyไม่สามารถอ่านได้ทั่วโลกและไม่ใช่ภัยคุกคามที่ใหญ่ที่สุดในสถานการณ์นี้:

psและ/procเป็นปัญหาใหญ่ ผู้ใช้ทุกคนในระบบสามารถดูคำสั่งที่คุณกำลังทำงานอยู่ในปัจจุบันที่มีทั้งหมดของขัดแย้งของพวกเขา ผ่านรหัสผ่านเป็นอาร์กิวเมนต์บรรทัดคำสั่งดังนั้นจึงเป็นเรื่องที่ไม่ปลอดภัยโดยเนื้อแท้ ใช้ตัวแปรสภาพแวดล้อมหรือไฟล์กำหนดค่า (ที่คุณมี chmodded 600) เพื่อจัดหารหัสผ่านอย่างปลอดภัย


5
ฉันใช้ Linux มากกว่า 10 ปีและไม่เคยคิดที่จะทำสิ่งนี้ +1
eyoung100

3
unset HISTFILEมีผลคล้ายกัน n() { HISTFILE=; PS1="~${PS1#\~}"; }ฉันมีฟังก์ชั่นนี้: ด้วยวิธีนี้ฉันสามารถเห็นได้อย่างชัดเจนว่าฉันอยู่ใน "โหมดไม่ระบุตัวตน" หรือไม่
Lekensteyn

13
+1 สำหรับการแก้ปัญหาที่แท้จริงไม่ใช่เพียงแค่ตอบคำถาม ตัวเลือกเพิ่มเติมสำหรับการส่งผ่านข้อมูลประจำตัวคือซ็อกเก็ตโดเมน Unix
Nathan Osman

1
เคล็ดลับที่มีประโยชน์อีกประการหนึ่งคือการใส่ช่องว่างก่อนเช่น "HISTFILE =" คำสั่งใด ๆ ที่มีช่องว่างก่อนไม่ได้รับการบันทึก
FUD

อีกสิ่งที่ยอดเยี่ยมเกี่ยวกับเรื่องนี้ก็คือแม้คำสั่งก่อนหน้านี้ในหน้าต่างนั้นก็จะถูกละเว้น มันก็เหมือนการเปลี่ยนเซสชั่นที่มีอยู่เป็นไม่ระบุตัวตน: p
Uzumaki D. Ichigo

37
HISTCONTROL=ignorespace

หากตัวเลือกนี้ยังไม่ได้ตั้งค่าbashอาจเป็นสิ่งที่คุณต้องการ มันลดน้อยลงกว่าปิดการใช้งานประวัติทั้งหมด ด้วยชุดนั้น commandline ใด ๆ ที่ขึ้นต้นด้วยอักขระเว้นวรรคจะไม่ถูกบันทึกลงในรายการประวัติ

จากลิงค์ที่เกี่ยวข้องเหล่านี้:

เหตุใด bash จึงมีตัวเลือก HISTCONTROL =

ทำไมทุบตีไม่เก็บคำสั่งที่ขึ้นต้นด้วยช่องว่าง


6
หมายเหตุนี่มักจะเป็นค่าเริ่มต้น
Ángel

3

คุณสามารถปิดการใช้งานประวัติชั่วคราว: 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ในเวลาอื่น ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.