Como usar permissões somente leitura para evitar corrupção em um sistema de arquivos gravável?

Como usar permissões somente leitura para evitar corrupção em um sistema de arquivos gravável?

Estou desenvolvendo um sistema operacional Buildroot integrado para o Raspberry Pi. Este sistema será desligado simplesmente removendo a energia (não haverá temporizador de desligamento), portanto ele deve ser capaz de desligar sem danificar o cartão SD.

Atualmente, o sistema está usando squashfs somente leitura para seu sistema de arquivos raiz, e isso funciona bem. No entanto, falta flexibilidade porque, obviamente, a partição não pode ser gravada. A única maneira de instalar um novo software, por exemplo, é reconstruir todo o sistema operacional no Buildroot. Então, eu gostaria de mudar isso para tornar o sistema somente leituraquase o tempo todomas gravável em certas situações selecionadas.

Qual é a melhor maneira de utilizar as permissões do usuário para evitar todas as gravações no cartão SDexceto em certas circunstâncias controladas? Estou pensando que simplesmente farei uma operação chmod -R u-w /em todo o sistema de arquivos, evitando que o usuário escreva qualquer coisa em qualquer lugar. Então, para escrever algo, o usuário deve se autenticar com sudo.

Esta é uma abordagem robusta a ser adotada?

Um problema que posso prever é que os processos executados pelo sistema operacional na inicialização serão executados como root e, portanto, terão permissões de gravação. Eu precisaria encontrar uma maneira de impedir que o sistema operacional grave qualquer coisa no FS raiz, a menos que seja explicitamente comandado pelo usuário.

Eu poderia ajustar os scripts de inicialização dos sistemas para que eles fossem executados como usuários não privilegiados - alguém já fez isso antes? É possível iniciar processos do sistema como um usuário diferente de root?

informação relacionada