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

Origem: Wikilivros, livros abertos por um mundo aberto.
Saltar para a navegação Saltar para a pesquisa

Restrições de acesso a programas/diretórios/arquivos usando grupos[editar | editar código-fonte]

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:


     find / -group nome_do_grupo