# Guia do Linux/Avançado/Restrições de acesso, recursos e serviços/Restrições de acesso a programas/diretórios/arquivos usando grupos
## Restrições de acesso a programas/diretórios/arquivos usando grupos

Usuários podem ter o acesso liberado a diretórios/arquivos execução de programas de acordo com o grupo que pertencem. Este é um recurso valioso na administração de sistemas Unix que se bem usado, aumenta as restrições de acesso e segurança no acesso/utilização de programas em um ambiente de trabalho. Usuários de sistema tendem a usar o usuário root para fazer tarefas como conexão com internet, utilização da placa de som, modem, etc. e as vezes nem sabem que isso pode ser feito através do mesmo usuário adicionando este a um grupo específico.
Esta tarefa pode ser feita com o comando adduser usuário grupo ou editando manualmente os arquivos /etc/group e /etc/gshadow. Podemos ter as seguintes situações facilitadas com o uso de grupos:
* Usar a placa de som. Os dispositivos usados pela placa de som como /dev/audio, /dev/dsp, /dev/sndstat, etc. normalmente tem permissão leitura/gravação para o usuário root e grupo audio (cheque com o comando ls -la /dev/audio). Para autorizar determinados usuários usar a placa de som basta adiciona-los neste grupo: adduser usuario audio.
* Conectar a Internet. Normalmente o utilitário ppp tem as permissões SUID root e grupo dip. Adicionamos o usuário a este grupo: adduser usuario dip. Agora ele poderá conectar/desconectar a internet sem a intervenção do usuário root.
OBS Certamente o usuário terá acesso aos arquivos de configuração da discagem do ppp e consequentemente a senha de conexão internet, e esta senha é a mesma usada no e-mail primário do provedor (com o mesmo nome da conta). Esta mesma situação pode acontecer com outros programas que autorize o acesso a grupos, é importante que conheça bem as permissões do programa e entender se existem riscos.
* Utilizar o modem. Um bom grupo para permitir a utilização do modem é dialout. O dispositivo utilizado pelo modem (não seu link) deve ter permissões leitura/gravação para o usuário root e grupo dialout. Cadastrando o usuário neste grupo autorizará a utilização do modem: adduser usuario dialout.
* Permitir que diversos usuários compartilhem um mesmo diretório. Isto é útil quando muitas pessoas estão desenvolvendo um mesmo projeto. Siga estes passos:
** Crie um novo grupo no sistema: groupadd gp1, a opção -g permite selecionar manualmente a GID. Opcionalmente você poderá usar um grupo já existente no sistema (veja o arquivo /etc/group).
** Crie o diretório que será usado para armazenar os arquivos deste grupo de usuários: mkdir projeto1).
** Mude o dono/grupo do diretório: chown root.gp1 projeto1/
** De permissões de leitura/gravação para o dono/grupo do diretório, vamos também incluir a permissão SGID para que todos os arquivos criados dentro deste diretório pertençam ao mesmo grupo e não ao grupo primário do usuário, assim todos os usuários terão acesso: chmod 2770 projeto1
** Agora cadastre os usuários que deverão ter acesso ao diretório projeto1/ no grupo gp1, somente estes usuários e o root terão acesso ao diretório (permissões 2770).
** É interessante também mudar a "umask" do usuário de 022 para 002 (ou equivalente) para que os novos arquivos criados tenham permissão de leitura/gravação para o grupo gp1. Caso contrário, lembre-se de modificar as permissões de seus arquivos manualmente. Um ótimo comando para fazer isso (sem afetar diretórios) é: find . -type f -user usuario1 -exec chmod 0660 \{\} \;. Este comando parece estranho mas é excelente! um chmod -R 0660 afetaria até os diretórios, imagine o caos.
A maioria das distribuições Linux vem com uma boa política de grupos para permitir um controle eficaz de recurso. Se você quer saber quais arquivos em seu sistema pertencem a determinado grupo (útil para saber o que o usuário terá acesso se adiciona-lo Ã quele grupo) execute o comando: