chroot: '/ bin / bash' কমান্ড চালাতে ব্যর্থ: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই


54

chrootকমান্ডটি চালানোর সময় একটি ত্রুটি দেওয়া হয়:

failed to run command ‘/bin/bash’: No such file or directory 

1
প্রশ্নটিকে কি ইউনিক্স.স্ট্যাকেক্সেঞ্জাওয়েজ / প্রশ্নস / 646490৯০/২ এর খাঁটি সদৃশ হিসাবে বিবেচনা করা যেতে পারে ? প্রশ্নের উত্তরগুলি অবশ্যই কোনও লিঙ্কের জন্য সমস্যার সম্ভাব্য সমাধানের প্রতিনিধিত্ব করে, তবে এটি প্রশ্নটিকে এর সদৃশ করে তোলে না।
কার্ল রিখটার

1
আমার জন্য সমস্যাটি হ'ল আমি একটি -৪-বিট ওএস ডিস্ক মাউন্ট করার জন্য একটি 32-বিট লাইভ সিডি ব্যবহার করছিলাম এবং এতে ক্রুট করছিলাম। একটি 32-বিট কার্নেল 64-বিট ব্যাশ চালাতে পারে না। সমাধানটি ছিল একটি 64-বিট লাইভ সিডি পাওয়া। (লিঙ্কযুক্ত সদৃশ সম্পূর্ণরূপে সম্পর্কিত নয়))
লিওনস

উভয় প্রশ্নের ক্ষেত্রেই সমস্যার উত্সটির ব্যাখ্যা থাকা সত্ত্বেও এটি কোনও সদৃশ নয়। এই প্রশ্নের সদৃশ হিসাবে চিহ্নিত হওয়া প্রশ্নটি জেনেরিক ইনস্টলে থাকা অনুপস্থিত গ্রন্থাগারগুলি সম্পর্কিত, যেখানে এই প্রশ্নটি বিশেষত ক্রোয়েডযুক্ত পরিবেশে ঘটে যাওয়া ত্রুটি সম্পর্কে।
bschlueter

উত্তর:


33

এই ত্রুটির অর্থ ক্রুটের অভ্যন্তরে কোনও /bin/bashডিরেক্টরি নেই । আপনি যেখানে (বা অন্যান্য শেল এর) এক্সিকিউটেবল ডিরেক্টরিতে এটি নির্দেশ করেছেন তা নিশ্চিত করুন ।bashchroot

আপনি যদি /mnt/somedir/usr/bin/bashতারপর মৃত্যুদন্ড কার্যকরchroot /mnt/somedir /usr/bin/bash


2
Rootfs ফোল্ডারে একটি / বিন / বাশ ফাইল রয়েছে
USER3254789

2
এটি আপনার /root/.bashrcবা /root/.bash_profileআপনার মধ্যে কিছু ব্যর্থ কমান্ড / লাইন দ্বারা সৃষ্ট হতে পারে chroot। আপনি কি এই ফাইলগুলিকে সাময়িকভাবে নাম পরিবর্তন করতে পারবেন? এছাড়াও আপনি নিশ্চিত করতে পারেন যে bashএটি কার্যকর ( chmod +x /chroot/bin/bash)?
ফুপস

অ্যাসপেড @ হোম-বা: ~ / দেবিয়ানআর্ম $ সুডো চিডম + এক্স রুটফস / বিন / ব্যাশ b @ হোম-বা: ade / দেবিয়ানআর্ম $ সুডো ক্রুট রুটফেস asp ক্রুট: '/ বিন / বাশ' কমান্ড চালাতে ব্যর্থ: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই
USER3254789

37
আমি এটি সন্ধান। বিন / বাশ আছে, তবে আমার ভিতরে / লিব এবং / লিব 64 নেই। / বিন / বাশ libc, ld-linux, libdl ইত্যাদির উপর (ofc) নির্ভর করে ... এত সহজ সিপি -a / usr rootfs /, cp -a / lib rootfs /, cp -a / lib64 rootfs / যথেষ্ট ছিল। (আপনি সেইগুলিকে মাউন্ট-বেঁধে রাখতে পারেন, তবে আমি সেগুলি অনুলিপি করেছি, কারণ আমি বিপজ্জনক এমন কিছু চালাতে চাই যা এই ফাইলগুলিকে রুটফেসে দূষিত করতে পারে)) ক্রুট থেকে প্রাপ্ত বার্তাটি আরও বর্ণনামূলক হতে পারে। "এই জাতীয় কোনও ফাইল বা ডিরেক্টরি" এর অর্থ আসলে "আমি এই এসএইচ চালাতে পারি না ..."।
ডালিবোর ফিলস

1
@ এমিলওয়াতাই যোগ করেছেন :-)
ডালিবোর ফিলাস

13

আমার /bin/bashক্রোয়েটেড ডিরেক্টরি ভিতরে ছিল তবে এর মধ্যে আমার / লিব এবং / লিব 64 নেই। ক্রুট থেকে প্রাপ্ত বার্তাটি আরও বর্ণনামূলক হতে পারে। "এই জাতীয় কোনও ফাইল বা ডিরেক্টরি" এর অর্থ আসলে "আমি এটি চালাতে পারি না ..."।

/bin/bashlibc, ld-linux, libdl ইত্যাদির উপর অবশ্যই নির্ভর করে আপনি ldd /bin/bashকোন লাইব্রেরি প্রয়োজন তা দেখতে আপনি এটি ব্যবহার করতে পারেন।

1) আপনি mount -o bindchroot এর অধীনে এই ডিরেক্টরিগুলি করতে পারেন 2) বা আপনি এই লাইব্রেরিগুলিকে chroot এ অনুলিপি করতে পারেন, যদি আপনি ক্রোটেড এনভির উপর বিশ্বাস না রাখেন যে তাদেরকে দুর্নীতিগ্রস্ত করবেন না, যেমন:

cp -a /usr rootfs/
cp -a /lib rootfs/
cp -a /lib64 rootfs/

এটি ডুপ্লিকেট তৈরি করবে .. যা আমাদের প্রচুর সেটআপ করার সময় অনুকূলিত হয় না

1
আপনি যদি প্রথম পদ্ধতিটি (1 হিসাবে চিহ্নিত) ব্যবহার করেন তবে এটি সদৃশ তৈরি করে না। দ্বিতীয়টি কার্যকর যদি আপনি অবিশ্বস্ত পরিবেশে আঁকেন। উদাহরণস্বরূপ, আপনার কাছে একটি ট্রোজান বা অন্য কোনও কিছু রয়েছে partition
ডালিবোর ফিলাস

4

chrootআপনার $SHELLপরিবেশ পরিবর্তনশীলে সেট করা শেলটি ডিফল্টরূপে শুরু করার চেষ্টা করে তবে এটি এটি আপনার নতুন রুট ডিয়ারে সন্ধান করে যা /bin/bashএটি ধারণ করে না বলে মনে হয় , সুতরাং এটি আরম্ভ করতে পারে না।

আপনি ক্রোটকে প্যারামিটার হিসাবে যুক্ত করে নতুন রুটের ভিতরে অন্য প্রোগ্রাম শুরু করতে বলতে পারেন:

chroot /your/new/root /bin/foo --options...

নোট করুন যে কমান্ডের পাথটি আপনার নতুন রুটের অভ্যন্তরে ব্যাখ্যা করা হয়েছে , সুতরাং এই উদাহরণে বলা প্রোগ্রামটি আসলে ইন-হ'ল/your/new/root/bin/foo


2
Rootfs ফাইলটিতে একটি / বিন / বাশ ফাইল রয়েছে তাই সমস্যা কী
USER3254789

1
যাহাকে হ্রাস করা হয়েছে: যদিও পোস্টারের ক্ষেত্রে এটি সমস্যা ছিল না, তবে এটি প্রশ্নের ত্রুটির একটি বৈধ এবং অপ্রতিরোধ্য ব্যাখ্যা নয়। আপনি যদি অন্য কোনও সমস্যা দেখেন তবে দয়া করে কোনও কিছুকে কম করে দেওয়ার সময় একটি মন্তব্য করুন।
crater2150

2

রিমোট সার্ভারে ক্রোয়েটেড অ্যাকাউন্টে ssh করার চেষ্টা করার সময় আমি একই ত্রুটি পেয়েছিলাম। আমার ক্ষেত্রে, আমি রিমোট lib64 ডিরেক্টরিতে নিম্নলিখিত ফাইলটি অনুপস্থিত। সার্ভারটি Centos6.9

ld-linux-x86-64.so.2

নিম্নলিখিতটি কার্যকর করে এটি স্থির করা হয়েছিল:

cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/

আমার জন্য এটি ঠিক করে নি, তবে এটি ঠিক করে দেওয়ার জন্য, আমার কাছে cp -r /lib /lib64 /secure/jaillib এবং lib64 উভয়েরই কিছু দরকার ছিল এবং আমি ঠিক কী খুঁজে বের করতে বিরক্ত করিনি। (সম্ভবত আমি
মাল্টিার্ক

0

আপনার বাশের বিপরীতে ldd চালানো দরকার ldd $(which bash), তবে আপনি একটি অনুপস্থিত নির্ভরতা খুঁজে পেতে পারেন, উদাহরণস্বরূপ, যদি আপনি 64 সিস্টেমের জন্য lib64 মাউন্ট / অনুলিপি না করেন, তবে এই ত্রুটিটি ঘটবে।


0

আপনি যদি ক্রস সংকলন করছেন তবে আপনাকে কেমু সিমুলেটর ব্যবহার করতে হবে যা একবার / মেন্ট / সামিডির / বিন / বাশ চালাতে পারবেন যখন আপনি কেমু-আর্ম-স্ট্যাটিক (আমি এই কাজটি আর্ম্ফের জন্য করছি) / mnt / somedir / usr তে অনুলিপি করেন / বিন আপনি ক্রুট করতে সক্ষম হবেন।

এই আরো বিস্তারিত জানার জন্য পরীক্ষা করে দেখুন: https://blog.lazy-evaluation.net/posts/linux/debian-armhf-bootstrap.html


1
ব্যবহারকারী এটি করার চেষ্টা করছেন এমন কোনও ইঙ্গিত নেই।
কুসালানন্দ

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