'/' এর কেন '..' প্রবেশ আছে?


81

এটি আমাকে সর্বদা বিস্মিত করেছে। রুট ডিরেক্টরিটিতে পিতামাতাকে নির্দেশিকাগুলির উল্লেখ থাকতে পারে কেন?

bob @ bob: / $ ls -a
। হোম বিল্ড lib32 mnt .rpmdb sys vmlinuz
.. cdrom initrd.img lib64 opt sbin tmp vmlinuz.old
বিন দেব initrd.img.old হারিয়েছেন + পাওয়া পাওয়া গেছে সেলেনাক্স ইউএসআর
বুট ইত্যাদি lib মিডিয়া রুট srv var

ফাইল সিস্টেমটিতে ডিরেক্টরিগুলি কীভাবে পরিচালিত হয় তা আমি বুঝতে পারি - প্রতিটি ডিরেক্টরিতে নিজের কাছে n + 2 পয়েন্টার থাকে (ডিরেক্টরিতে অন্তর্ভুক্ত সাব-ডিরেক্টরিগুলির n = সংখ্যা)। প্রতিটি তাত্ক্ষণিক উপ-ডিরেক্টরিতে একটি, এর পিতামাতার জন্য এবং একটি নিজের জন্য।

তবে /এর পিতা বা মাতা কি?

উত্তর:


73

/..পয়েন্ট /:

$ ls -id /
2 /
$ ls -id /..
2 /..

উভয়ের একই ইনোড নম্বর রয়েছে, যা এই সিস্টেমে 2 হিসাবে ঘটে। (সঠিক মান কিছু যায় আসে না।)

এটি ধারাবাহিকতার জন্য করা হয়েছে। এইভাবে, ..কোনও পথে প্রসেস করার সময় কার্নেলটিতে বর্তমানে এটি কোথায় রয়েছে তা পরীক্ষা করার জন্য কোড থাকতে হবে না । আপনি cd ..চিরকালের জন্য বলতে পারেন , এবং কখনই মূলের থেকে গভীর না।


20
@ জর্জি আমি বিশ্বাস করি যে আপেক্ষিক পথগুলির সুবিধা গ্রহণ করে এমন শোষণগুলি এটি ব্যবহার করে; আপনার বর্তমান ফোল্ডারটি অনুমান করার দরকার নেই, আপনি কেবল করেন../../../../../../../../../../../../../../../../etc/passwd
মাইকেল মরোজেক

21
সহজেই / ইত্যাদি / পাসডাব্লুড ব্যবহার করে তাতে কী পার্থক্য হবে?
jlliagre

9
@ জেলিয়াগ্রে: এমন প্রোগ্রাম রয়েছে যা পরীক্ষা করে কোনও ফাইল বর্তমান ডিরেক্টরিতে রয়েছে কিনা তা পরীক্ষা করে পরীক্ষা করে দেখা হয় /। মধ্যে ../(অগত্যা শুরুতে এই সময়ে) এবং সিম্বলিক লিঙ্ক, এটা খুব কঠিন, কি বিশেষ বিবেচনায় আক্রমণকারী প্রোগ্রামের নাক অধীনে ডিরেক্টরি চলন্ত হতে পারে না।
গিলস

4
আমি দেখতে পাচ্ছি, তাদের কমপক্ষে canonicalize_file_name বা রিয়েলপথ ব্যবহার করা উচিত।
jlliagre

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

38

এটি সেখানে আছে কারণ এটি ইউনিক্স দ্বারা তৈরি একটি গ্যারান্টি: প্রতিটি ডিরেক্টরিতে দুটি এন্ট্রি থাকে, .যা নিজেকে ..বোঝায় এবং যা পিতামাতাকে বোঝায়।

বর্তমান নেমস্পেসের মূল ডিরেক্টরিটি বিশেষ, এটি ওএস দ্বারা প্রোগ্রামগুলিতে করা গ্যারান্টিটি ভঙ্গ করার জন্য বিশেষ ..হিসাবে একই বিষয়টিকে .নির্দেশ করে। যখন এই চুক্তিগুলি ভেঙে যায় তখন জিনিসগুলি ভুল হয়ে যায় এবং প্রত্যেকে আঙ্গুল দেখায়।

আপনি যে রুট ডিরেক্টরিটি দেখেন তা ডিস্কের ফাইল সিস্টেমে আসলে আলাদা আলাদা প্যারেন্ট ডিরেক্টরি থাকতে পারে। মাউন্ট করা নেমস্পেসে প্রদত্ত ফাইল সিস্টেমের দর্শন হ'ল .. = .নিয়মটি কার্যকর করে /। সুতরাং আপনি যদি chroot()কারাগারে থাকেন /.. = /তবে দেখতে পাবেন যদিও কারাগারের বাইরে কেউ /path/to/jail/..তার /path/toপরিবর্তে দেখবে ।


1
"চুক্তি" এর উপর কতগুলি প্রোগ্রাম নির্ভর করে যে /এটি ..নিজের দিকে ইঙ্গিত করে? আমি মনে করি এটি /না থাকার জন্য এটি সমানভাবে (বা আরও) গ্রহণযোগ্য হতে পারে ..
মুসিফিল

কারও কি এমন উত্স আছে যা এই তত্ত্বটি নিশ্চিত করে?
জুলিয়ান হলম্যান

1
ঠিক আছে, man 5 dirএকটি বিএসডি সিস্টেমে আপনাকে ডকুমেন্টেড এপিআইয়ের মধ্য দিয়ে চলবে এবং এপিআইতে বর্ণিত আইটেমগুলি চুক্তির অংশ।
ফিল পি

1
অনুসন্ধানের একটি অপ্টিমাইজেশন রয়েছে যা এন + 2 চুক্তির উপর নির্ভর করে।
ctrl-alt-delor

2
ওহ, এবং অবশ্যই যদি আপনি কোনও উত্স চান তবে কেবল স্পেসিফিকেশনটি পড়ুন। পबস.ওপেনগ্রুপ . org/onlinepubs/9699919799 বিভাগে 4.12 বিভাগে POSIX : "বিশেষ ফাইলের নাম ডট তার পূর্বসূরীর দ্বারা নির্দিষ্ট ডিরেক্টরিটি উল্লেখ করবে special মূল ডিরেক্টরিতে, ডট-ডট মূল ডিরেক্টরিতে উল্লেখ করতে পারে।
ফিল পি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.