Está fazendo o diretório / etc ler apenas uma idéia ruim?

6

Eu tenho uma configuração de sistema embarcada construída usando buildroot e usando o initramfs. Ele é executado em um dispositivo flash compacto no qual eu criei partições ext3 separadas para montar os diretórios /etc/ e /var , bem como o diretório personalizado para armazenar dados. Não tenho certeza se isso é uma boa ideia ou não, mas preciso acessar a saída do sytem log e também preciso modificar os arquivos em /etc , já que eles exigem um endereço IP estático para ser configurado aqui. Quando o arquivo /etc/network/interfaces tiver sido editado para definir o IP, não preciso mais editar manualmente nada em /etc , por isso fiquei me perguntando se fazer essa montagem como somente leitura quando os dispositivos estiverem no campo é uma boa ideia ou se é possível que outros aplicativos no meu sistema precisem gravar em arquivos em /etc ? Eu corro um sistema bastante minimalista, realmente apenas dropbear e busybox estão em execução (assim como o meu aplicativo controlador personalizado que controla os dispositivos). Eu olhei em vários fóruns e sites e essa idéia não parece muito controversa, mas meu conhecimento é bastante limitado. Eu percebo que eu poderia tentar montá-lo apenas como leitura, mas parece possível que as coisas possam quebrar silenciosamente, então é uma má idéia?

    
por mathematician1975 29.01.2013 / 15:28

3 respostas

5

Um /etc somente leitura é cada vez mais comum em dispositivos incorporados. Um /etc raramente alterado também é cada vez mais comum em instalações de desktop e servidor, com arquivos como /etc/mtab e /etc/resolv.conf localizados em outro sistema de arquivos e vinculados simbolicamente em /etc (para que arquivos em /etc precisem ser modificados ao instalar o software ou quando a configuração do computador muda, mas não ao montar uma unidade USB ou ao conectar em um laptop a uma rede diferente).

O padrão emergente é ter um sistema de arquivos tmpfs montado em /run e links simbólicos em /etc like

/etc/mtab -> /run/mtab
/etc/resolv.conf -> /etc/resolvconf/run/resolv.conf

Sistemas existentes ou incorporados podem ter o tmpfs montado em um local diferente, como /dev/shm ou /lib/init/rw ou /var/run .

O problema em tornar /etc somente leitura é que isso bloqueia o conjunto de arquivos que você poderá modificar.

Uma abordagem diferente que evita esse problema é tornar o sistema de arquivos raiz um initramfs. Este é um arquivo armazenado ao lado da imagem do kernel e carregado pelo bootloader. Ele é descompactado na RAM e se torna a raiz da raiz do sistema de arquivos. Se você for deixar o initramfs ficar por perto, ele não deve ser muito grande (porque está usando RAM preciosa), mas um binário do BusyBox mais alguns arquivos de configuração podem ser um uso aceitável da RAM.

Outra abordagem é ter um sistema de arquivos raiz somente leitura mais um conjunto de união de um sistema de arquivos de leitura / gravação.

    
por 30.01.2013 / 01:52
4

Isso é específico da distribuição, mas algumas coisas que consigo pensar:

/etc/mtab , /etc/adjtime e /etc/resolv.conf são arquivos típicos que podem precisar ser modificados. /etc/motd e /etc/issue podem ser também. O cups atualiza alguns de seus arquivos de configuração também. Algumas coisas podem também criar um arquivo nologin em /etc .

Na maioria dos casos, você deve poder substituir o arquivo por um link simbólico para um sob /var .

    
por 29.01.2013 / 15:50
0

Apenas verifique se existe nada lá que tenha sido modificado. Os últimos tempos de modificação (conforme relatado por ls (1)) devem ser suficientes. Muitas distribuições atuais do Linux já devem estar lá (ou quase). Você pode tentar torná-lo somente para leitura e procurar por qualquer coisa que reclamar nos registros.

OTOH, / etc é bastante pequeno, portanto, economizar em espaço R / W em sua conta não faz muito sentido.

    
por 29.01.2013 / 15:53