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


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

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

क्या कोई अन्य जगह है जहां कमांड इतिहास बचाया जा सकता है? प्रणाली CentOS 6.5 है।


182
2018-04-02 06:42


मूल


बस पासवर्ड बदलें :) - gronostaj
पासवर्ड बदलना इतना आसान नहीं है ... मुझे 15 अलग-अलग सर्वरों पर अपनी नई सार्वजनिक कुंजी को पुनर्स्थापित करने के लिए व्यवस्थापक से पूछना होगा - और लड़का जैसा है /dev/null। - MaDa
यदि आप किसी भी समय अपना पासवर्ड आसानी से नहीं बदल सकते हैं, तो आपके पास गंभीर सुरक्षा छेड़छाड़ हो सकती है। जब कोई वास्तव में आपका पासवर्ड प्राप्त करता है तो आप क्या करेंगे? क्या आपके पास सिस्टम पहुंच को तुरंत रद्द करने का कोई साधन है? - gronostaj
कुंजी को बदले बिना आप एक एसएसएच कुंजी का पासफ्रेज बदल सकते हैं: ssh-keygen -f id_rsa -p। - jwg
बस उल्लेख करने के लिए ड्रॉप करना, कम से कम नेटवर्क वाले विंडोज लॉगिन के तहत, आप को रोक दिया गया है। व्यवस्थापक (कुछ उम्दा सर्वर टॉवर में) डिफ़ॉल्ट रूप से सभी लॉगिन प्रयासों को रिकॉर्ड करना है, और निश्चित रूप से उपयोगकर्ता नाम cleartext हैं। सभी एंटरप्राइजिंग व्यक्ति को गैर-उपयोगकर्ता नाम-आश स्ट्रिंग की खोज करना है और उन्हें अगले मान्य उपयोगकर्ता नाम (या उसी मशीन पर अगला लॉगिन प्रयास) से सहसंबंधित करना है। और उस व्यवस्थापक लॉग फ़ाइल को हटाने का कोई आसान तरीका नहीं है। तो आपको वास्तव में अपना पासवर्ड बदलना होगा। - Carl Witthoft


जवाब:


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

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

177
2018-04-02 12:25



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


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

  • bash एक फाइल में इतिहास स्टोर करता है ~/.bash_history जो डिफ़ॉल्ट रूप से, सत्र के अंत में लिखा जाता है
  • history यह स्मृति में रखा जाता है

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

history -c

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

> ~/.bash_history

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

export HISTFILE=/dev/null

120
2018-04-02 07:17



हे देखो, यह व्यवस्थापक है! - Raystafarian
पन इरादा नहीं, माफ करना :) जब मैं अपनी टिप्पणी लिख रहा था तो मैं तुम्हारी निक पर नहीं देख रहा था। - MaDa
पागल होना (और फिर भी किसी कारण से अभी भी अपना पासवर्ड नहीं बदला) आपको नहीं करना चाहिए shred फ़ाइल या अन्यथा इसे कई बार ओवरराइट करें? - kojiro
@ मादा कोई समस्या नहीं है। मैंने अपनी तस्वीर को तस्वीर में लाने के जवाब में एक और तरीका भी जोड़ा। - devnull
सेटिंग HISTFILE= पर्याप्त है। से bash(1): अगर सेट नहीं होता है, तो शेल बाहर निकलने पर कमांड इतिहास सहेजा नहीं जाता है। - Lekensteyn


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

kill -9 $$

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

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


23
2018-04-02 16:20



+1, त्रुटि की अधिक संभावना नहीं है, यह हो सकता है यहां तक ​​कि इसके बाद कितने आदेश निष्पादित किए गए थे, इस पर निर्भर करता है कि पुनर्प्राप्ति योग्य भी हो - Cruncher
शब्द "स्वचालित रूप से" गायब हो रहा है? क्योंकि डॉटनकोहेन ने खोल को बाहर किए बिना इतिहास को बचाने का एक तरीका दिखाया है। - Ben Voigt
प्रत्येक आदेश को निष्पादित करने के बाद, बाहर निकलने के बजाय इतिहास को सहेजने के लिए खोल को कॉन्फ़िगर किया जा सकता है। - Kundor
+1 यह वही है जो मैं सिफारिश करना चाहता था! के अतिरिक्त rm ~/.bash_history~ ओपी के मामले में बैकअप फ़ाइल को हटाने के लिए जब यह पहले ही सहेजा जा चुका है - Tomas
ध्यान रखें कि यदि आप "PROMPT_COMMAND = history -a" सेट करते हैं तो यह काम नहीं करता है। इस जगह के साथ कमांड समाप्त होने के बाद प्रॉम्प्ट प्रदर्शित होने पर आपके पासवर्ड के साथ कमांड तुरंत आपके .bash_history पर लिखा जाता है। इसे हटाने के लिए आपको अपने .bash_history को संपादित करना होगा। - benrifkah


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

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


11
2018-04-02 18:51



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


इसके लिए मेरी पसंदीदा चाल ऊपर तीर, कमांड पर बैकस्पेस को हिट करना है, कुछ टाइप करें (शायद आवश्यक नहीं हो), नीचे तीर दबाएं, "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
$ 

11
2018-04-03 20:58



ऐसा इसलिए है अजीब। एक नुकसान यह है कि ऐसा लगता है कि आपने इतिहास संपादित किया है, तो पुराने संस्करण को पुनर्स्थापित करने का कोई तरीका हो सकता है? - MadTux
@MadTux - पूरी तरह से, लेकिन .bash_history सिर्फ एक सादा पाठ फ़ाइल है। तो आप ऊपर उदाहरण, बाहर निकलें और पुनः कनेक्ट कर सकते हैं। जब आप .bash_history फ़ाइल की पूर्ण सामग्री देखते हैं, तो वहां कुछ भी नहीं है जो इसे "सीडी" चलाने के लिए अलग करता है, इसलिए निशान साफ़ है। - Mark Jerde
ध्यान रखें कि यदि आप "PROMPT_COMMAND = history -a" सेट करते हैं तो यह काम नहीं करता है। इस जगह के साथ कमांड समाप्त होने के बाद प्रॉम्प्ट प्रदर्शित होने पर आपके पासवर्ड के साथ कमांड तुरंत आपके .bash_history पर लिखा जाता है। इसे हटाने के लिए आपको अपने .bash_history को संपादित करना होगा। - benrifkah


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


10
2018-04-03 19:58





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

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

5
2018-04-02 14:07



दिलचस्प होने पर, यह स्पष्ट नहीं है कि वर्णित परिदृश्य में यह कैसे उपयोगी है। क्या आप सुझाव दे रहे हैं कि हर पासवर्ड को एक जगह से शुरू करना चाहिए? - Ben Voigt
नहीं, वह क्या सुझाव दे रहा है कि इस जगह के साथ, आप जिस भी लाइन को टाइप करते हैं, जिसे आप इतिहास के प्रति प्रतिबद्ध नहीं करना चाहते हैं, को एक प्रमुख स्थान के साथ टाइप किया जाना चाहिए। उदाहरण: "एलएस" "एलएस" बन जाता है और वह रेखा इतिहास में या आपके सत्र अप-तीर सूची में कभी नहीं दिखाती है। - Bryan C.
ध्यान दें कि यह अग्रणी-स्थान चाल केवल तभी काम करती है जब $ HISTCONTROL में अनदेखा होता है। - Bernd Jendrissek
@ jris198944 कमांड लाइन तर्क के माध्यम से पासवर्ड प्रदान करने से सिस्टम पर किसी भी व्यक्ति को संभावित रूप से इसका खुलासा किया जा सकता है ps। - jamesdlin
और वैसे भी, जब आप आगे की योजना बना रहे हैं तो यह चाल उपयोगी है, इससे मूल परिदृश्य में कोई मदद नहीं करता है अकस्मात एक कमांड लाइन पर एक पासवर्ड दर्ज किया। - jamesdlin


फिर भी इतिहास फ़ाइल को सहेजने से बचने के लिए एक और विकल्प (लॉग आउट करने से पहले) 444 ~ / .bash_history और फिर लॉगआउट करने के लिए बस है। फिर से लॉगिन करें और अनुमतियों को रीसेट करें (या नहीं, इस पर निर्भर करता है कि आप कितने पागल हैं!)।


4
2018-04-03 09:08