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 comandols -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 eo
= outros,a
= todos (usuário, grupo e outros),+
adiciona uma permissão,-
remove uma permissão, er
,w
ex
são as permissões que já expliquei. O primeiro grupo pode ser uma combinação deugo
oua
, no segundo+
ou-
, e no terceiro uma combinação derwx
. 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.