यहां तक कि 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
या su
0755 के अलावा अन्य अनुमतियाँ हैं।
यदि आपने रिबूट किया है, हालांकि, आप उस बिंदु तक नहीं पहुंच सकते हैं जहां आप चला सकते हैं 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 फ़ाइलें है ?