मैंने गलती से bash कमांड लाइन में पासवर्ड टाइप किया


189

मैंने गलती से अपना पासवर्ड bash कमांड लाइन में टाइप कर दिया, Last login: ...लाइन फॉर मिस्टेक Wrong password(मैं जल्दी में था)। अपने ट्रेस को कवर करने के लिए मैं क्या करूँ?

मैंने जो किया था, .bash_historyवह आपत्तिजनक लाइन को एडिट और डिलीट कर रहा था (फाइल में दिखाई देने वाले पासवर्ड को देखने के लिए एक बार पुनः लोड करना था ताकि मैं इसे हटा सकूं, और फिर से देखने के लिए इसे UPARROW कुंजी के तहत उपलब्ध इतिहास से गायब हो जाता हूं)।

क्या कोई अन्य स्थान है जहां कमांड इतिहास को बचाया जा सकता है? सिस्टम CentOS 6.5 है।


59
बस पासवर्ड बदलें :)
gronostaj

96
पासवर्ड बदलना इतना आसान नहीं है ... मुझे 15 अलग-अलग सर्वरों पर अपनी नई सार्वजनिक कुंजी को पुनर्स्थापित करने के लिए व्यवस्थापक से पूछना होगा - और आदमी पसंद है /dev/null
माडा

71
यदि आप किसी भी समय अपना पासवर्ड आसानी से नहीं बदल सकते हैं, तो आपके पास एक गंभीर सुरक्षा खामी हो सकती है। जब कोई वास्तव में आपका पासवर्ड प्राप्त करेगा तो आप क्या करेंगे? क्या आपके पास सिस्टम एक्सेस को तुरंत रद्द करने का कोई साधन है?
ग्रोनोस्तज

42
आप कुंजी को बदले बिना ssh कुंजी के पासफ़्रेज़ को बदल सकते हैं ssh-keygen -f id_rsa -p:।
14:14 पर jwg

6
बस यह उल्लेख करने के लिए छोड़ देना, कि कम से कम नेटवर्क वाले विंडोज लॉगिन के तहत, आप एचओडी हैं। व्यवस्थापक (कुछ उदात्त सर्वर टॉवर में) डिफ़ॉल्ट सभी लॉगिन प्रयासों को रिकॉर्ड करने के लिए है, और निश्चित रूप से उपयोगकर्ता नाम स्पष्ट हैं। सभी कुछ उद्यमी व्यक्ति को गैर-उपयोगकर्ता नाम-स्ट्रिंग का पता लगाना है और उन्हें अगले वैध उपयोगकर्ता नाम (या उसी मशीन पर अगला लॉगिन प्रयास) के साथ संबद्ध करना है। और उस व्यवस्थापक लॉग फ़ाइल को हटाने का कोई सरल तरीका नहीं है। तो फिर वास्तव में अपना पासवर्ड बदलना होगा।
कार्ल विटथॉफ्ट

जवाबों:


184

आप bashपूरे इतिहास को साफ़ करने के बजाय, केवल अपमानजनक रेखा को इतिहास से हटा सकते हैं । बस -dध्वज के साथ रेखा को हटा दें , फिर -wध्वज के साथ नया इतिहास सहेजें (लिखें) :

$ history
351 ssh me@site.com
352 my_password
$ history -d 352
$ history -w

1
ध्यान रखें कि यदि आपने "PROMPT_COMMAND = इतिहास -a" सेट किया है तो यह काम नहीं करता है। इसके स्थान पर आपके पासवर्ड के साथ कमांड तुरंत आपके .bash_history को लिखा जाता है जब कमांड समाप्त होने के बाद संकेत प्रदर्शित किया जाता है। इसे हटाने के लिए आपको अपना .bash_history संपादित करना होगा।
बेनरफकह

1
यह भी ध्यान दें कि यदि लाइन को होस्टरी फ़ाइल में राइट किया गया था, और बाद में कई शेल (टर्मिनल विंडो) खोले गए थे, तो उन सभी शेल को वहां के इतिहास में रखा जाएगा! आपको या तो इसे उन सभी गोले से हटाने की आवश्यकता होगी, या कम से कम इतिहास के आखिरी गोले से जो आप बंद करेंगे! इसका उपयोग करने से पहले इसे प्राप्त करने के लिए बेहतर है कि इसका उपयोग मौजूद है। कई गोले से निपटने का इतिहास एक बुरा सपना बन सकता है।
एंथोनी

121

इसके दो भाग हैं:

  • bash~/.bash_historyसत्र के अंत में लिखी गई फ़ाइल को इतिहास में संग्रहीत करता है
  • historyकि स्मृति में रखा जाता है

सुरक्षित होने के लिए, आपको इसे सत्र से साफ़ करने की आवश्यकता है:

history -c

और आवश्यकतानुसार इतिहास की फाइल को काटें:

> ~/.bash_history

यदि आपका सत्र जिसमें आपने पासवर्ड टाइप किया है, तब भी खुला रहता है, तो अपने ट्रेस को कवर करने का एक और तरीका HISTFILEहै कि आप अशक्त डिवाइस में वैरिएबल सेट करें ताकि ~/.bash_historyसत्र के बाहर आने पर इतिहास को लिखा न जाए :

export HISTFILE=/dev/null

205
अरे देखो, यह व्यवस्थापक है!
Raystafarian

5
पुन: इरादा नहीं था, क्षमा करें :) जब मैं अपनी टिप्पणी लिख रहा था, तो मैं आपके निक को नहीं देख रहा था।
मैडा

7
पागल होने के लिए (और अभी तक किसी कारण से अभी भी अपना पासवर्ड नहीं बदला है) क्या आपको shredफ़ाइल या अन्यथा इसे कई बार अधिलेखित नहीं करना चाहिए ?
कोजीरो

1
@MaDa कोई समस्या नहीं है। मैंने तस्वीर में अपने निक को लाने के जवाब में एक और तरीका भी जोड़ा।
devnull

5
सेटिंग करना HISTFILE=काफी है। से bash(1): यदि कोई प्रारंभ होता है, तो शेल से बाहर निकलने पर कमांड इतिहास सहेजा नहीं जाता है।
लेकेनस्टाइन

23

चूंकि बैश (कम से कम सभी ऐतिहासिक और वर्तमान संस्करण जिनसे मैं अवगत हूं) स्वचालित रूप से इतिहास से बाहर निकलने तक स्वचालित रूप से सहेजता नहीं है, आम तौर पर लागू होने वाली रणनीति जब आपने एक कमांड टाइप किया है जिसे आप सुनिश्चित करना चाहते हैं कि कभी भी सहेजना न हो तो तुरंत टाइप करें:

kill -9 $$

यह शेल को मारता है SIGKILL, जिसे पकड़ा नहीं जा सकता है, इसलिए शेल के पास बाहर निकलने पर कुछ भी बचाने का कोई तरीका नहीं है।

अधिकांश अन्य दृष्टिकोणों में तथ्य के बाद स्क्रबिंग शामिल है (यानी डेटा के डिस्क पर पहले से ही हिट होने के बाद), जिसमें त्रुटि के लिए एक बहुत अधिक मौका है (एक प्रतिलिपि याद आ रही है), खासकर अगर सिस्टम btrfs या समान का उपयोग कर रहा हो।


2
+1, त्रुटि का अधिक मौका नहीं, यह इस आधार पर भी पुनर्प्राप्त करने योग्य हो सकता है कि क्या / उसके बाद कितनी कमांड निष्पादित की गई थी
क्रंचर

"स्वचालित रूप से" शब्द याद आ रहा है? क्योंकि dotancohen ने शेल को बाहर किए बिना इतिहास को बचाने का एक तरीका दिखाया है।
बेन Voigt

3
प्रत्येक कमांड निष्पादित होने के बाद, बाहर निकलने के बजाय, शेल को इतिहास को बचाने के लिए कॉन्फ़िगर किया जा सकता है।
निक मैट्टो

1
+1 यह वही है जो मैं सिफारिश करना चाहता था! rm ~/.bash_history~ओपी के मामले में बैकअप फ़ाइल को हटाने के अलावा जब यह पहले से ही सहेजा गया है
तोमास

ध्यान रखें कि यदि आपने "PROMPT_COMMAND = इतिहास -a" सेट किया है तो यह काम नहीं करता है। इसके स्थान पर आपके पासवर्ड के साथ कमांड तुरंत आपके .bash_history को लिखा जाता है जब कमांड समाप्त होने के बाद संकेत प्रदर्शित किया जाता है। इसे हटाने के लिए आपको अपना .bash_history संपादित करना होगा।
बेनिफिटकाह

11

आपके द्वारा गलती से कुछ ऐसा लिखने के बाद, जिसे आप इतिहास में संग्रहीत नहीं करना चाहते हैं, आप टाइप कर सकते हैं: unset HISTFILE

बैश को पता नहीं चलेगा कि आप लॉग इन करते समय इतिहास को कहां संग्रहीत करते हैं, इसलिए प्रभावी रूप से यह पूरे सत्र के लिए इतिहास लॉगिंग को अक्षम कर देगा।


ध्यान रखें कि यदि आपने "PROMPT_COMMAND = इतिहास -a" सेट किया है तो यह काम नहीं करता है। इसके स्थान पर आपके पासवर्ड के साथ कमांड तुरंत आपके .bash_history को लिखा जाता है जब कमांड समाप्त होने के बाद संकेत प्रदर्शित किया जाता है। इसे हटाने के लिए आपको अपना .bash_history संपादित करना होगा।
बेनिफिक्काह

11

इसके लिए मेरा पसंदीदा ट्रिक है अप एरो को हिट करना, कमांड के ऊपर बैकस्पेस, कुछ टाइप करना (आवश्यक नहीं हो सकता है), डाउन एरो को हिट करें, "ls" टाइप करें, और एंटर को हिट करें। वास्तव में होकी लगता है, लेकिन यह वास्तव में काम करता है। यह पता चला जब मैं अपने इतिहास में गलत आदेश को संपादित करने के बाद नाराज हो गया और फिर संपादन को रद्द करने के लिए ctrl-c को नहीं मारकर इसे बर्बाद कर दिया। मुझे लगता है कि बैश संशोधनवादी इतिहास का समर्थन करता है। ;-)

$ passw0rd
$ <up arrow><backspace x8>cd<down arrow>echo hi
$ history|tail -3

जैसा दिखता है:

$ passw0rd
passw0rd: command not found
$ echo hi
hi
$ history|tail -3
 2445* cd
 2446  echo hi
 2447  history|tail -3
$ 

यह अजीब है । एक नुकसान यह है कि ऐसा लगता है कि आपने इतिहास संपादित किया है, इसलिए पुराने संस्करण को पुनर्स्थापित करने का कोई तरीका हो सकता है?
मैडक्स

@MadTux - पूरी तरह से, लेकिन .bash_history सिर्फ एक सादा पाठ फ़ाइल है। तो आप ऊपर दिए गए उदाहरण से बाहर निकलें, और फिर से कनेक्ट कर सकते हैं। जब आप .bash_history फ़ाइल की पूर्ण सामग्री देखते हैं, तो वहाँ कुछ भी नहीं है जो इसे अलग करता है यदि आपने "cd" चलाया था, तो निशान साफ ​​है।
मार्क जेरेड

ध्यान रखें कि यदि आपने "PROMPT_COMMAND = इतिहास -a" सेट किया है तो यह काम नहीं करता है। इसके स्थान पर आपके पासवर्ड के साथ कमांड तुरंत आपके .bash_history को लिखा जाता है जब कमांड समाप्त होने के बाद संकेत प्रदर्शित किया जाता है। इसे हटाने के लिए आपको अपना .bash_history संपादित करना होगा।
बेनरिक्कह

10

अन्य उत्तरों के अतिरिक्त, यह प्रासंगिक हो सकता है कि पासवर्ड टर्मिनल स्क्रॉल बफर में भी पाया जाता है - प्रदर्शित पाठ का इतिहास - अब, और, समस्या का अधिक, संभवतः हार्ड डिस्क पर, यदि टर्मिनल एमुलेटर ने बचाया था डिस्क का इतिहास। यह केडीई कंसोल में होता है यह इतिहास का आकार "असीमित स्क्रॉलबैक" पर सेट है, कभी भी किसी भी आउटपुट को त्यागने के लिए नहीं।


6

के साथ $<space> command, एक कमांड इतिहास में नहीं जोड़ा जाता है, कभी-कभी उपयोगी होता है

$  history | grep mywierdgrep
$ history | grep mywierdgrep
 2005  history | grep mywierdgrep

2
दिलचस्प होते हुए भी, यह स्पष्ट नहीं है कि यह वर्णित परिदृश्य में कैसे उपयोगी है। क्या आप सुझाव दे रहे हैं कि प्रत्येक पासवर्ड को एक स्थान से शुरू करना चाहिए?
बेन Voigt

1
नहीं, वह जो सुझाव दे रहा है वह यह है कि इस तरह की कोई भी लाइन जो आप टाइप करते हैं, जिसे आप इतिहास के लिए प्रतिबद्ध नहीं करना चाहते हैं, उसे एक प्रमुख स्थान के साथ टाइप किया जाना चाहिए। उदाहरण के लिए: "ls" "ls" बन जाता है और यह पंक्ति कभी भी इतिहास या आपके सत्र अप-एरो सूची में नहीं दिखाई देती है।
ब्रायन सी।

4
ध्यान दें कि यह अग्रणी-स्थान चाल केवल तभी काम करती है जब $ HISTCONTROL में इग्नोरस्पेस हो।
बर्नजेंड्रीसेक

2
@ jris198944 कमांड-लाइन तर्क के माध्यम से एक पासवर्ड प्रदान करना संभावित रूप से उस सिस्टम पर किसी को भी चला सकता है जो चलाता है ps
jamesdlin

2
और वैसे भी, जबकि यह चाल उपयोगी है यदि आप आगे की योजना बना रहे हैं, तो यह मूल परिदृश्य में मदद नहीं करता है जहां किसी ने गलती से एक कमांड-लाइन पर एक पासवर्ड दर्ज किया है।
jamesdlin

4

फिर भी इतिहास फ़ाइल (आप लॉग आउट करने से पहले) को बचाने के लिए एक और विकल्प बस के लिए है

chmod 400 ~/.bash_history 

और फिर लॉगआउट करें। फ़ाइल करने के लिए लिखे जा रहे इतिहास को रोकें (क्योंकि फ़ाइल केवल-पढ़ने के लिए है) ताकि पूरे बैश सत्र को छोड़ दिया जाए और पिछला इतिहास बरकरार रहे।

फिर से लॉगिन करें और अनुमतियाँ रीसेट करें 600(या नहीं, आप कितने पागल हैं!) पर निर्भर करता है।


1

मैं बार-बार उल्लेख करता हूं

ध्यान रखें कि यदि आपने "PROMPT_COMMAND = इतिहास -a" सेट किया है तो यह काम नहीं करता है [..] आपको इसे हटाने के लिए अपने .bash_history को संपादित करना होगा।

पहला भाग निश्चित रूप से सत्य है, लेकिन इसे ठीक करने के लिए आपको मैन्युअल रूप से संपादन .bash_history का सहारा नहीं लेना होगा। यदि आप दो आदेशों को एक पंक्ति में जोड़ते हैं तो यह पूरी तरह से ठीक काम करता है:

$ history
351 ssh me@site.com
352 my_password
$ history -d 352 ; history -w

क्या आप बता सकते हैं कि वास्तव में यह विधि क्या काम करती है?
कामिल मैकियोरोस्की

PROMPT_COMMAND को केवल अगले कमांड-प्रॉम्प्ट प्रदर्शित करने से पहले निष्पादित किया जाता है। अलग-थलग लाइनों पर -d और -w कमांड दर्ज करने में समस्या यह है कि PROMPT_COMMAND इतिहास -a कमांड को बीच में निष्पादित करेगा। यदि आप दोनों -d और -w को एक कमांडलाइन पर निष्पादित करते हैं, तो यह केवल बाद में निष्पादित होता है
फ्लोरिस क्रुसेलब्रिंक

0

यहां दिए गए उत्तरों में से कई प्रश्न को कमांड के बैश सत्र इतिहास से पहले हटाने का प्रयास करते हैं, इसे $HISTFILE(~ / .bash_history डिफ़ॉल्ट रूप से) लिखा जाता है । हालाँकि, यदि आपने PROMPT_COMMAND=history -a अपने पासवर्ड के साथ कमांड सेट किया है, तो $HISTFILEकमांड समाप्त होने के बाद प्रॉम्प्ट प्रदर्शित होने पर तुरंत आपके पास लिखा जाता है। $HISTFILEइसे हटाने के लिए आपको अपना संपादन करना होगा।

यह सेटिंग आमतौर पर कई ओपन बैश सत्रों से कमांड को इंटरलेव करने के लिए उपयोग की जाती है ।


-3

आप syslog लॉग को भी जांचना चाहेंगे। अमान्य लॉगिन आमतौर पर syslog में लॉग इन किया जाएगा।

/ var / log / संदेश या आपके OS के लिए बराबर।


1
मुद्दा यह नहीं है कि वह गलत तरीके से एक पासवर्ड दर्ज करता है, वह पहले से ही लॉग इन किया गया था और अपने पासवर्ड को प्रॉम्प्ट और हिट दर्ज में दर्ज किया था। यह संदेश फ़ाइल में दिखाई नहीं देगा।
मैकलेओड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.