Gizli bash oturumunu nasıl açarım?


50

Gizli bir oturum açmak mümkün mü bash?

Örneğin, komutlara şifreleri girmemiz gerektiğinde ve bashbunları tarihe eklemek istemediğimizde .


9
cat | bashbashkomut istemi, komut satırı düzenlemesi olmadan (sadece çizgi disiplininin iç editörü) veya tarihçe olmadan etkileşimli olmayan bir komut çalıştırır .
Stéphane Chazelas 02:14

Komutunuzun önüne bir boşluk yazın: 'secretcommand'. Şimdi secrectcommandbash tarihinde olmayacak.
Martin Thoma

Yanıtlar:


79

bashKomutlarınızı kaydetmeyi durdurmak istediğinizde , sadece HISTFILEdeğişkeni serbest bırakın :

HISTFILE=

Diğer tüm komutlar artık oturum açmamalıdır .bash_history.

Öte yandan, gerçekten komutları argüman olarak şifreler sağlıyorsanız, zaten yanlış bir şey yapıyorsunuzdur. .bash_historydünyaca okunamıyor ve bu nedenle bu durumdaki en büyük tehdit değil:

psve /procbüyük problem. Sistemdeki tüm kullanıcılar şu anda çalıştırmakta olduğunuz komutları tüm argümanlarıyla görebilirler . Bu yüzden şifreleri komut satırı argümanları olarak iletmek doğal olarak güvensizdir . Parolaları güvenli bir şekilde sağlamak için ortam değişkenlerini veya config dosyalarını (chmodded 600) kullanın.


5
10+ yıldan beri Linux kullanıyorum ve bunu asla yapmadım. +1
eyoung100

3
unset HISTFILEbenzer bir etkiye sahiptir. Bunun için bir işlevi vardır: n() { HISTFILE=; PS1="~${PS1#\~}"; }. Bu şekilde "gizli modda" olup olmadığımı açıkça görebiliyorum.
Lekensteyn

13
Yalnızca soruyu yanıtlamak yerine asıl soruna yönelik olarak +1. Kimlik bilgilerinin etrafından dolaşmak için ek bir seçenek Unix alan soketleridir.
Nathan Osman

1
Bir başka yararlı ipucu, örneğin "HISTFILE =" den önce boşluk bırakmak olacaktır. daha önce boşluk olan herhangi bir komut kaydedilmez.
FUD

Bununla ilgili bir başka harika şey, o pencerede önceki komutların bile görmezden gelmesidir. Mevcut oturumu gizli hale getirmek gibi bir şey: p
Uzumaki D. Ichigo

37
HISTCONTROL=ignorespace

Bu seçenek önceden ayarlanmamışsa bash, tam da ihtiyacınız olan şey olabilir. Tüm tarihi devre dışı bırakmaktan daha az zayıflatıcıdır. Bu sette, boşluk karakteri ile başlayan herhangi bir komut satırı geçmiş listesine kaydedilmeyecektir.

Bu ilgili bağlantılardan:

Bash neden HISTCONTROL = yoksayma seçeneği var?

Neden bash boşluklarla başlayan komutları saklamıyor?


6
Bunun genellikle varsayılan olduğuna dikkat edin.
Ángel,

3

Geçmişi geçici olarak devre dışı bırakabilirsiniz: set +o history

set +o history
...
set -o history

Geçmişi devre dışı bırakma ve ayarlamayı kaldırma arasında bir fark var HISTFILE:

HISTFILE=
date
ls
HISTFILE=~/.bash_history
history

şöyle bir şey çıktılar:

84  HISTFILE=
85  date
87  ls
88  HISTFILE=~/.bash_history
89  history

yani tüm komutlar geçmiş listesine kaydedilir. Tip exitkaydetmek için.
Fakat

set +o history
date
ls
set -o history
history

şöyle bir şey çıktılar:

115  set +o history
116  history

Özet :
set +o historyuzun oturumlar için.
HISTCONTROLve <space>commanddiğer zamanlarda.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.