উত্তর:
প্রকৃতপক্ষে, একটি সাধারণ অনুরোধ sudo
পাসওয়ার্ডটি একেবারেই পড়েন না stdin
। পরিবর্তে, sudo
সরাসরি নিয়ন্ত্রণকারী টার্মিনাল অ্যাক্সেস করতে হবে (একটি tty
বা pty
, /dev/tty
বিশেষ ফাইলের মাধ্যমে ) এবং প্রম্পট আউটপুট এবং সরাসরি অক্ষর পড়বে। উত্সের tgetpass.c
ফাইলটিতে এটি দেখা যায় sudo
।
আরও কয়েকটি পরিস্থিতি রয়েছে:
askpass
প্রোগ্রাম নির্দিষ্ট করা থাকে, যেমন -A
প্যারামে, সেই প্রোগ্রামটি শুরু করা হবে।sudo
পড়তে অনুরোধ stdin
করেন -S
- এবং এটিতে প্রম্পটটিও লেখা হবে stderr
। এটি ম্যাডহ্যাটারের উত্তরটি প্রয়োগ করে।tty
পাওয়া যায়
visiblepw
ফ্ল্যাগ-ইন দ্বারা নিয়ন্ত্রিত হয় sudoers
), sudo
ত্রুটির প্রতিবেদন করবে:no tty present and no askpass program specified
sudo
ব্যবহারে ফিরে আসবে stdin
এবং stderr
এমনকি যদি এটি বিশেষভাবে অনুরোধ করা হয়নি। ম্যাডহ্যাটারের উত্তরও এখানে প্রযোজ্য।পাইপ sudo cat
স্ট্যান্ডআউটকে স্টিডিনের সাথে সংযুক্ত করে less
, সুতরাং sudo cat
এর স্টিডিনটি প্রভাবিত নয়, এবং পাসওয়ার্ডটি গ্রহণ করতে সক্ষম।
প্রম্পট হিসাবে, এটি স্টাডারের বাইরে চলে যায় sudo cat
; ব্যাশে, স্ট্যান্ডআউটের পাশাপাশি এটি পুনর্নির্দেশের চেষ্টা করুন
sudo cat /etc/resolv.conf |& less
এবং দেখুন প্রতিক্রিয়াটি কতটা আলাদা।
sudo
স্ট্যান্ডিন এখনও উদাহরণ কমান্ডের সাথে টার্মিনালের সাথে সংযুক্ত রয়েছে, এটি এটির পাসওয়ার্ড কীভাবে আসে তার সাথে এটি সরাসরি প্রাসঙ্গিক নয়: ডিফল্টরূপেsudo
স্টিডিনের মাধ্যমে পাসওয়ার্ডগুলির অনুরোধ করবে না এবং এটির মাধ্যমে প্রম্পটটি প্রদর্শন করবে নাstderr
- আপনি এটি2>/dev/null
নিশ্চিত করার চেষ্টা করতে পারেন পরিবর্তে,sudo
সরাসরি tty অ্যাক্সেস।