Chmod 000 / dev / stdin চিরতরে টার্মিনাল অক্ষম করে দেবে?


12

আমি ইউনিক্স দ্য পাঠ্যপুস্তকের প্রশ্নের মাধ্যমে কাজ করছি (অধ্যায় 8, # 16, পৃষ্ঠা 207) :

chmodকমান্ড লাইনগুলি দিন যা আদেশ mesg nএবং mesg yআদেশগুলি একই কাজ করে । (ইঙ্গিত: আপনার টার্মিনাল সহ প্রতিটি হার্ডওয়্যার ডিভাইস /devডিরেক্টরিতে একটি সম্পর্কিত ফাইল রয়েছে ))

আমি বিশ্বাস করি উত্তরটি হ'ল:

mesg n = chmod 770 /dev/stdout

mesg y = chmod 777 /dev/stdout

তবে আমি ভাবছিলাম আপনি ব্যবহার করলে কী হয় chmod 000 /dev/stdin?

আপনি কি টার্মিনালে কমান্ডগুলি প্রবেশ করে লক আউট হয়ে যান?


2
এটি বোঝা গুরুত্বপূর্ণ যে কোনও ফাইল খোলার সময় অনুমতিগুলি পরীক্ষা করা হয়। অতএব, আপনার শেলের স্ট্যান্ডার্ড ইনপুটটি যাই ঘটুক না কেন, তার অনুমতি পরিবর্তন করা আপনাকে কমান্ডগুলি প্রবেশ করতে লক করবে না, কারণ শেল এবং টার্মিনাল এমুলেটর বা এসএসএস বা ইতিমধ্যে যোগাযোগের চ্যানেলটি যা খুলেছে both ইতিমধ্যে টার্মিনালটি খোলা নেই বলেই কেবল mesg nভবিষ্যতের প্রভাবিত করতে অনুমতিগুলি ব্যবহার করতে পারেন । writewrite
zwol

উত্তর:


20

না, /dev/stdinএবং /dev/stdoutভুল ডিভাইস। এগুলি টার্মিনাল ডিভাইস নয়, এগুলি যথাক্রমে স্ট্যান্ডার্ড ইনপুট এবং স্ট্যান্ডার্ড আউটপুটের জন্য এলিয়াস। স্ট্যান্ডার্ড ইনপুট এবং স্ট্যান্ডার্ড আউটপুট হ'ল সংজ্ঞা অনুসারে, ফাইল বর্ণনাকারী যা অ্যাপ্লিকেশনগুলি উন্মুক্ত হওয়ার প্রত্যাশা করে এবং একটি প্রচলিত অর্থ হয় (যথাক্রমে ফাইল বর্ণনাকারী 0 এবং 1, এছাড়াও আছে 2 যা স্ট্যান্ডার্ড ত্রুটি)। যেমন ডিভাইস /dev/stdinএবং /dev/stdoutযখন কোনো অ্যাপ্লিকেশন একটি ফাইলের নাম প্রয়োজন দরকারী, কিন্তু আবেদন ব্যবহারকারী এটিকে কিছু ফাইল খোলার পরিবর্তে একটি নির্দিষ্ট ফাইল বর্ণনাকারী অ্যাক্সেস করতে চায়। ইউনিক্স বৈকল্পিকের উপর নির্ভর করে তারা ডিভাইস ফাইলও নাও থাকতে পারে; উদাহরণস্বরূপ, লিনাক্সে, তারা এর সাথে প্রতীকী লিঙ্ক/proc/self/fd/0 এবং বন্ধুরা, এবং এগুলি সেই প্রক্রিয়াটি ইতিমধ্যে সেই ফাইল বর্ণনাকারীতে যে কোনও ফাইল প্রক্রিয়াটি খোলে তার "যাদু" প্রতীকী লিঙ্কগুলি রয়েছে।

এর অনুমতিগুলি পরিবর্তন করা /dev/stdinএবং /dev/stdoutকেবলমাত্র যখন এই ফাইলের নামগুলি স্পষ্টভাবে ব্যবহৃত হয় তখনই তা ঘটে। এটি টার্মিনালের সাথে সম্পর্কিত কোনও কিছুকে প্রভাবিত করে না এবং এটি স্ট্যান্ডার্ড ইনপুট এবং স্ট্যান্ডার্ড আউটপুটটির স্বাভাবিক ব্যবহারকে প্রভাবিত করে না, যেহেতু কোনও নির্দিষ্ট ফাইলের নাম খোলার সময় অনুমতিগুলি কেবল বিবেচনা করে।

mesgপ্রক্রিয়া নিয়ন্ত্রণকারী টার্মিনালটির অনুমতিগুলি পরিবর্তন করা কী । টার্মিনালে চলমান কোনও অ্যাপ্লিকেশনের জন্য, টার্মিনালটি স্ট্যান্ডার্ড ইনপুট, স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটিতে (ফাইল বর্ণনাকারী 0, 1 এবং 2) খোলা আছে। ttyটার্মিনাল ডিভাইসটি কী তা দেখতে আপনি কমান্ডটি ব্যবহার করতে পারেন । mesg nসমতূল্য chmod g-w "$(tty)"এবং mesg yসমতূল্য chmod g+w "$(tty)"


2
ttyনিয়ন্ত্রণকারী টার্মিনালটি রিপোর্ট করে না, তবে স্ট্রিনে যদি টার্মিনালটি খোলা থাকে। সুতরাং লিনাক্সে যেখানে / ডিভ / স্টিডিন কোনও ডিভাইস নয় তবে / ডিভ / স্টিডিনে খোলা ফাইলটির জন্য একটি বিশেষ সিমিলিংক chmot "$(tty)"কম-বেশি একই রকম হবে chmod /dev/stdin(যদি স্টিডিন কোনও টিটি ডিভাইস হয় এবং এটির মোড পরিবর্তন করার চেষ্টা করবে) not a ttyঅন্যথায় বর্তমান ডিরেক্টরিতে একটি ফাইল)। /dev/$(ps -o tty= -p "$$")নিয়ন্ত্রণকারী টার্মিনালটির জন্য দেখুন ।
স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.