मैं एक गुप्त बैश सत्र कैसे खोलूं?


50

क्या एक गुप्त सत्र खोलना संभव है bash?

उदाहरण के लिए, जब हमें आदेशों में पासवर्ड दर्ज करने की आवश्यकता होती है और bashउन्हें इतिहास में जोड़ना नहीं चाहते हैं।


9
cat | bashbashप्रॉम्प्ट, कमांड-लाइन एडिटिंग (बस लाइन अनुशासन के आंतरिक संपादक) या इतिहास के बिना एक गैर-इंटरैक्टिव चलाएगा ।
स्टीफन चेज़लस

अपने कमांड के सामने एक स्पेस लिखें: 'secretcommand'। अब secrectcommandबैश इतिहास में नहीं होगा।
मार्टिन थोमा

जवाबों:


79

जब आप bashअपने आदेशों को लॉग इन करना बंद करना चाहते हैं , तो बस HISTFILEवेरिएबल को अनसेट करें :

HISTFILE=

इसके बाद सभी कमांड को अब लॉग इन नहीं किया जाना चाहिए .bash_history

दूसरी ओर, यदि आप वास्तव में पासवर्ड को कमांड के तर्क के रूप में आपूर्ति कर रहे हैं, तो आप पहले से ही कुछ गलत कर रहे हैं। .bash_historyविश्व-पठनीय नहीं है और इसलिए इस स्थिति में सबसे बड़ा खतरा नहीं है:

psऔर /procबड़ी समस्या है। सिस्टम के सभी उपयोगकर्ता इस आदेश को देख सकते हैं जो आप वर्तमान में अपने सभी तर्कों के साथ चला रहे हैं । कमांड लाइन के तर्क के रूप में पासवर्ड पास करना स्वाभाविक रूप से असुरक्षित है । सुरक्षित रूप से पासवर्ड की आपूर्ति करने के लिए पर्यावरण चर या कॉन्फिग फाइल (जिसे आपने chmodded 600 है) का उपयोग करें।


5
मैं लिनक्स 10+ वर्ष का उपयोग कर रहा हूं और
eyoung100

3
unset HISTFILEएक समान प्रभाव पड़ता है। मेरे पास इसके लिए एक फ़ंक्शन है n() { HISTFILE=; PS1="~${PS1#\~}"; }:। इस तरह मैं स्पष्ट रूप से देख सकता हूं कि मैं "गुप्त मोड" में हूं या नहीं।
लेकेन्स्टाइन 17

13
केवल प्रश्न का उत्तर देने के बजाय वास्तविक समस्या को संबोधित करने के लिए +1। क्रेडेंशियल के आसपास से गुजरने का एक अतिरिक्त विकल्प यूनिक्स डोमेन सॉकेट हैं।
नाथन उस्मान

1
एक और उपयोगी टिप "HISTFILE =" से पहले एक स्थान रखना होगा। अंतरिक्ष के साथ कोई भी कमांड लॉग नहीं करता है।
FUD

इसके बारे में एक और अच्छी बात यह है कि उस खिड़की पर पिछले आदेश भी नजरअंदाज कर रहे हैं। यह मौजूदा सत्र को गुप्त रखने की तरह है: पी
उज़ुमाकी डी। इचिगो

37
HISTCONTROL=ignorespace

यदि यह विकल्प पहले से निर्धारित नहीं है 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अन्य समय पर।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.