একটি chmod -R 000 / বিন থেকে কীভাবে পুনরুদ্ধার করবেন?


36

এবং এখন আমি এটিকে chmod করতে পারছি না .. বা আমার অন্যান্য সিস্টেম প্রোগ্রামগুলির কোনও ব্যবহার করতে। ভাগ্যক্রমে এটি এমন কোনও ভিএম-এ রয়েছে যার সাথে আমি চেষ্টা করছি, তবে এটি সমাধান করার কোনও উপায় আছে কি? সিস্টেমটি উবুন্টু সার্ভার 12.10।

আমি পুনরুদ্ধার মোডে পুনরায় চালু করার চেষ্টা করেছি, দুর্ভাগ্যক্রমে এখন আমি চালনার জন্য আরম্ভের নীচে উপলব্ধতার পরে কিছু প্রোগ্রাম না দেওয়ার অনুমতি পাওয়ার কারণে সিস্টেমটি বুট করতে পারছি না the সিস্টেমটি কেবল স্তব্ধ। এটি আমি দেখছি:

Begin: Running /scripts/init-bottom ... done
[   37.062059] init: Failed to spawn friendly-recovery pre-start process: unable to execute: Permission denied
[   37.084744]  init: Failed to spawn friendly-recovery post-stop process: unable to execute: Permission denied
[   37.101333] init: plymouth main process (220) killed by ABRT signal

এর পরে কম্পিউটারটি স্তব্ধ হয়ে যায়।


এটা /binআপনি chmoded বা ফাইল /binবা উভয়?
স্টাফেন চেজেলাস

1
/ বিন ডিরেক্টরিটি -আর বিকল্পের সাথে ... উভয়
জেট

টিনিকোর সহ একটি ইউএসবি রাখা ভাল। যখন এই জাতীয় কিছু ঘটে তখন দরকারী।
সাগা

উত্তর:


28

অন্য একটি পরিষ্কার ওএস বুট করুন, ফাইল সিস্টেমটি মাউন্ট করুন এবং অনুমতিগুলি ঠিক করুন।

আপনার ভাঙা ফাইল সিস্টেমটি কোনও ভিএম-এ থাকায় আপনার হোস্ট সিস্টেমটি উপলব্ধ এবং কাজ করা উচিত। আপনার ভাঙা ফাইল সিস্টেমটি সেখানে মাউন্ট করুন এবং এটি ঠিক করুন।

কিউইএমইউ / কেভিএম ক্ষেত্রে আপনি উদাহরণস্বরূপ এনবিডি ব্যবহার করে ফাইল সিস্টেম মাউন্ট করতে পারেন ।


আমি মনে করি এটি সম্ভবত এটি ঠিক করার উপায় হিসাবে সঠিক, তবে, সিস্টেমটি মাউন্ট করার জন্য আমার এখনই চেষ্টা করা দরকার - এখনই আমি ইমেজ ফাইল থেকে প্রিসিস্টেমটি পাচ্ছি- আরআরআরডি.আইএমজি স্মৃতি এবং আবির মত।
জেট

1
@ জেট, আপনি /bootসেই ভিএম এর পার্টিশনটি মাউন্ট করেছেন । রুট ফাইল সিস্টেমটি চেষ্টা করে সনাক্ত করুন। যদি LVM তে থাকে তবে এটিটি সক্রিয় করতে vgchange -ayসংযোগের পরে চালান nbd
স্টাফেন চেজেলাস

1
@ স্টেফেন চ্যাজেলাস আমি এটি পেয়েছি। আপনাকে উভয়কে অনেক ধন্যবাদ- আমি এই ধরণের ভুল পছন্দ করি, একটি টন শিখেছি!
জেট

খুশী এটা ঠিক আছে। আমি কিছু মিস করছি যদি এটি একটি ভিএম, তবে এটি হোস্ট সিস্টেমের কাছে কেবল একটি বড় ফাইল, তাই না? মেরামত করতে আপনি কীভাবে এর ভিতরে কোনও কিছু মাউন্ট করবেন? (আমি কীভাবে একটি নন-ভিএম সিস্টেমে এটি করব তা বুঝতে পেরেছি))
জো

68

এমনকি root, আপনি যে ফাইলগুলির xঅনুমতি বিট সেট নেই সেগুলি কার্যকর করতে পারবেন না । আপনি যা করতে পারেন তা হ'ল ld.soএটি কল করা (যদি তারা ডায়নামিকভাবে এক্সিকিউটেবলের সাথে সংযুক্ত থাকে):

$ echo /lib/*/ld*.so
/lib/i386-linux-gnu/ld-2.27.so /lib/x86_64-linux-gnu/ld-2.27.so

chmodএক্সিকিউটেবলের আর্কিটেকচারের সাথে মেলে এমন একটি ব্যবহার করুন । আমার ক্ষেত্রে x86_64এক:

sudo /lib/x86_64-linux-gnu/ld-2.27.so /bin/chmod 755 /bin /bin/chmod

বা /usr/binএর chmodমতো বা অন্য কোথাও ফোন করুন perl:

sudo perl -e 'chmod 0755, "/bin", "/bin/chmod"

সাবধান যখন অনুমতি যে কিছু ফাইল পুনরূদ্ধার /binমত mountবা su0755 ছাড়া অন্য অনুমতি বোঝানো হয়।

আপনি পুনরায় বুট করে থাকেন তাহলে, তবে, তুমি কি বিন্দু যেখানে আপনি চালাতে পারেন পেতে সক্ষম হতে পারেন perlবা ld.soযদিও। আপনি এর থেকে কিছু ঠিক করতে পারবো initramfsযদিও (initramfs -র একটি পুনরুদ্ধার শেল পেতে একটি ভুল রুট ডিরেক্টরিটি পাস; তাও দেখতে break=bottomবা break=initশুধুমাত্র পাঠযোগ্য ডেবিয়ান উপর, initramfs -র পর root ফাইল-সিস্টেমের মাউন্ট করা আছে সেখানে আপনি একটি শেল দিতে জন্য (কার্নেল পরামিতি যদিও))। অথবা আপনার লাইভ সিডি চিত্র থেকে আপনার ভিএম বুট করুন, বা অন্যদের পরামর্শ অনুসারে হোস্টের উপরে ভিএম ফাইল সিস্টেম মাউন্ট করে ঠিক করুন।

Initramfs উপায় ঠিক করা:

ইন grub, বুট এন্ট্রি সম্পাদনা করুন এবং কমান্ড root=থেকে পরামিতি সরান linux:

setparams 'Ubuntu, with Linux 3.2.0-27-generic'                          

recordfail                                                               
gfxmode $linux_gfx_mode                                                  
insmod gzio                                                              
insmod ext2                                                              
set root='(hd1)'                                                         
search --no-floppy --fs-uuid --set=root dc02b07c-88ef-4804-afe0-4f02db2\ 
94561                                                                    
linux /boot/vmlinuz-3.2.0-27-generic                                     
initrd /boot/initrd.img-3.2.0-27-generic                                 

Ctrl-Xবুট করতে উবুন্টুর ইনিরামগুলি রুট ফাইল সিস্টেমটি খুঁজে পাবে না তাই পুনরুদ্ধার শুরু করুন sh। তারপরে রুট ফাইল সিস্টেমটি মাউন্ট করুন (আমার ক্ষেত্রে /dev/vdb, আপনার মেশিনের সাথে অভিযোজিত) এবং সেখানে জিনিসগুলি ঠিক করুন:

Target filesystem doesn't have requested /sbin/init.
No init found. Try passing init= bootarg.


BusyBox v1.18.5 (Ubuntu 1:1.18.5-1ubuntu4) built-in shell (ash)
Enter 'help' for a list of built-in commands.

(initramfs) mkdir /x
(initramfs) mount /dev/vdb /x
[   48.430071] EXT3-fs (vdb): error: couldn't mount because of unsupported optio
nal features (240)
[   48.477406] EXT4-fs (vdb): recovery complete
[   48.477747] EXT4-fs (vdb): mounted filesystem with ordered data mode. Opts: (
null)
(initramfs) chmod -R 755 /x/bin
(initramfs) umount /x
(initramfs) reboot

একবার বুট করার পরে, অন্য সিস্টেমের সাথে তুলনা করে 755 অনুমতি থাকা নয় এমন ফাইলগুলির অনুমতিগুলি ঠিক করুন।

pythonহিসাবে চালিয়ে ফিক্সিং init:

ইন grub, বুট এন্ট্রি সম্পাদনা করুন, এবার root=প্যারামিটারটি রাখুন, এতে পরিবর্তন roকরুন rwএবং এটিকে যুক্ত করুন init=/usr/bin/python:

setparams 'Ubuntu, with Linux 3.2.0-27-generic'                          

recordfail                                                               
gfxmode $linux_gfx_mode                                                  
insmod gzio                                                              
insmod ext2                                                              
set root='(hd1)'                                                         
search --no-floppy --fs-uuid --set=root dc02b07c-88ef-4804-afe0-4f02db2\ 
94561                                                                    
linux /boot/vmlinuz-3.2.0-27-generic root=UUID=dc02b07c-88ef-4804-afe0-\
4f02db294561 rw init=/usr/bin/python
initrd /boot/initrd.img-3.2.0-27-generic                                 

তারপরে, অজগর প্রম্পটে:

Begin: Running /scripts/init-bottom ... done.
Python 2.7.3 (default, Apr 20 2012, 22:39:59)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.chmod('/bin/sh',0755)
>>> os.chmod('/bin/chmod',0755)
>>> os.execl('/bin/sh','sh')
sh: 0: can't access tty; job control turned off
# chmod -R 0755 /bin
# mount -o remount,ro /
[  100.704720] EXT4-fs (vdb): re-mounted. Opts: errors=remount-ro
# exec /sbin/init

আবার একবার বুট করার পরে, অন্য সিস্টেমের সাথে তুলনা করে 755 অনুমতি থাকা নয় এমন ফাইলগুলির অনুমতিগুলি ঠিক করুন।


5
+1, আরেকটি দুর্দান্ত উত্তর, স্টিফেন। আমি যুক্ত করব: already try to rebootক্ষেত্রে: একটি লাইভ সিডি বুট করুন, / ডাবল পার্টিশন মাউন্ট করুন / বিন, এবং chmod 755 /bin(এবং ফাইলগুলি যদি সেগুলি পরিবর্তন করা হয় তবে)। তবে পরে, পরীক্ষা করুন যে সমস্ত ফাইলই সঠিক অনুমতি (আপনার লিনাক্স বিতরণের উপর নির্ভর করে আপনি সম্ভবত মূল প্যাকেজটির বিপরীতে চেক / বিন পরীক্ষা করতে পারেন)
অলিভিয়ার দুলাক

4
কি দারুন. আপনার জ্ঞানের গভীরতা ভয়ঙ্কর 8-)।
slm

এক্সিকিউট করার জন্য আমি ld.so ব্যবহার করতে পারি না। pb.abhijeetr.com/fRWf এখানে কী ভুল হচ্ছে?
অভিজিৎ রাস্তোগি

@ শাদিয়াবি, আপনার কাছে সম্ভবত একটি মাল্টিআরচ সিস্টেম রয়েছে এবং bit৪ বিট এক্সিকিউটেবলে 32 বিবিডি এলডি.এসও ব্যবহার করার চেষ্টা করছেন। আপনার অবশ্যই অন্য একটি থাকতে হবে ld.so, যেমন কোনও ডিরেক্টরিতেও থাকতে পারে /lib/x86_64-linux-gnu
স্টাফেন চেজেলাস

1
@Kwpolska, os.execlএবং execনির্বাহ জন্য, তারা একটি প্রক্রিয়া মাল হয় না, শুধু এক্সিকিউটেবল প্রতিস্থাপন একই প্রক্রিয়ায় তাই রাজশাহীতে PID 1. প্রক্রিয়া 1 সম্পন্ন হলে, প্রথমে রান python, তারপর sh, তারপর init
স্টাফেন চেজেলাস

8

অজগর ব্যবহার করুন :)

$ python
>>> import os
>>> os.chmod('/bin', 0755)

/binএটির কাজটি করার জন্য কোনও কিছুর প্রয়োজন হবে না । স্পষ্টতই, আমি এটি চেষ্টা করে দেখিনি ...


হুম, আমি সর্বদা অনুভব করেছি যে এই এবং অন্যান্য স্ক্রিপ্টিং ভাষাগুলি কেবল chmod প্রোগ্রামকে কল করবে। জানার খুব ভাল!
জেট

1
না, chmodএটি একটি সিস্টেম কল, যা chmodপ্রোগ্রাম দ্বারা chmodএবং অজগর / পার্ল / রুবি ইত্যাদির ফাংশন দ্বারা কল করা হয়, chmodযদিও শেলগুলি ইউটিলিটি কল করে ।
ডেনিস কারসেমেকার

2
যে শাঁসগুলি chmodঅন্তর্নির্মিত রয়েছে সেগুলি ব্যতীত । এটি এমন এক ধরণের পরিস্থিতি যেখানে শেলগুলি পছন্দ করে sash। এটি স্ট্যাটিকালি লিঙ্কযুক্ত এবং বিল্টিনের মতো সর্বাধিক পুনরুদ্ধার কমান্ড রয়েছে chmod(সুতরাং অন্য কোনও কিছুর উপর নির্ভর করে না)। এটি সাধারণত বসত /sbinযদিও এটি সমস্ত ফাইল সিস্টেমে অতিরিক্ত অনুলিপি থাকা ক্ষতি করে না এবং মেমলকডের সাথে একত্রে ব্যবহার করা যেতে পারে। zshএবং ksh93একটি chmod বিল্টিন রয়েছে (যদিও এটি ডিফল্টরূপে সক্ষম নয়)।
স্টাফেন চেজেলাস

1
@ ডেনিস তবে আপনি যদি সিস্টেমটি একেবারেই বুট করতে না পারেন তবে কীভাবে আপনি এটি চালাতে পারেন? ওপি যেমন বলেছে: fortunately দুর্ভাগ্যক্রমে এখন আমি সিস্টেমটিতে মোটেই বুট করতে পারছি না »
নাদির সাম্পাওলি

@ নাদিরসম্পাওলি এটি পুনরায় বুট করার আগে আপনার অবশ্যই এটি ধরার দরকার catch এটি chmodding রুটের পরে এবং সিস্টেমটি বন্ধ করার আগে সফলভাবে করা যেতে পারে।
কেন বেলোস

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