Transformar uma distro em um sistema "embarcado"

Olá, @ricardocenteno.

Pode ser que haja alguma outra maneira de se fazer isso, mas o que eu tentaria é ajustar as permissões dos arquivos de tal forma que um determinado grupo só pudesse executar alguns programas específicos. Ou modificar a variável “PATH” (que determina os diretórios onde estão os executáveis) para usar uma com apenas alguns programas.

Para isso, é necessário ter em mente alguns conceitos:

  • Permissões: todo arquivo/diretório possui 3 conjuntos de permissões: Usuário (dono), Grupo e Outros, e que as permissões são: Ler ([r]ead), Escrever ([w]rite) e Executar (e[x]ecute). Ou seja, digamos que as permissões de um arquivo seja: -rwx--x--- root controlado
    Então esse arquivo pertence ao usuário “root” e ao grupo “controlado”, pode ser lido, escrito (modificado) e executado pelo root, os membros do grupo “controlado” podem apenas executar o arquivo, e os demais não podem fazer nada. Você pode verificar isso com o comando ls -l *
    Obs.: O primeiro traço é significa apenas que é um arquivo. Diretórios possuem um “d” na frente.

  • Diretórios dos binários: Os diretórios dos executáveis estão espalhados pelo sistema, e estão separados pelo tipo dos programas. /bin armazena os binários destinados ao usuário root e para a administração do sistema, /usr/bin e /usr/local/bin estão os programas destinados aos usuários comuns, e ${HOME}/.local/bin estão os programas pertencentes à um único usuário (normalmente compilado e instalado manualmente).

  • Variável PATH: Essa variável contém um lista de diretórios separados pela caractere “:”, e determina em quais diretórios aquele usuário deve buscar os binários. É bom salientar que ela não impede do usuário de executar manualmente os binários de outros diretórios. Você pode verificar isso digitando “echo ${PATH}”.

Sabendo disso, uma ideia seria modificar as permissões dos binários (ou apenas do diretório que contém eles, em alguns casos mais específicos como o /bin) para restringir algumas coisas para Grupo, deixando apenas a permissão de executar para determinados programa, e tudo para Outros, e adicionar os usuários nesse grupo de controle (Isso pode ajudar).
Outra ideia, é restringir diretamente o acesso de grupo/outros à esses diretórios, criar links de alguns programas em um outro diretório e modificar a variável PATH padrão para conter apenas esse diretório (dá para definir um padrão que será usado para todos os usuários. Isso pode ajudar (bash - How to permanently set $PATH on Linux/Unix - Stack Overflow)).

Para isso, você pode usar o próprio navegador de arquivos (executando-o como root/sudo) para modificar as permissões usando o painel de detalhes do item ou os comandos chown e chmod.
O chown modifica a posse do arquivo/diretório e o chmod modifica as permissões.
Os principais parâmetros dos dois são (o que estiver entre colchetes é opcional):

  • chown [-R] <usuario>:<grupo> <arquivos>:
    Dá a posse do arquivo para um determinado e um , e o “-R” é para modificar recursivamente todos os arquivos de um diretórios.
  • chmod [-R] {augo}{+|-}{rwx} <arquivos>:
    u = usuário, g = grupo e o = outros, a = todos (usuário, grupo e outros), + adiciona uma permissão, - remove uma permissão, e r, we x são as permissões que já expliquei. O primeiro grupo pode ser uma combinação de ugo ou a, no segundo + ou -, e no terceiro uma combinação de rwx. Então, alguns exemplos:
    • chmod go-x /usr/local/bin/gimp: remove a permissão de execução para o grupo e outros do programa GIMP.
    • chmod a+r /usr/local/bin/gimp: adiciona a permissão de leitura para todos os usuários.

Eu recomendo testar isso tudo em uma máquina virtual, e depois aplicar na máquina real.