কেন . ডিফল্ট পথে না?


63

কয়েক বছর ধরে ইউনিক্সের মতো সিস্টেমে (আমার কাছে সবচেয়ে প্রাসঙ্গিকভাবে, লিনাক্স), আমি লক্ষ্য করেছি যে .(বর্তমান দির) কখনই ডিফল্টরকম হয় না $PATH। কেন?

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


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

উত্তর:


41

আপনি নিজের প্রশ্নের সঠিক উত্তর দিয়েছেন, ঠিক এই কারণেই বিন্দুটি পথে নেই:
শিশুসুলভ ভাইরাস বা সৎ ভুল থেকে রক্ষা করা।

অবশ্যই এটি অত্যন্ত লম্পট এবং অকেজো অ্যান্টি-ভাইরাস পরিমাপ এবং কোনও কিছুই আপনাকে নিজের পথে বিন্দু যুক্ত করা থেকে বিরত করে না।


13
এটি মজার, যদিও আপনি এটি থেকে সুরক্ষিত কিন্তু -rfডিরেক্টরিতে লোন ফাইল থেকে নয় ( rm *আকর্ষণীয় করে তোলে ) ;-)
জয়ে

ইউনিক্স উত্তর: আপনি কেন -rfপ্রথম স্থানে একটি ফাইলের নাম রেখেছিলেন ? ;)
এমএসডব্লিউ

2
@ এমএসডব্লিউ: আর একটি ইউনিক্স উত্তর হ'ল অ্যাডমিন অ্যাকাউন্টগুলির জন্য সাধারণত পথের বিন্দুগুলি নীচু করা হয়, তবে প্রশাসকহীনদের পক্ষে ঠিক।
harrymc

যদি বর্তমান পথটি সর্বশেষ পাথ হত তবে ঝুঁকিটি কি হ্রাস পাবে , যাতে প্রোগ্রামগুলির জন্য সমস্ত সাধারণ জায়গা প্রথমে পরীক্ষা করা হয় ?
জন z

1
@ জঞ্জ: আসলে না। তবে আপনার কম্পিউটারটি ভাইরাস থেকে পরিষ্কার থাকলে ঝুঁকিটি খুব কম। এবং যদি কম্পিউটারটি সংক্রামিত হয়, তবে আধুনিক ভাইরাসগুলির সাথে পথটি আপনার উদ্বেগের মধ্যে সবচেয়ে কম।
harrymc

4

হ্যাঁ. যদি আপনি "রাখেন।" পথে, আপনি আপনার বর্তমান ডিরেক্টরিতে ফাইলগুলিতে প্রচুর কমান্ড কল প্রেরণ করবেন।

এটি শেষ হলেও, এখনও পাইলট ত্রুটি রয়েছে। উদাহরণস্বরূপ, সোলারিস 10 এর "শীর্ষ" অভাব রয়েছে। আমি সারা দিন আমার সিস্টেমে "শীর্ষ" টাইপ করি, কারণ আমি মনে করি যে আমি এমন একটি সিস্টেমে রয়েছি যার "শীর্ষ" আছে।


1

দুঃখিত, আমি নির্বাচিত উত্তরের মন্তব্যের আকারে এটি জিজ্ঞাসা করতে চাই, তবে সুপারভাইজারের আমার কাছে এখনও কোনও সংবাদ নেই।

সুরক্ষা উত্তরটি বোঝা যায় তবে আপনি যদি "রাখেন তবে"। আপনার পাঠ্যপুস্তকে সর্বশেষ জিনিস হিসাবে, চালককে অনুসন্ধানের সময় শেলটি কি বর্তমান ডিরেক্টরিটিতে থাকা উচিত নয় এবং এর ফলে সুরক্ষা ঝুঁকি হ্রাস করা উচিত? যদি এটি क्रम-অনুসারে পাঠ সন্ধান করে, এটি সন্ধানের আগে / বিন / এলএস খুঁজে পেত /

সুতরাং, আমার পক্ষে এটি রাখা কতটা নিরাপত্তাহীন। " আমার $ PATH পরিবেশের পরিবর্তনশীল শেষে?

আমার পরামর্শ অনুসারে এটি কাজ করে। এখানে আমি কীভাবে পরীক্ষা করেছি:

প্রথমে "যোগ করুন"। আপনার পাঠ্য পরিবেশের পরিবর্তনশীলের সমাপ্তি।

তারপরে, নিম্নলিখিত ডিরেক্টরিটি কিছু ডিরেক্টরিতে রাখুন, যেমন ~ / dir1 / dir2 / test_which.rb:

#!/your/path/to/ruby

puts "this file is from the current directory"

এবং এই ফাইলটি /usr/bin/test_which.rb এ রাখুন

#!/your/path/to/ruby

puts "this file is at /usr/bin/test_which.rb"

ফাইলগুলি যাতে এক্সিকিউটেবল হয় তা chmod + x করতে ভুলবেন না।

এখন, আপনি যদি ডিরেক্টরিটি ~ / dir1 / dir2 তে পরিবর্তন করেন এবং পরীক্ষা_কোটি.আরবি ব্যবহার করেন, আপনি আউটপুট পাবেন

this file is at /usr/bin/test_which.rb

প্রকৃতপক্ষে, আপনি যদি কোথাও থেকে "কোন টেস্ট_উইচ.আরবি" চালনা করেন তবে এটির রিপোর্ট করা উচিত

/usr/bin/test_which.rb

আপনি এখনও টাইপ করে বর্তমান ডিরেক্টরিতে ফাইলটি কার্যকর করতে পারেন:

./test_which.rb

8
কেউ কখনও যেমন একটি টাইপো তৈরী dcবা slবা sduoএকটি শেল, এবং দ্বারা "কমান্ড not found" সংরক্ষিত হয়েছে। কখনো।
ড্যানিয়েল বেক

1
ড্যানিয়েলের সাথে সম্মত হন: আপনার একটি ভুল বানান কমান্ডের নামে একটি বিদ্বেষপূর্ণ স্ক্রিপ্ট থাকতে পারে। আরও দেখুন এই উত্তর
অগ্নি

@ ড্যানিয়েলব্যাক আপনার ভুল ব্যবহারের জন্য উপনাম ব্যবহার করার চেষ্টা করা উচিত। আমার পছন্দসই কনফিগারেশন রয়েছে ls(কালার আউটপুট এবং আরও বেশি) এলিয়াসযুক্ত lযা সম্পূর্ণ টাইপসগুলি সরবরাহ করে।
কার্ল ডামগার্ড আসমুসেন

1
@ কার্লডামগার্ডএসমুসেন কেএল
ডিফোরে

আমি ব্যক্তিগতভাবে 'যোগ করি না।' আমার পথে এটি টাইপ করা খুব কঠিন নয়। / রুন বা আমি যা করতে চাই স্থানীয় দিরে। এটি আমাকে অপ্রত্যাশিত জিনিসগুলি বাছাই থেকে কয়েকবার বাঁচিয়েছে। টমেটো টোমাহটো।
মাইকেল ম্যাথিউস

1

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

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

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