Gerenciamento de Grupos e Usuários no Linux Material desenvolvido por Rafael Fernando Diorio Última revisão em 04/08/2013 www.diorio.com.br [email protected] Tópicos Introdução Arquivos de grupos e usuários Gerenciamento de grupos Gerenciamento de usuários Comandos úteis Introdução Assim como em outros SOs, o método de autenticação mais utilizado no Linux está associado a “logins” e “senhas” de acesso... Logins tipicamente referenciados a nomes de usuário e comumente organizados em grupos departamentais. Obs.: A conta destinada ao administrador Linux é a “root”. Internamente, essas contas de usuário e de grupo são vistas a partir de seus identificadores, denominados, respectivamente, UID e GID... Quanto menor o UID, mais direitos o usuário possui; ✔ A conta “root” possui UID igual a zero. Nesse contexto, o sistema fornece uma série de ferramentas destinadas ao gerenciamento de usuários e grupos no Linux. Arquivos de grupos e usuários Todos os usuários e grupos do sistema possuem informações armazenadas em arquivos específicos... Os arquivos que armazenam as informações de contas de grupo são: “/etc/group” (cadastro de grupos do sistema) E, “/etc/gshadow” (senhas dos grupos do sistema) De modo similar, os arquivos que armazenam as informações de contas de usuário são: “/etc/passwd” (cadastro de usuários do sistema) E, “/etc/shadow” (senhas dos usuários do sistema) Arquivos de usuários e grupos (cont.) Esse recurso de separar o cadastro do usuário/grupo do arquivo que armazena sua respectiva senha é denominado “senhas shadow”... Utilizado para aprimorar a segurança do sistema: ✔ ✔ Arquivos “/etc/passwd” e “/etc/group” podem ser lidos por todos; Arquivos “/etc/shadow” e “/etc/gshadow” podem ser lidos somente pelo “root”. Obs.: A utilização desse recurso (“senhas shadow”) é padrão nos Linux atuais. Se aplicável, pode-se habilitar ou desabilitar esse recurso através dos comandos “pwconv/grpconv” e “pwunconv/ grpunconv”, respectivamente. Arquivos de usuários e grupos (cont.) Quanto a sintaxe do arquivo de cadastro de grupos (“/etc/group”), temos: “grupo : password : GID : membros adicionais” Ex. 1: “root:x:0:” Ex. 2: “grp_informatica:x:500:rafael.diorio,joselito.diorio” Observações: Todo grupo possui um nome (“grupo”) e um identificador no sistema (“GID”); Se existente, sua senha é armazenada em “/etc/gshadow” e seus membros adicionais listados ao final de sua definição; Todo usuário pertence a um grupo primário do sistema. Arquivos de usuários e grupos (cont.) Quanto a sintaxe do arquivo de cadastro de usuários (“/etc/passwd”), temos: “login : password : UID : GID : comentário : home : shell” Ex. 1: “root:x:0:0:root:/root:/bin/bash” Ex. 2: “diorio:x:501:501:Rafael F. Diorio:/home/diorio:/bin/bash” Observações: Quanto menor o “UID”, mais privilégios o usuário possui; O “GID” refere-se ao grupo primário do usuário; Sem o recurso de “senhas shadow”, a senha do usuário seria armazenada (criptografada) no lugar do valor “x”; ✔ Se o “x” for removido, o usuário loga sem senha. Gerenciamento de grupos O modo mais comum para gerenciar grupos no Linux é através dos seguintes comandos: Comando “groupadd”: para adicionar grupos no sistema; Comando “groupdel”: para remover grupos do sistema; Comando “groupmod”: para modificar contas de grupos; E, comando “gpasswd”: para gerenciar os “/etc/group” e, quando aplicável, “/etc/gshadow”. arquivos Outra possibilidade é através da edição manual dos arquivos que armazenam as informações dos grupos do sistema... Arquivo “/etc/group”; E, arquivo “/etc/gshadow”. Gerenciamento de grupos: Adição, remoção e alteração A adição de grupos no Linux é comumente realizada através do comando “groupadd”... Ex.: “groupadd grp_informatica” Quanto à sua remoção, os grupos do Linux são comumente removidos através do comando “groupdel”... Ex.: “groupdel grp_informatica” Para modificações nas contas de grupo, utiliza-se o comando “groupmod”... Ex.: “groupmod informatica -n grp_informatica” Obs.: O comando acima renomeia o grupo “informatica” para “grp_informatica”. Gerenciamento de grupos: Senhas O comando utilizado para definir senhas aos grupos do sistema é o “gpasswd”... Ex.: gpasswd grp_informatica Quando presente, a senha do grupo é solicitada quando um usuário necessitar fazer parte, temporariamente, desse grupo com senha... Ex.: “newgrp grp_informatica” ou “sg grp_informatica”. Obs.: Para tal, o pacote “shadow-utils” deve estar instalado e atualizado no sistema. Vale ressaltar que essa alteração de grupo é temporária e só vale para a sessão atual do usuário. Gerenciamento de usuários O modo mais comum para gerenciar usuários Linux é através dos seguintes comandos: Comando “useradd”: para adicionar usuários no sistema; Comando “passwd”: para definir ou alterar senhas de usuários; Comando “usermod”: para modificar contas de usuários; E, comando “userdel”: para remover usuários do sistema. Outra possibilidade é através da edição manual dos arquivos que armazenam as informações das contas de usuário no sistema... “/etc/passwd”; E, “/etc/shadow” (além dos arquivos de grupos do sistema). Gerenciamento de usuários: Adição Um dos comandos mais utilizados para adicionar novos usuários ao sistema é o “useradd”... Ex. 1: “useradd joselito.diorio” Ex. 2: “useradd -m -g grp_informatica -c “Rafael Fernando Diorio” rafael.diorio” Obs.: Quanto aos parâmetros acima: ✔ “-m”: para criar o diretório pessoal do novo usuário; ✔ “-g”: para definir o grupo primário do novo usuário” ✔ ✔ E, “-c”: para especificar um comentário (nesse exemplo, o nome) para o novo usuário; Para outros parâmetros, vide “man useradd”. Gerenciamento de usuários: Adição (cont.) Se desejável, pode-se “customizar” os padrões de criação de novos usuários através dos seguintes arquivos do sistema: Arquivo “/etc/default/useradd”: permite definir configurações de padrões para o comando “useradd”; E, arquivo “/etc/login.defs”: permite definir configurações de padrões de login e senha para os novos usuários. Para definir o conteúdo do diretório pessoal dos novos usuários, pode-se customizar o diretório “/etc/skel”... Esse diretório representa o “diretório template” para os diretórios pessoais dos novos usuários. Gerenciamento de usuários: Adição (cont.) useradd /etc/passwd /etc/shadow /etc/group Usuário Linux /etc/default/useradd /etc/login.defs /etc/skel/ Visão geral: Arquivos e diretório consultados pelo comando “useradd”. Gerenciamento de usuários: Senhas As senhas dos usuários do sistema são gerenciadas, principalmente, através do comando “passwd”... Ex. 1: “passwd rafael.diorio” Ex. 2: “passwd -x 30 -w 10 rafael.diorio” Obs.: Quanto aos parâmetros acima: ✔ “-d”: para remover a senha do usuário; ✔ “-x dias”: para definir intervalos de expiração de senhas; ✔ E, “-w dias”: para exibir alertas de expiração de senhas; ✔ Para outros parâmetros, vide “man passwd”. Gerenciamento de usuários: Senhas (cont.) Para alterar informações de validade de senhas de usuários também pode-se utilizar o comando “chage”... Ex. 1: “chage -l rafael.diorio” Ex. 2: “chage -M 30 -W 10 rafael.diorio” Obs.: Quanto aos parâmetros acima: ✔ “-l”: para exibir informações de senha; ✔ “-M dias”: para definir intervalos de validade da senha; ✔ “-E data”: para expirar senha em “data” (YYYY-MM-DD); ✔ Para outros parâmetros, vide “man chage”. Gerenciamento de usuários: Alteração Para alterar informações de contas de usuário, pode-se utilizar o comando “usermod”... Ex. 1: “usermod -G grp_comercial,grp_financeiro rafael.diorio” Ex. 2: “usermod -L rafael.diorio” Ex. 3: “usermod -e 2012-08-01 rafael.diorio” Obs.: Quanto aos parâmetros acima: ✔ ✔ ✔ ✔ “-G”: para adicionar o usuário a outros grupos do sistema; “-L”: para bloquear a conta do usuário (utilize “-U” para desbloquear a conta em questão) “-e”: para expirar conta do usuário numa data específica (YYYY-MM-DD). Para outros parâmetros, vide “man usermod”. Gerenciamento de usuários: Remoção Para remover as contas de usuários do sistema, pode-se utilizar o comando “userdel”... Ex. 1: “userdel rafael.diorio” Ex. 2: “userdel -r joselito.diorio” Quanto ao parâmetro “-r” (acima), ele é utilizado para remover o diretório pessoal do usuário quando sua conta é excluída do sistema. Gerenciamento de usuários: Notificação Pode-se enviar mensagens aos usuários (conectados) no sistema através do comando “wall”... Ex.: wall “Aviso: Manutenção do sistema às 14:00hs.” Obs.: Com exceção as mensagens enviadas pelo “root”, podese desabilitar seu recebimento através do comando “mesg n”. ✔ “mesg y” ativa o recebimento de mensagens e “mesg” exibe o valor (“y” ou “n”) de “mesg”. Para enviar uma mensagem para um usuário específico pode-se utilizar o comando write <usuário> <terminal>... Ex: write rafael.diorio tty2 <ENTER> Seu acesso está sendo monitorado. <CTRL+C> Gerenciamento de usuários: Notificação (cont.) Outra notificação bastante comum é a exibição de mensagens após o login do usuário no sistema... Essas mensagens podem ser inseridas no arquivo “/etc/motd”... Ex.: “Aviso: Todos os acessos no sistema estão sendo auditados.” Para exibir mensagens antes do login dos usuários, pode-se utilizar os arquivos “/etc/issue” (acesso local) e “/etc/issue.net” (acesso remoto): Ex.: “Linux Authentication Server by Rafael Fernando Diorio” Obs.: Para acessos SSH, deve-se alterar a entrada “#Banner none” do arquivo “/etc/ssh/sshd_config” para “Banner /etc/issue.net” e “reiniciar” o serviço “sshd”. Comandos úteis Alguns comandos úteis no gerenciamento de grupos e usuários do sistema são: “id”: exibe UID e GID do usuário, bem como demais grupos que o usuário faz parte (se aplicável); “groups”: exibe os grupos que o usuário faz parte; “finger”: exibe diversas informações sobre o usuário, destacando login, shell, home, comentário e último acesso; “chfn”: altera informações de contas de usuário (informações exibidas pelo comando “finger”); “chsh”: altera o shell do usuário; “su -”: substitui usuário corrente por outro usuário (quando especificado) ou por “root”; Comandos úteis (cont.) Alguns comandos úteis no gerenciamento de grupos e usuários do sistema são (cont.): “who”: exibe os usuários atualmente logados no sistema; “w”: exibe os usuários atualmente logados no sistema, bem como o que estão fazendo; “last”: exibe os últimos logins (com “shutdowns”) efetuados no sistema; “vipw” e “vigr”: editores de texto (tipicamente utilizando “vi”) para a edição dos arquivos “passwd” e “group” de modo seguro (com “lock” para outras edições simultâneas); “pwck” e “grpck”: ferramentas para verificar a integridade dos arquivos de usuário (“passwd”) e grupos (“group”) do sistema. Dúvidas e/ou sugestões? Participe... questione... sugira... pratique... Aprimore seus conhecimentos e ajude a melhorar as nossas aulas! :-) Referências [1] CentOS Project em http://www.centos.org; [2] CentOS Documentation disponível em http://www.centos.org/docs; [3] Guia Foca/GNU Linux em http://www.guiafoca.org/; [4] Livro "Dominando Linux: Red Hat e Fedora" dos autores Bill Ball e Hoyt Duff. Editora Pearson - 2004; [5] Red Hat Enterprise Linux em http://www.redhat.com; [6] Red Hat Enterprise Linux Documentation disponível em http://www.redhat.com/docs/manuals/enterprise.