Làm cách nào để ngăn mật khẩu hoặc thông tin nhạy cảm khác được lưu trữ trong lịch sử bash khi sử dụng grep?


21

Gần đây tôi đã phải grep cho một mật khẩu có thể đã được lưu trong một tập tin. Tôi không muốn dòng đó xuất hiện trong lịch sử bash.

Làm cách nào tôi có thể ngăn mật khẩu hoặc thông tin nhạy cảm khác được lưu trữ trong lịch sử bash khi sử dụng grep? Ví dụ, làm thế nào tôi có thể có được grep để đọc mẫu từ stdin hoặc console?

Câu trả lời:


37

Nếu bạn đặt HISTCONTROL=ignorespace.bashrc và đặt khoảng trắng trước tên lệnh, nó sẽ không được thêm vào lịch sử của bạn.

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

3
FWIW: Câu hỏi trong tiêu đề và câu hỏi trong cơ thể là hoàn toàn khác nhau. Tôi đã trả lời câu hỏi trong tiêu đề.

Những lời chỉ trích của bạn là phù hợp. Tôi chỉ chỉnh sửa tiêu đề. Bây giờ có tốt hơn không? Tôi vẫn nghĩ (và dường như cộng đồng cũng vậy) rằng câu trả lời của bạn là phù hợp nhất.
Leo

1
Tôi đã thực hiện chỉnh sửa câu hỏi của bạn để làm rõ mọi thứ, làm cho cả hai câu hỏi (ngăn thứ gì đó được lưu trữ trong lịch sử và đọc từ stdin với grep) có sẵn. Bằng cách này, tất cả các câu trả lời vẫn còn hiệu lực, nhưng các giải pháp rất khác nhau sẽ không gây nhầm lẫn.

5

Để hoàn thiện, tôi trả lời câu hỏi trong phần thân: làm thế nào để grep đọc các mẫu từ stdin:

Bạn có thể sử dụng -ftùy chọn:

grep -f- /path/to/file

Điều đó sẽ đọc bất kỳ số lượng mẫu từ stdin, một mẫu trên mỗi dòng. ( -có nghĩa là stdin, bạn cũng có thể chỉ định một tệp có các mẫu, mỗi mẫu trên một dòng.) grepsẽ khớp với các dòng /path/to/filephù hợp với bất kỳ mẫu nào được chỉ định.


Cảm ơn vì điều đó. Đó là một đóng góp tốt và cũng là một mẹo hữu ích để sử dụng ở những nơi khác, nói rằng khi cần một mô hình or'ed
Leo

2

Đây là điều tốt nhất tôi có thể nghĩ ra:

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

Điều này có đủ an toàn không? Có cách nào để phục hồi mô hình khác hơn là cuộn thiết bị đầu cuối không? Có cách nào đẹp hơn không?


3
Bạn có thể sử dụng read -sđể ngăn tiếng vang (xem thêm câu hỏi này ). Bí mật sẽ được nhìn thấy trong psđầu ra mặc dù. Bạn có thể sử dụng thay thế grep -f /dev/stdin *(hoặc grep -f - *) để grep sẽ đọc (các) mẫu từ một tệp thay vào đó, kết thúc nhập bằng ^Dhoặc:(read -es; echo $REPLY) | grep -f - *
mr.spuratic

1
Vỏ chụp nên có dấu ngoặc kép xung quanh nó. Hiện tại, điều này sẽ bị hỏng nếu người dùng vào không gian hoặc một số ký tự đặc biệt.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.