
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?