এটি যুক্ত করা নিরাপদ? আমার পথের কাছে? কিভাবে?


49

আমি অন্যান্য উত্তরে লোকদের উল্লেখ করতে দেখেছি যে .আপনার $PATHপরিবেশের চলকটিতে চলতি কার্যনির্বাহী ডিরেক্টরি (' ') অন্তর্ভুক্ত করা একটি খারাপ ধারণা , তবে বিশেষভাবে ইস্যুটি সমাধান করার জন্য কোনও প্রশ্ন খুঁজে পাচ্ছে না।

তাহলে, কেন আমি .আমার পথে যুক্ত করব না ? এবং যদি সমস্ত সতর্কতা থাকা সত্ত্বেও আমি তা যাইহোক করি তবে আমার কী সন্ধান করতে হবে? এটিকে শুরু করার চেয়ে শেষের দিকে যুক্ত করা কি নিরাপদ?


উত্তর:


39

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

বলুন, এখন আপনার সমস্ত ফাইল সিস্টেমে এই সমস্ত ছোট স্ক্রিপ্ট রয়েছে; একদিন আপনি নিশ্চয়ই ভুলটি চালাবেন। সুতরাং, আপনার PATHস্থির পাথের পূর্বনির্ধারিত তালিকা হিসাবে থাকা হ'ল অর্ডার করা এবং একটি সম্ভাব্য সমস্যা থেকে নিজেকে বাঁচানো।

তবে, আপনি যদি এতে যোগ .করতে চলেছেন তবে PATHআমি এটিকে তালিকার শেষে ( export PATH=$PATH:.) যুক্ত করার পরামর্শ দিচ্ছি । কমপক্ষে আপনি সিস্টেম-প্রশস্ত বাইনারিগুলি এইভাবে ওভাররাইড করবেন না।

আপনার সিস্টেমে একটি রুট হন এবং, সিস্টেম অন্য ব্যবহারকারীর অ্যাকাউন্ট উন্মুক্ত থাকে, তাহলে থাকার .মধ্যে PATHবিপুল নিরাপত্তা ঝুঁকি হল: আপনি করতে পারেন cdকিছু ব্যবহারকারীর নির্দেশিকাতে, এবং অনিচ্ছাকৃতভাবে একটি দূষিত স্ক্রিপ্ট সেখানে মাত্র চালানোর কারণ আপনার একটা জিনিস বা স্ক্রিপ্ট ভুল টাইপ যে সিস্টেম-ব্যাপী বাইনারি হিসাবে একই নাম রয়েছে।


1
অন্তর্নিহিত তত্ত্বটি গ্রহণ করুন এবং উল্লেখ করুন যে আপনি সিস্টেমে একমাত্র ব্যবহারকারী হয়েও সমস্যাগুলি এখনও বিদ্যমান থাকতে পারে। উভয় উত্তরই চমৎকার পয়েন্ট নিয়ে আসে। আমি যুক্ত করব যে কোনও সময় আপনি অন্য ব্যবহারকারীর সাথে ডিরেক্টরিগুলি ভাগ করে নেওয়ার পরে, আপনি মূল বা না থাকুকালে ঝুঁকি বাড়বে।
জান্ডার

6
এমনকি মেশিনে একমাত্র ব্যবহারকারী হিসাবে: প্রতিবার আপনি একটি অবিশ্বস্ত টার বের করেন এটি lsআপনার বর্তমান ডিরেক্টরিতে একটি স্থাপন করতে পারে । এরপরে আপনি lsনিষ্কাশিত ফাইলগুলি পরিদর্শন করতে ছুটে যান এবং আপনি ইতিমধ্যে দূষিত কোডটি চালিয়ে গেছেন।
লেসমানা

35

ঝুঁকি হ'ল কেউ যদি আপনার বর্তমান হিসাবে উপস্থিত হয় এমন ডিরেক্টরিতে কোনও দূষিত এক্সিকিউটেবল রাখে।

সবচেয়ে খারাপ পরিস্থিতি যখন ঘটে:

  • আপনি রুট হিসাবে লগইন করেছেন কারণ দূষিত কমান্ডের সীমাহীন ক্ষতি শক্তি রয়েছে
  • .আপনার পাঠের শুরুতে স্ট্যান্ডার্ড কমান্ডগুলি আপনাকে লক্ষ্য না করেই ওভাররাইড করা যেতে পারে (সাধারণত এটি lsযা তালিকা থেকে নিজেকে আড়াল করতে পারে)।

আপনি যদি নিয়মিত ব্যবহারকারী হিসাবে লগইন হয়ে থাকেন এবং .আপনার পথের শেষে থাকে তবে ঝুঁকিটি অনেক কম still

  • কেউ আপনাকে জানতে পারে যে আপনি প্রায়শই একটি কমান্ডকে ভুল টাইপ করতে পারেন এবং একটি ম্যাচিং ইনস্টল করেন
  • যে কেউ ইনস্টল করা হয়নি তার নামের সাথে একটি জাল কমান্ড ইনস্টল করতে পারে।

মনে রাখবেন যে কোনও ক্ষেত্রেই, আপনি যদি মেশিনের একমাত্র ব্যবহারকারী হন এমনকি ঝুঁকিটি এখনও রয়েছে। ক্ষতিকারক সফ্টওয়্যার ইনস্টল করা হবে, উদাহরণস্বরূপ, যদি আপনি কোনও আপোষযুক্ত সাইট থেকে ডাউনলোড করা একটি সংরক্ষণাগারটি বের করে ফেলেন।


15
slপয়েন্ট 3 কতবার ঘটে তা দেখতে ইনস্টল করুন ।
jordanm

বা alias l=`ls`
আনকো

এটি দূষিত হতে হবে না। আমি lsএকটি ডিরেক্টরি তালিকা পেতে আশা করি তবে আমি ডাউনলোড করেছি এমন কিছু প্রকল্পের lsরুট প্রকল্প ফোল্ডারে অন্য কোনও শর্টকাট হিসাবে একটি স্ক্রিপ্ট থাকতে পারে । lsসম্ভবত এটি একটি খারাপ উদাহরণ তবে আমি eসম্পাদনা, dডিবাগ, mমেক, bবিল্ডের জন্য অবশ্যই কল্পনা করতে পারি । আমি বিশ্বব্যাপী তাদের কিছু আছে। যদি আমি টাইপ mকরি তবে আমি চালু করতে (আমার শর্টকাট) আশা করি, স্থানীয় স্ক্রিপ্টটি mকার্যকর করার জন্য ডাকা হয় না।
gman

@gman ঠিক আছে। কোনও দূষিত কমান্ড অজান্তেই প্রকৃতপক্ষে বিরূপ প্রভাব ফেলতে পারে। নোট করুন যে একক বর্ণের কমান্ড / উপকরণগুলি ইউনিক্সের সূচনা থেকেই ভুল টাইপ করার উচ্চ ঝুঁকির কারণে উদ্ভূত হয়েছিল। বিরল মানকগুলি হ'ল wএবং [
jlliagre

3

এমনকি আপনি যা টাইপ করেন তার প্রতি সর্বদা খুব সচেতন থাকলেও, এমনকি .আপনার PATHশেষে রাখা এমনকি এখনও অনিরাপদ কারণ কিছু প্রোগ্রাম বর্তমান ডিরেক্টরিটি /tmp(যা বিশ্ব লিখনযোগ্য) তে পরিবর্তন করে এবং বাস্তবে ইনস্টল না থাকা ইউটিলিটিগুলি চালানোর চেষ্টাও করতে পারে, এইভাবে কি ডিফল্ট হয় /tmp। যদি এটি ঘটে থাকে তবে এটি আক্রমণকারীর ভেক্টর।

নোট সেখানে এড়ানো অনেক অপূর্ণতা নয় যে .PATH, কারণ ./(বিশেষ করে কোয়ার্টি, যেখানে পরপর কী এই অক্ষর এবং Shift প্রয়োজন হবে না মত কীবোর্ড দিকে) টাইপ করতে এবং ব্যবহার করে সহজ ./, এছাড়াও সমাপ্তির সাহায্য করবে এইভাবে সম্ভাব্য কীস্ট্রোকগুলি সংরক্ষণ শেষে.

আপনি যদি সত্যিই বর্তমান ডিরেক্টরি থেকে কমান্ড টাইপ করতে সক্ষম হতে চান তবে আধুনিক শেলগুলি (zsh এর মতো command_not_found_handler) নিরাপদে এটি করার জন্য বৈশিষ্ট্যগুলি সরবরাহ করতে পারে, অর্থাত্ হ্যান্ডলারের সামনে আপনি যে সমস্ত সুরক্ষা চেক চান সেটি যোগ করতে দেয় allowing কমান্ড কার্যকর করা হয়।

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