Grep kullanırken bir parolanın veya diğer hassas bilgilerin bash tarihinde saklanmasını nasıl önleyebilirim?


21

Bir dosyaya kaydedilmiş bir şifre için son zamanlarda grep vardı. Bash tarihinde bu çizginin ortaya çıkmasını istemedim.

Grep kullanırken bir parola veya diğer hassas bilgilerin bash geçmişinde saklanmasını nasıl önleyebilirim? Örneğin, deseni stdin veya konsoldan okumak için nasıl grep alabilirim?

Yanıtlar:


37

Eğer koyarsanız HISTCONTROL=ignorespace.bashrc içinde ve komut adı önce boşluk koymak, bu geçmişe eklenir edilmeyecektir.

$ export HISTCONTROL=ignorespace
$ grep "passwd" secret_password_file.txt   # added to history
$  grep "passwd" secret_password_file.txt  # not added to history

3
FWIW: Başlıktaki soru ve vücuttaki soru tamamen farklı. Soruyu başlıkta cevapladım.

Eleştirin uygun. Ben sadece başlığı değiştirdim. Şimdi daha iyi? Hala cevabınızın en alakalı olduğunu düşünüyorum (ve böylece topluluk gibi görünüyor).
Leo,

1
Her iki soruyu da açıklamak, (bir şeylerin tarihe kaydedilmesini engellemek ve grep ile stdin okumaktan sakınmak için) kullanılabilir hale getirmek için sorunuzda bir düzenleme yaptım. Bu şekilde, tüm cevaplar hala geçerlidir, ancak çok farklı çözümler kafa karıştırıcı olmayacaktır.

5

Sadece bütünlük için vücuttaki soruyu cevaplarım: stdin'den kalıpları okumak için nasıl grep yapılır:

Bu -fseçeneği kullanabilirsiniz :

grep -f- /path/to/file

stdinHer satıra bir tane olmak üzere herhangi bir sayıda kalıp okuyacaktır . ( -anlamına gelir stdin; ayrıca, her satıra bir tane grepolacak şekilde desenleri olan bir dosya da belirtebilirsiniz.) /path/to/filebelirtilen desenlerden herhangi biriyle eşleşen satırları eşleştirir.


Bunun için teşekkürler. Bu iyi bir katkıdır ve başka yerlerde de kullanmak için kullanışlı bir numaradır, oreded bir desene ihtiyaç duyulduğunda söyleyin
Leo

2

Bulabildiğim en iyi şey:

grep $(read -p "Pattern: "; echo $REPLY) .*

Bu yeterince güvenli mi? Terminali kaydırmaktan başka bir deseni kurtarmak için yine de var mı? Daha iyi bir yolu var mı?


3
read -sEkoyu önlemek için kullanabilirsiniz (ayrıca bu soruya bakınız ). Sır, psçıktıda görünür olacak . Bunun yerine grep -f /dev/stdin *(veya grep -f - *) kullanabilirsiniz, böylece grep bir dosyadaki kalıpları okuyabilir, bunun yerine girdiyi sonlandırabilir ^Dveya:(read -es; echo $REPLY) | grep -f - *
mr.spuratic

1
Yakalama kabuğunun etrafında çift tırnak işareti bulunmalıdır. Şu anda, kullanıcı boşluklar veya bazı özel karakterler girerse bu durum bozulur.
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.