यहां तक कि 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 में पुनर्प्राप्ति शेल प्राप्त करने के लिए एक गलत रूट निर्देशिका पास करते हैं; रूट फाइल सिस्टम आरोहित होने के बाद initramfs के लिए आपको एक शेल प्रदान करने के लिए initramfs भी देखें break=bottomया break=initकर्नेल पैरामीटर देखें (केवल-पढ़ने के लिए) हालांकि))। या अपने वीएम को एक लाइव सीडी छवि से बूट करें, या मेजबान पर वीएम फ़ाइल सिस्टम को बढ़ाकर ठीक करें जैसा कि दूसरों ने सुझाव दिया है।
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बूट करने के लिए। उबंटू के initramfs को रूट फाइल सिस्टम नहीं मिलेगा इसलिए एक रिकवरी शुरू करें 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 अनुमतियाँ नहीं हैं।
/binआप/binया दोनों में chmoded फ़ाइलें है ?