chmod -R 000 / bin에서 복구하는 방법? 그리고 지금은 그것을 다시 수정하거나 다른 시스템

그리고 지금은 그것을 다시 수정하거나 다른 시스템 프로그램을 사용할 수 없습니다. 운 좋게 이것은 내가 놀았 던 VM에 있지만 이것을 해결할 수있는 방법이 있습니까? 시스템은 Ubuntu Server 12.10입니다.

복구 모드로 다시 시작하려고했지만 불행히도 이제 시스템을 시작할 수있는 초기 상태 이후에 일부 프로그램에 권한을 부여하지 않아 시스템으로 부팅 할 수 없습니다. 이것이 내가 보는 것입니다.

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

이 후 컴퓨터가 중단됩니다.



답변

다른 깨끗한 OS를 부팅하고 파일 시스템을 마운트하고 권한을 수정하십시오.

손상된 파일 시스템이 VM에 있으면 호스트 시스템을 사용할 수 있고 작동해야합니다. 손상된 파일 시스템을 마운트하고 수정하십시오.

QEMU / KVM의 경우 예를 들어 nbd를 사용하여 파일 시스템을 마운트 할 수 있습니다 .


답변

로도 권한 비트가 설정 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에 회복 쉘을 얻기 위해 잘못된 루트 디렉토리를 통과 break=bottom하거나 break=init커널 매개 변수를 루트 파일 시스템이 마운트 된 후 다시 initramfs 당신에게 쉘을 제공하는 데비안 (읽기 전용 그러나)). 또는 라이브 CD 이미지에서 VM을 부팅하거나 VM 파일 시스템을 다른 사람이 제안한대로 호스트에 마운트하여 수정하십시오.

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=매개 변수 변화 rorw과를 추가 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 권한이없는 파일의 권한을 수정하십시오.


답변

파이썬 사용 🙂

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

/bin작업을 수행하기 위해 필요한 것은 없습니다 . 분명히, 나는 이것을 시도하지 않았다 …


답변

sudo chmod -R 744 /path-to-your-system/bin라이브 배포판에서 시도해 볼 수 있습니다 .


답변