E agora não consigo fazer o chmod de volta .. ou usar qualquer um dos meus outros programas de sistema. Felizmente, isso está em uma VM com a qual estive brincando, mas existe alguma maneira de resolver isso? O sistema é o Ubuntu Server 12.10.
Eu tentei reiniciar no modo de recuperação, infelizmente agora não consigo inicializar o sistema devido a permissões que não concedem alguns programas após a disponibilidade do init-bottom para executar - o sistema simplesmente trava. Isto é o que eu vejo:
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
Depois disso, o computador trava.
/bin
você chmoded ou os arquivos/bin
ou ambos?Respostas:
Inicialize outro sistema operacional limpo, monte o sistema de arquivos e corrija as permissões.
Como seu sistema de arquivos quebrado vive em uma VM, você deve ter seu sistema host disponível e funcionando. Monte seu sistema de arquivos quebrado e corrija-o.
No caso de QEMU / KVM, você pode, por exemplo, montar o sistema de arquivos usando o nbd .
fonte
/boot
partição dessa VM. Tente e localize o sistema de arquivos raiz. Se estiver no LVM, executevgchange -ay
depois de conectar onbd
para ativá-lo.Mesmo assim
root
, você não pode executar arquivos semx
bits de permissão definidos. O que você pode fazer é chamáld.so
-lo (desde que sejam executáveis vinculados dinamicamente):Use aquele que corresponde à arquitetura do
chmod
executável. No meu caso, o seguintex86_64
:Ou ligue para algo em
/usr/bin
ou em outro lugar para fazer ochmod
comoperl
:Cuidado ao restaurar permissões que alguns arquivos
/bin
gostammount
ousu
devem ter permissões diferentes de 0755.Se você reiniciou, no entanto, talvez não seja capaz de chegar ao ponto em que pode executar
perl
ou, nold.so
entanto. Você pode consertar as coisas doinitramfs
porém (passe um diretório raiz incorreto para obter um shell de recuperação no initramfs; veja também o parâmetrobreak=bottom
oubreak=init
kernel no Debian, para o initramfs fornecer um shell depois que o sistema de arquivos raiz foi montado (somente leitura) Apesar)). Ou inicialize sua VM a partir de uma imagem de CD ativo ou corrija montando o sistema de arquivos da VM no host, conforme sugerido por outros.Corrigindo a maneira initramfs:
Em
grub
, edite a entrada de inicialização e remova oroot=
parâmetro dolinux
comando:Ctrl-Xpara inicializar. O initramfs do Ubuntu não encontra o sistema de arquivos raiz, então inicie uma recuperação
sh
. Em seguida, monte o sistema de arquivos raiz (no meu caso/dev/vdb
, adapte-se à sua máquina) e corrija as coisas lá:Depois de inicializado, corrija as permissões dos arquivos que não devem ter 755 permissões comparando com outro sistema.
Correção executando
python
comoinit
:Em
grub
, edite a entrada de inicialização, desta vez mantenha oroot=
parâmetro, alterero
pararw
e adicione uminit=/usr/bin/python
:Em seguida, no prompt do python:
Novamente, uma vez inicializado, corrija as permissões dos arquivos que não devem ter 755 permissões comparando com outro sistema.
fonte
already try to reboot
caso: inicialize em um CD ao vivo, monte rw a partição que contém / bin echmod 755 /bin
(e arquivos dentro se eles também foram alterados). Mas depois, verifique se todos os arquivos são a permissão para a direita (dependendo do seu distrib linux, você provavelmente pode verificar / bin contra o pacote original)ld.so
, talvez em algum diretório como/lib/x86_64-linux-gnu
.os.execl
eexec
são para execução, eles não bifurcam um processo, apenas substituem o executável no mesmo processo , para que tudo seja feito no pid 1. O processo 1 é executado inicialmente epython
, em seguidash
, entãoinit
.Use python :)
Isso não precisa de nada
/bin
para fazer seu trabalho. Obviamente, eu não tentei isso ...fonte
chmod
é uma chamada do sistema, chamada pelochmod
programa e também pelachmod
função em python / perl / ruby etc. shells chamam ochmod
utilitário.chmod
construídas. Esse é o tipo de situação em que conchas comosash
são úteis. Ele está vinculado estaticamente e possui a maioria dos comandos de recuperação como ochmod
builtin (portanto, não depende de mais nada). Ele geralmente fica/sbin
parado, embora não prejudique a obtenção de cópias extras em todos os sistemas de arquivos e pode ser usado em combinação com o memlockd.zsh
eksh93
tenha um chmod embutido (embora não esteja ativado por padrão).Você pode tentar
sudo chmod -R 744 /path-to-your-system/bin
em uma distribuição ao vivo.fonte