Saya tidak sengaja mengetik kata sandi saya ke baris perintah bash, salah mengira Last login: ...
baris Wrong password
(saya sedang terburu-buru). Apa yang harus saya lakukan untuk menutupi jejak saya?
Apa yang saya lakukan adalah mengedit .bash_history
dan menghapus baris yang menyinggung (harus login kembali satu kali untuk melihat kata sandi muncul di file sehingga saya bisa menghapusnya, dan login kembali untuk melihatnya menghilang dari sejarah yang tersedia di bawah tombol UPARROW).
Apakah ada tempat lain di mana histori perintah dapat disimpan? Sistem ini adalah CentOS 6.5.
linux
command-line
bash
centos
MaDa
sumber
sumber
/dev/null
.ssh-keygen -f id_rsa -p
.Jawaban:
Anda dapat menghapus hanya garis yang menyinggung dari
bash
riwayat, alih-alih menghapus seluruh riwayat. Cukup hapus baris dengan-d
bendera, lalu simpan (tulis) riwayat baru dengan-w
bendera:sumber
Ada dua bagian untuk ini:
bash
menyimpan riwayat dalam file~/.bash_history
yang, secara default, ditulis di akhir sesihistory
yang disimpan dalam memoriAgar aman, Anda harus menghapusnya dari sesi:
dan pangkas file histori sesuai kebutuhan:
Jika sesi Anda mengetik kata sandi masih terbuka, maka cara lain untuk menutupi jejak Anda adalah dengan mengatur
HISTFILE
variabel ke perangkat nol sehingga riwayat tidak akan ditulis~/.bash_history
ketika sesi keluar:sumber
shred
file atau menimpanya berkali-kali?HISTFILE=
sudah cukup. Daribash(1)
: Jika tidak disetel, riwayat perintah tidak disimpan ketika shell keluar.Karena bash (setidaknya semua versi historis dan saat ini yang saya ketahui) tidak secara otomatis menyimpan histori sampai Anda keluar, strategi yang secara umum berlaku ketika Anda mengetikkan perintah yang ingin Anda pastikan tidak pernah disimpan adalah dengan segera mengetik:
Ini membunuh shell dengan
SIGKILL
, yang tidak dapat ditangkap, sehingga shell tidak memiliki cara untuk menyimpan apa pun saat keluar.Sebagian besar pendekatan lain melibatkan scrubbing setelah fakta (yaitu setelah data telah mencapai disk), yang memiliki lebih banyak kesempatan untuk kesalahan (hilang salinan), terutama jika sistem mungkin menggunakan btrfs atau serupa.
sumber
rm ~/.bash_history~
untuk menghapus file cadangan dalam kasus OP ketika sudah disimpanSetelah Anda mengetik sesuatu yang tidak ingin disimpan dalam riwayat secara tidak sengaja, Anda dapat mengetik:
unset HISTFILE
Bash tidak akan tahu di mana menyimpan histori ketika Anda logout, jadi secara efektif ini akan menonaktifkan histori logging untuk seluruh sesi.
sumber
Trik favorit saya untuk ini adalah dengan menekan panah atas, backspace atas perintah, ketik sesuatu (mungkin tidak perlu), tekan panah bawah, ketik "ls", dan tekan enter. Rasanya benar-benar tipu, tetapi itu benar-benar berfungsi. Menemukan ini ketika saya merasa terganggu setelah mengedit perintah yang salah dalam sejarah saya dan kemudian merusaknya dengan tidak menekan ctrl-c untuk membatalkan pengeditan. Saya kira bash mendukung sejarah revisionis. ;-)
Seperti:
sumber
Tambahan untuk jawaban lain, mungkin relevan bahwa kata sandi juga ditemukan dalam buffer gulir terminal - riwayat teks yang ditampilkan - sekarang, dan, lebih banyak masalah, mungkin pada hard disk, jika terminal emulator tidak menyimpan sejarah ke disk. Ini terjadi di konsole KDE jika ukuran riwayat diatur ke "scrollback tidak terbatas", untuk tidak pernah membuang output apa pun.
sumber
Dengan
$<space> command
, sebuah perintah tidak ditambahkan ke histori, terkadang bergunasumber
ps
.Alternatif lain untuk menghindari penyimpanan ke file histori (sebelum Anda logout) adalah dengan
dan kemudian keluar. Hentikan riwayat yang dituliskan ke file (karena file tersebut hanya baca) sehingga seluruh sesi bash dibuang dan riwayat sebelumnya dipertahankan.
Login lagi dan setel ulang izin ke
600
(atau tidak, tergantung seberapa paranoid Anda!).sumber
Saya melihat berulang kali disebutkan
Bagian pertama sudah pasti benar, tetapi Anda tidak perlu menggunakan mengedit .bash_history secara manual untuk memperbaikinya. Jika Anda menggabungkan dua perintah pada satu baris, itu berfungsi dengan baik:
sumber
Banyak jawaban di sini mencoba untuk menghapus perintah yang dimaksud dari riwayat sesi curren't bash sebelum ditulis ke
$HISTFILE
(~ / .bash_history secara default). Namun, jika Anda telah mengaturPROMPT_COMMAND=history -a
perintah dengan kata sandi Anda segera dituliskan ke Anda$HISTFILE
ketika prompt ditampilkan setelah perintah berakhir. Anda harus mengedit Anda$HISTFILE
untuk menghapusnya.Pengaturan ini biasanya digunakan untuk menyisipkan perintah dari beberapa sesi bash terbuka .
sumber
Anda juga ingin memeriksa log syslog. Login yang tidak valid umumnya akan login ke syslog.
/ var / log / messages atau yang setara untuk OS Anda.
sumber