Selbst als root, können Sie keine Dateien ausführen , die keine haben xErlaubnis Bit gesetzt. Sie können es jedoch aufrufen ld.so(vorausgesetzt, es handelt sich um dynamisch verknüpfte ausführbare Dateien):
$ echo /lib/*/ld*.so
/lib/i386-linux-gnu/ld-2.27.so /lib/x86_64-linux-gnu/ld-2.27.so
Verwenden Sie diejenige, die der Architektur der chmodausführbaren Datei entspricht. In meinem Fall der x86_64eine:
sudo /lib/x86_64-linux-gnu/ld-2.27.so /bin/chmod 755 /bin /bin/chmod
Oder rufen Sie etwas in /usr/binoder an anderer Stelle das zu tun , chmodwie perl:
sudo perl -e 'chmod 0755, "/bin", "/bin/chmod"
Hüten Sie sich vor , wenn Berechtigungen wieder herstellt , dass einige Dateien in /binwie mountoder die suentsprechenden Berechtigungen haben sollen andere als 0755.
Wenn Sie neu gestartet haben, jedoch können Sie nicht in der Lage sein , bis zu dem Punkt zu gelangen , wo Sie ausführen können , perloder ld.soaber. Sie können das Problem beheben, initramfsindem Sie ein falsches Stammverzeichnis übergeben, um eine Wiederherstellungsshell im initramfs abzurufen. Weitere Informationen finden Sie unter Debian im Parameter break=bottomoder im break=initKernel, damit das initramfs Ihnen eine Shell gibt, nachdem das Root-Dateisystem bereitgestellt wurde (schreibgeschützt) obwohl)). Sie können Ihre VM auch von einem Live-CD-Image starten oder das VM-Dateisystem wie von anderen vorgeschlagen auf dem Host mounten.
Initramfs reparieren:
In grubBearbeiten Sie den Boot - Eintrag und entfernen Sie die root=Parameter aus dem linuxBefehl:
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-Xzu booten. Ubuntus initramfs findet das Root-Dateisystem nicht, also starte eine Wiederherstellung sh. Hängen Sie dann das Root-Dateisystem ein ( /dev/vdbpassen Sie es in meinem Fall an Ihren Computer an) und beheben Sie die folgenden Probleme:
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
Korrigieren Sie nach dem Start die Berechtigungen der Dateien, für die keine 755-Berechtigungen vorgesehen sind, indem Sie sie mit einem anderen System vergleichen.
Fixierung durch Laufen pythonals init:
In grubBearbeiten Sie die Boot - Eintrag, halten Sie diese Zeit , um die root=Parameter ändern rozu rwund fügen Sie ein 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
Dann an der Python-Eingabeaufforderung:
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
Korrigieren Sie nach dem Booten erneut die Berechtigungen der Dateien, für die keine 755-Berechtigungen vorgesehen sind, indem Sie sie mit einem anderen System vergleichen.
/binIhnen in CHMOD oder die Dateien/binoder beide?