O Linux foi desenvolvido desde o começo para trabalhar em rede. Por isso, ele possui suporte a usuários e grupos, que garantem uma organização e segurança ao sistema. Neste artigo veremos os conceitos de usuários e grupos, bem como os métodos para manipulá-los.
Por padrão, sistemas GNU/Linux possuem alguns grupos utilizados para permitir o acesso a determinados serviços e privilégios no sistema. Esse grupos estão listados no arquivo /etc/group e são eles:
root: Grupo do superusuário;
bin e daemon: Programas executados;
sys: Grupo do sistema;
adm: Grupo administrativo;
tty: Acesso a terminais;
disk: Acesso à dispositivos de disco;
lp: Grupo da impressora;
mem e kmem: Acesso à memória do kernel;
wheel: Usuários com privilégios próximos ao root;
mail: Usado por utilitários de e-mail;
news: Usado por utilitários de Usenet news;
uucp: Usado pela rede UUCP;
man: Usado para acesso a páginas de manual;
games: Grupo para guardar recordes de jogos;
gopher: Usado pelo utilitário Gopher;
dip: Grupo dial-up (PPP, SLIP);
ftp: Grupo do daemon FTP;
nobody: Grupo de baixa segurança;
users: Grupo padrão de usuários em vários sistemas;
floppy: Grupo para acesso a discos floppy.
Cada entrada possui o nome do grupo, senha e o ID numérico do grupo (GID).
Criando um novo grupo
Para criar um novo grupo no sistema, utilize o comando groupadd. Sua sintaxe é a seguinte:
# groupadd [-g GID] [-o] [grupo]
Os parâmetros -g e -o são opcionais. Use o parâmetro -g pra especificar manualmente o GID do novo grupo. Utilize valores maiores que 500 e que já não estejam sendo utilizados por nenhum outro grupo. Se quiser usar um GID já utilizado por outro grupo, utilize a opção -o.
Para adicionar usuários ao grupo recém criado, a maneira mais simples é editar diretamente o arquivo /etc/group e adicionar os nomes dos usuários ao final da entrada do grupo, separando-os por vírgula.
Para colocar, por exemplo, os usuários "carlos" e "vitoria" no grupo FG, a entrada ficaria assim:
FG:x:500:carlos,vitoria
Pode-se checar o resultado com os comandos id ou groups. O id exibe na tela as informações sobre a conta do usuário. Seu uso é simples:
$ id [login]
Para ver as informações do usuário "davidson":
$ id davidson
uid=1000(davidson) gid=1000(davidson)
grupos=1000(davidson),20(dialout),24(cdrom),25(floppy),29(audio),44(video)
O comando groups exibe apenas os grupos ao qual o usuário pertence:
$ groups davidson
davidson : davidson dialout cdrom floppy audio video
Mudando de grupo
Todas as ações feitas por um usuário são associadas ao seu UID e GID primários. Assim, mesmo que o usuário pertença a mais de um grupo, ele responderá por apenas um grupo de cada vez. Isto pode ser um problema caso o usuário queira criar um arquivo pertencente a um dos outros grupos que ele faça parte. O comando newgrp possibilita que o usuário mude temporariamente de grupo principal.
Sua sintaxe é a seguinte:
$ newgrp [-] [grupo]
O hífen (-) serve para reinicializar as variáveis de ambiente do usuário.
Assim, se o usuário "vitoria" do exemplo anterior utilizou newgrp para ingressar no grupo FG, quando ela criar um arquivo e der o comando "ls -l arquivo", verá que este pertencerá ao grupo FG:
$ newgrp FG
$ touch arquivo
$ ls -l arquivo
-rw-r--r-- 1 vitoria FG 10332 Jan 20 16:06 arquivo
Excluindo grupos
Para se excluir um grupo usa-se o comando groupdel com a seguinte sintaxe:
# groupdel [grupo]
Após excluir um grupo, deve-se checar manualmente os sistemas de arquivos para garantir que nenhum arquivo permaneça associado ao grupo. Para isto utiliza-se o comando find:
# find / -gid [GID do grupo excluído]
Depois basta trocar o grupo dos arquivos encontrados.
Não se deve remover o grupo primário de um grupo de usuários existentes. Deve-se antes remover os usuários, para então remover o grupo.
[1] Comentário enviado por fabio em 04/11/2005 - 08:13h
Meus parabéns Davidson, apesar de se tratar de um artigo sobre fundamentos do sistema, por sua riqueza de detalhes, até mesmo pra usuários avançados esse artigo pode trazer algumas novidades.
[12] Comentário enviado por victormredes em 29/03/2012 - 22:02h
No caso para exclusão de usuário, os diretórios criados por um determinado usuário, que vem depois a ser excluido do sistema, os diretórios ficam com o UID antigo por exemplo 1001, e o próximo a ser cadastrado vai torna-se dono automaticamente, pois vai pegar o UID 1001. Tem como alterar isso? para que quando for excluso, o root fique dono do diretório? utilizei o parâmetro -r mas ele só apaga a pasta do /home.