আমি দুর্ঘটনাক্রমে ব্যাশ কমান্ড লাইনে পাসওয়ার্ড টাইপ করেছি


189

আমি ঘটনাক্রমে ব্যাশ কমান্ড লাইন মধ্যে আমার পাসওয়ার্ড টাইপ করেছেন, ভুল Last login: ...জন্য লাইন Wrong password(আমি তাড়ার মধ্যে ছিল না)। আমি আমার ট্রেসটি coverাকতে কী করব?

আমি যা করেছি তা .bash_historyআপত্তিজনক লাইনটি সম্পাদনা এবং মুছে ফেলা হচ্ছে (ফাইলটিতে পাসওয়ার্ডটি উপস্থিত হতে দেখতে একবার পুনরায় পরীক্ষা করতে হয়েছিল যাতে আমি এটি মুছে ফেলতে পারি, এবং এটি ইউপিআরআরও কী-এর অধীনে উপলব্ধ ইতিহাস থেকে অদৃশ্য হয়ে দেখতে আবার পুনঃব্যবস্থা করা)।

কমান্ডের ইতিহাস সংরক্ষণ করা যায় এমন অন্য কোনও জায়গা আছে কি? সিস্টেমটি সেন্টস .5.৫।


59
কেবল পাসওয়ার্ডটি পরিবর্তন করুন :)
gronostaj

96
পাসওয়ার্ড পরিবর্তন করা এত সহজ নয় ... আমার প্রশাসককে 15 টি নতুন সার্ভারে আমার নতুন পাবলিক কীটি পুনরায় ইনস্টল করতে বলার দরকার ছিল - এবং লোকটি এর মত /dev/null
মাডা

71
আপনি যদি কোনও সময় সহজেই আপনার পাসওয়ার্ড পরিবর্তন করতে না পারেন তবে আপনার একটি গুরুতর সুরক্ষা ফাঁক হতে পারে। কেউ আসলে আপনার পাসওয়ার্ড পেলে আপনি কী করবেন? তাত্ক্ষণিকভাবে সিস্টেম অ্যাক্সেস প্রত্যাহার করার আপনার কি কোনও উপায় আছে?
গ্রোনস্টাজ

42
আপনি কী পরিবর্তন করা ছাড়া একটি ssh কী এর পাসফ্রেজ পরিবর্তন করতে পারেন: ssh-keygen -f id_rsa -p
jwg

6
কমপক্ষে নেটওয়ার্কযুক্ত উইন্ডোজ লগইনের অধীনে, আপনি তাড়িত হয়ে গেছেন তা উল্লেখ করার জন্য কেবল ড্রপিং। অ্যাডমিন (কিছু উচ্চ সার্ভার টাওয়ারে) ডিফল্ট হ'ল সমস্ত লগইন প্রচেষ্টা রেকর্ড করা, এবং অবশ্যই ব্যবহারকারীর নামগুলি ক্লিয়ারটেক্সট। কিছু কিছু উদ্যোগী ব্যক্তিকে যা করতে হবে তা হল নন-ব্যবহারকারীর নাম-ইশ স্ট্রিংগুলি অনুসন্ধান করা এবং তাদের পরবর্তী বৈধ ব্যবহারকারীর নাম (বা একই মেশিনে পরবর্তী লগইন প্রচেষ্টা) এর সাথে সম্পর্কিত করতে হবে। এবং অ্যাডমিন লগ ফাইলটি মোছার কোনও সহজ উপায় নেই। সুতরাং আপনি সত্যিই আপনার পাসওয়ার্ড পরিবর্তন করতে হবে।
কার্ল উইথফট 14

উত্তর:


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 এডিট করতে হবে।
benrifkah

1
এছাড়াও মনে রাখবেন যে হোস্টারি ফাইলটিতে যদি লাইনটি আবার লেখা থাকে এবং পরে একাধিক শেল (টার্মিনাল উইন্ডোজ) খোলা থাকে, তবে সমস্ত শেলগুলি সেটির ইতিহাসে থাকবে! আপনাকে এগুলি সমস্ত শেলগুলি থেকে সরিয়ে ফেলতে হবে, বা আপনার পাসওয়ারীর সর্বশেষতম শেল থেকে! এটি ব্যবহৃত শেলটি উপস্থিত থাকার আগে এটি পাওয়া ভাল। একাধিক শেল নিয়ে কাজ করার সময় ইতিহাস দুঃস্বপ্নে পরিণত হতে পারে।
এন্থনি

121

এর দুটি অংশ রয়েছে:

  • bash~/.bash_historyডিফল্টরূপে অধিবেশন শেষে লিখিত একটি ফাইলে ইতিহাস সংরক্ষণ করে
  • historyমেমরি রাখা হয়

নিরাপদ থাকতে, আপনাকে এটি অধিবেশন থেকে পরিষ্কার করতে হবে:

history -c

এবং প্রয়োজন হিসাবে ইতিহাস ফাইলটি কেটে দিন:

> ~/.bash_history

আপনার পাসওয়ার্ডটি টাইপ করা আপনার সেশনটি যদি এখনও খোলা থাকে, তবে আপনার ট্রেসটি কভার করার অন্য একটি উপায় হল HISTFILEনাল ডিভাইসে ভেরিয়েবলটি সেট করা যাতে ~/.bash_historyসেশনটি প্রস্থান করার সময় ইতিহাসে লেখা না যায়:

export HISTFILE=/dev/null

205
আরে দেখুন, এডমিন!
রায়স্টাফেরিয়ান

5
পুন ইচ্ছাকৃত নয়, দুঃখিত :) আমি যখন আমার মন্তব্য লিখছিলাম তখন আমি আপনার নিকটির দিকে তাকাচ্ছিলাম না।
মাডা

7
অসম্পূর্ণ হতে (এবং এখনও কিছু কারণে এখনও আপনার পাসওয়ার্ড পরিবর্তন করে না) আপনার shredফাইলটি করা উচিত নয় অন্যথায় এটি বহুবার ওভাররাইট করা উচিত?
কোজিরো

1
@ মাডা সমস্যা নেই এমনকি আমার নিকটিকে ছবিতে আনার উত্তরে আমি আরও একটি উপায় যুক্ত করেছি।
ডেভনুল

5
সেটিং HISTFILE=যথেষ্ট। থেকে bash(1): যদি সেট না করা থাকে, শেলটি প্রস্থান করা হলে কমান্ডের ইতিহাসটি সংরক্ষণ করা হয় না।
লেকেনস্টেইন

23

যেহেতু বাশ (কমপক্ষে সমস্ত historicতিহাসিক এবং বর্তমান সংস্করণগুলির বিষয়ে আমি অবগত রয়েছি) আপনি বেরোন না হওয়া অবধি স্বয়ংক্রিয়ভাবে ইতিহাস সংরক্ষণ করে না, আপনি যখন কোনও কমান্ড টাইপ করেন তখন একটি সাধারণ প্রয়োগকারী কৌশল যা আপনি কখনই না রক্ষা পেতে চান তা অবিলম্বে টাইপ করতে হবে:

kill -9 $$

এটি শেলটি দিয়ে মারা যায় SIGKILL, যা ধরা যায় না, তাই শেলটি প্রস্থান করার সময় কোনও কিছুই সংরক্ষণ করার উপায় নেই।

বেশিরভাগ অন্যান্য পদ্ধতির সত্যতা (যেমন ডেটাটি ইতিমধ্যে ডিস্কে হিট হওয়ার পরে) পরে স্ক্রাবিংয়ের সাথে জড়িত থাকে, যার ত্রুটির (কপিটি অনুপস্থিত) হওয়ার আরও অনেক বেশি সুযোগ রয়েছে, বিশেষত যদি সিস্টেমটি বিটিআরএফ ব্যবহার করতে পারে বা এর অনুরূপ হতে পারে।


2
+1 টি, ত্রুটি মাত্র আরো সুযোগ, এটা হতে পারে এমনকি আদায়যোগ্য যদি / কত কমান্ড মৃত্যুদন্ড কার্যকর করা হয় পরে তার উপর নির্ভর করে হতে
Cruncher

"স্বয়ংক্রিয়ভাবে" শব্দটি অনুপস্থিত? কারণ ডটানকোহেন শেলটি ছাড়াই ইতিহাস রক্ষার উপায় দেখিয়েছে।
বেন ভয়েগট

3
প্রতিটি কমান্ড নির্বাহের পরে প্রস্থানের পরিবর্তে ইতিহাস সংরক্ষণের জন্য শেলটি কনফিগার করা যেতে পারে।
নিক মাত্তিও

1
+1 ঠিক এটিই আমি সুপারিশ করতে চেয়েছিলাম! এছাড়া rm ~/.bash_history~ওপি এর ক্ষেত্রে ব্যাকআপ ফাইল মুছে ফেলার জন্য যখন এটি আগে থেকেই সংরক্ষণ করা হয়েছে
টমাস

আপনি যদি "PROMPT_COMMAND = ইতিহাস -a" সেট করে থাকেন তবে এটি কাজ করে না সে বিষয়ে সচেতন হন। এই জায়গায় এটির সাহায্যে আপনার পাসওয়ার্ড সহ কমান্ডটি অবিলম্বে আপনার .bash_history এ লিখিত হয় যখন কমান্ডটি সমাপ্ত হওয়ার পরে প্রম্পট প্রদর্শিত হয়। এটি মুছে ফেলার জন্য আপনাকে আপনার .Bash_history এডিট করতে হবে।
benrifkah

11

আপনি দুর্ঘটনাক্রমে এমন কোনও কিছু টাইপ করার পরে যা আপনি ইতিহাসে সঞ্চয় করতে চান না, আপনি টাইপ করতে পারেন: unset HISTFILE

আপনি যখন লগ অফ করবেন তখন বাশ কোথায় ইতিহাস সংরক্ষণ করবেন তা জানতে পারবেন না, তাই কার্যকরভাবে এটি পুরো সেশনে ইতিহাসের লগিং অক্ষম করে।


আপনি যদি "PROMPT_COMMAND = ইতিহাস -a" সেট করে থাকেন তবে এটি কাজ করে না সে বিষয়ে সচেতন হন। এই জায়গায় এটির সাহায্যে আপনার পাসওয়ার্ড সহ কমান্ডটি অবিলম্বে আপনার .bash_history এ লিখিত হয় যখন কমান্ডটি সমাপ্ত হওয়ার পরে প্রম্পট প্রদর্শিত হয়। এটি মুছে ফেলার জন্য আপনাকে আপনার .Bash_history এডিট করতে হবে।
benrifkah 31'17

11

এর জন্য আমার প্রিয় কৌশলটি হ'ল উপরের তীরটি চাপুন, কমান্ডের উপরে ব্যাকস্পেস রেখে কিছু লিখুন (প্রয়োজনীয় নাও হতে পারে), ডাউন তীর টিপুন, "ls" টাইপ করুন এবং এন্টার টিপুন। সত্যিই হকি মনে হয়, তবে এটি আসলে কার্যকর হয়। আমার ইতিহাসে ভুল কমান্ডটি সম্পাদনা করার পরে আমি বিরক্ত হয়ে গিয়েছিলাম এবং তারপরে সম্পাদনাটি বাতিল করতে সিটিটিএল-সি না দিয়ে এটি নষ্ট করেছিলাম this আমার ধারণা বাশ সংশোধনবাদী ইতিহাসকে সমর্থন করে। ;-)

$ 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
$ 

এটা অদ্ভুত । একটি অসুবিধা হ'ল এটি আপনি সম্পাদিত ইতিহাস জানেন বলে মনে হয়, তাই পুরানো সংস্করণটি পুনরুদ্ধার করার কোনও উপায় থাকতে পারে?
ম্যাডটাক্স

@ ম্যাডটাক্স - সম্পূর্ণরূপে, তবে .bash_history কেবল একটি সরল পাঠ্য ফাইল। সুতরাং আপনি উপরের উদাহরণটি করতে, প্রস্থান এবং পুনরায় সংযোগ করতে পারেন। আপনি যখন .bash_history ফাইলের সম্পূর্ণ বিষয়বস্তুগুলি দেখেন, তখন কিছুই নেই যে আপনি "সিডি" চালিয়েছেন তা থেকে এটি আলাদা হয় না, সুতরাং ট্রেলটি পরিষ্কার থাকে।
মার্ক জেরদে

আপনি যদি "PROMPT_COMMAND = ইতিহাস -a" সেট করে থাকেন তবে এটি কাজ করে না সে বিষয়ে সচেতন হন। এই জায়গায় এটির সাহায্যে আপনার পাসওয়ার্ড সহ কমান্ডটি অবিলম্বে আপনার .bash_history এ লিখিত হয় যখন কমান্ডটি সমাপ্ত হওয়ার পরে প্রম্পট প্রদর্শিত হয়। এটি মুছে ফেলার জন্য আপনাকে আপনার .Bash_history এডিট করতে হবে।
benrifkah

10

অন্যান্য উত্তরগুলির সাথে অতিরিক্ত, এটি প্রাসঙ্গিক হতে পারে যে পাসওয়ার্ডটি টার্মিনাল স্ক্রোল বাফারেও পাওয়া যায় - প্রদর্শিত টেক্সটের ইতিহাস - এখন, এবং সম্ভবত আরও কিছু সমস্যা, সম্ভবত হার্ড ডিস্কে, যদি টার্মিনাল এমুলেটরটি সংরক্ষণ না করে ডিস্কের ইতিহাস কে-কে-কনসোল-এ এটি ঘটে, ইতিহাসের আকারটি "আনলিমিটেড স্ক্রোলব্যাক" এ সেট করা হয়, কোনও আউটপুট কখনই ফেলে দেওয়া যায় না।


6

সাথে $<space> command, ইতিহাসে কোনও কমান্ড যুক্ত হয় না, কখনও কখনও ব্যবহারকারীরও হয়

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

2
আকর্ষণীয় হলেও এটি বর্ণিত দৃশ্যে এটি কীভাবে কার্যকর তা পরিষ্কার নয়। আপনি কি পরামর্শ দিচ্ছেন যে প্রতিটি পাসওয়ার্ড একটি স্থান দিয়ে শুরু করা উচিত?
বেন ভয়েগট

1
না, তিনি যা পরামর্শ দিচ্ছেন তা হ'ল এই জায়গায় এটির সাথে আপনি যে টাইপ করুন যা আপনি ইতিহাসের প্রতি প্রতিশ্রুতিবদ্ধ চান না, একটি লিডিং স্পেস দিয়ে টাইপ করা উচিত। উদাহরণস্বরূপ: "ls" "ls" হয়ে যায় এবং সেই লাইনটি ইতিহাসে বা আপনার সেশনগুলির আপ-তীর তালিকায় কখনও প্রদর্শিত হয় না।
ব্রায়ান সি

4
নোট করুন যে এই শীর্ষস্থানীয় স্পেস ট্রিকটি কেবলমাত্র তখনই কাজ করে যদি $ HISTCONTROL এ উপেক্ষা স্থান থাকে।
বারেন্ড জেন্ড্রিসেক

2
@ jris198944 কমান্ড-লাইন আর্গুমেন্টের মাধ্যমে একটি পাসওয়ার্ড সরবরাহ করা সিস্টেমের যে কেউ চালিত তাদের পক্ষে এটি সম্ভাব্যরূপে বহন করতে পারে ps
জেমসডলিন

2
এবং যাইহোক, এই কৌশলটি কার্যকর যদি আপনি আগে থেকেই পরিকল্পনা করেন তবে এটি আসল দৃশ্যে সহায়তা করে না যেখানে কোনও ব্যক্তি ঘটনাক্রমে কমান্ড-লাইনে একটি পাসওয়ার্ড প্রবেশ করিয়েছে।
জেমসডলিন

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 কমান্ড কার্যকর করবে। আপনি যদি একটি
কমান্ডলাইনে

0

এখানে অনেক উত্তর ক্যারেন্ট ন্যাশ বাশনের ইতিহাস থেকে প্রশ্নে কমান্ড সরিয়ে দেওয়ার চেষ্টা করে $HISTFILE(default / .bash_history ডিফল্টরূপে)। তবে, আপনি যদি PROMPT_COMMAND=history -a নিজের পাসওয়ার্ড দিয়ে কমান্ডটি সেট করেছেন $HISTFILEতবে কমান্ডটি সমাপ্ত হওয়ার পরে প্রম্পট প্রদর্শিত হওয়ার সাথে সাথেই আপনার কাছে লিখিত হয় । $HISTFILEএটি সরাতে আপনাকে এডিট করতে হবে।

এই সেটিংটি একাধিক ওপেন ব্যাশ সেশন থেকে কমান্ড ইন্টারলিভ করার জন্য ব্যবহৃত হয় ।


-3

আপনি সিসলোগ লগগুলিও পরীক্ষা করতে চান। অবৈধ লগইনগুলি সাধারণত সিসলগে লগ করা হবে।

/ var / লগ / বার্তা বা আপনার OS এর সমতুল্য।


1
সমস্যাটি নয় যে তিনি ভুল করে কোনও পাসওয়ার্ড প্রবেশ করেছেন, তিনি ইতিমধ্যে লগইন হয়েছিলেন এবং প্রম্পটে তার পাসওয়ার্ডটি প্রবেশ করান এবং এন্টার টিপান। এটি বার্তা ফাইলে প্রদর্শিত হবে না।
ম্যাক্লিওড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.