Como executar o fsck na inicialização após uma falha sem a senha de root?

1

quando a estação de trabalho Red Hat 5.x de um usuário trava e deixa seus sistemas de arquivos com erros, na próxima inicialização, ele solicita a senha root para entrar no modo único e executar o fsck manualmente.

Isso é irritante porque o usuário não pode usar sua estação de trabalho e precisamos enviar alguém apenas para executar o fsck.

Os usuários não armazenam nenhum dado valioso em suas estações de trabalho, então existe uma maneira de configurar esse fsck para ser executado automaticamente em erros sem qualquer senha?

    
por Benoît 08.07.2011 / 16:53

6 respostas

1

O que provavelmente está mais próximo da maneira "oficial" de fazer isso, normalmente não é recomendado (por uma boa razão!):

echo ' -y ' > /fsckoptions
chattr +i /fsckoptions

Todas as versões de /etc/rc.d/rc.sysinit que verificamos adicionam o conteúdo de /fsckoptions à variável $fsckoptions antes de executar fsck . chattr +i garante que nada seja alterado automaticamente.

    
por 03.01.2017 / 16:55
1

Todas essas verificações pré-vôo são controladas por uma imagem ramdisk inicial (opção initrd no grub.conf) criada pelo sistema operacional, que faz um teste rápido para erros no sistema de arquivos e cai no modo de usuário único se houver erros. detectou. Sua jornada para alterar esse comportamento para executar fsck -y sem uma senha começa descompactando a imagem initrd incluída no RPM do kernel. Infelizmente você provavelmente terá que fazer isso após cada atualização do sistema (como redhat um novo initrd com cada kernel (ou mais especificamente gera um novo usando o mkinitcpio baseado em seu hardware)).

Temos o mesmo problema em nosso ambiente, obrigado por essa ideia. Se eu tiver tempo para investigar isso ou resolvê-lo, atualizarei este post.

    
por 08.07.2011 / 17:36
1

... acho que encontrei. Em /etc/rc.d/rc.sysinit, há algumas linhas que se parecem com:

if ! [[ " $fsckoptions" =~ " -y" ]]; then
        fsckoptions="-a $fsckoptions"
fi
  • que, se eu os estiver lendo corretamente, adiciona -a às opções fsck se nenhum -y estiver presente em $ fsckoptions de antes (um arquivo que pode não existir). Atualizei um pouco:
if ! [[ " $fsckoptions" =~ " -y" ]]; then
        if ! [[ " $fsckoptions" =~ " -a" ]]; then
                if ! [[ " $fsckoptions" =~ " -p" ]]; then
                        fsckoptions="-y $fsckoptions"
                fi
        fi
fi
  • que é baseado na linha de comando do e2fsck: Se ele não incluir a -y, -a ou -p, ele adicionará -y.

Claro, o truque é testar a coisa boba; Eu não sei como forçar um erro do sistema de arquivos que faria com que o fsck automático normal solicitasse a senha do root para que eu possa saber se realmente funcionou ou não.

    
por 13.09.2013 / 22:04
0

Users don't store any valuable data on their workstations, so is there a way to configure this fsck to automatically run on errors without any password ?

Tudo isso é controlado por /etc/rc.d/rc.sysinit , que é apenas um script de shell. Você pode modificar isso para atender às suas necessidades (embora seja necessário ter cuidado para que suas alterações não sejam perdidas no caso de uma atualização de pacote). Procure lugares onde o script chama sulogin .

Ao analisar este script, parece que você removeria a seguinte linha:

touch /.autofsck &> /dev/null

O sistema não executaria mais um fsck na inicialização a seguir. Se você estiver usando ext3 (ou ext4 ), geralmente não precisará executar fsck.

    
por 08.07.2011 / 17:15
0

Não sei como ignorar a senha para isso. Se você não está preocupado com a integridade do sistema de arquivos, você pode ignorar o fsck completamente anexando fastboot à sua linha do kernel em seu grub.conf.

    
por 08.07.2011 / 17:17
0

Outra maneira de contornar o problema: no GRUB / LILO, adicione init=/bin/bash ao final da linha de comando. Isso permitirá que você ignore o prompt de sulogin que você está recebendo para o fsck.

    
por 08.07.2011 / 17:53