| Red Hat Enterprise Linux 4: Introdução à Administração de Sistemas | ||
|---|---|---|
| Anterior | Capítulo 6. Administrando Contas de Usuário e Acesso a Recursos | Próxima |
As seções seguintes abordam as diversas funcionalidades específicas do Red Hat Enterprise Linux, relacionadas à administração de contas de usuário e recursos associados.
Sob o Red Hat Enterprise Linux, um usuário pode se autenticar no sistema e usar qualquer aplicação ou arquivo que tenha permissão para acessar, após a criação de uma conta de usuário normal. O Red Hat Enterprise Linux determina se um usuário ou grupo pode acessar estes recursos baseado nas permissões atribuídas a eles.
Há três tipos diferentes de permissões para arquivos, diretórios e aplicações. Estas permissões são usadas para controlar os tipos de acesso permitidos. São usados símbolos diferentes de um caractere cada para descrever cada permissão em uma listagem de diretórios. Os seguintes símbolos são usados:
r — Indica que uma determinada categoria de usuários pode ler (read) o arquivo.
w — Indica que uma determinada categoria de usuários pode gravar/escrever (write) no arquivo.
x — Indica que uma determinada categoria de usuários pode executar (execute) o conteúdo de um arquivo.
Um quarto símbolo (-) indica que nenhum acesso é permitido.
Cada uma das três permissões é atribuída a três categorias diferentes de usuários. As categorias são:
proprietário (owner) — O proprietário do arquivo ou aplicação.
grupo (group) — O grupo que detém o arquivo ou aplicação.
todos (everyone) — Todos os usuários com acesso ao sistema.
Conforme exposto anteriormente, é possível visualizar as permissões de um arquivo invocando uma listagem de formato longo com o comando ls -l. Por exemplo: se o usuário juan criar um arquivo executável chamado foo, o output do comando ls -l foo seria parecido com:
-rwxrwxr-x 1 juan juan 0 Sep 26 12:25 foo |
As permissões deste arquivo estão listadas no início da linha, começando com rwx. O primeiro conjunto de símbolos define o acesso do proprietário — neste exemplo, o proprietário juan tem acesso total e pode ler (read), gravar (write) e executar (execute) o arquivo. O próximo conjunto de símbolos rwx define o acesso do grupo (novamente, acesso total), enquanto o último conjunto de símbolos define os tipos de acesso para todos os outros usuários. Aqui, todos os outros usuários podem ler (read) e executar (execute) o arquivo, mas não podem modificá-lo de maneira alguma.
Um ponto importante para ter em mente em relação às permissões e contas de usuário é que toda aplicação que roda no Red Hat Enterprise Linux, roda no contexto de um usuário específico. Isto significa que, se o usuário juan inicia uma aplicação, ela roda usando o contexto do usuário juan. No entanto, em alguns casos a aplicação pode precisar de um nível de acesso mais privilegiado para completar a tarefa. Este tipo de aplicação inclui aquelas que editam configurações do sistema ou autenticam usuários. Por esta razão, foram criadas permissões especiais.
Há três tipos de permissões especiais no Red Hat Enterprise Linux:
setuid — usada somente para aplicações, esta permissão indica que a aplicação deve rodar como o proprietário do arquivo e não como o usuário executando a aplicação. É indicado pelo caractere s no lugar do x na categoria proprietário. Se o proprietário do arquivo não tem permissões para executar, o S torna-se maiúsculo para refletir este fato.
setgid — usado principalmente para aplicações, esta permissão indica que a aplicação deve rodar como o grupo que detém o arquivo, e não como o grupo do usuário executando a aplicação.
Se aplicada a um diretório, todos os arquivos criados dentro do diretório são de propriedade do grupo que detém o diretório, e não do grupo do usuário criando o arquivo. A permissão setgid é indicada pelo caractere s no lugar do x na categoria grupo. Se o grupo proprietário do arquivo não tem permissão para executar, o S torna-se maiúsculo para refletir este fato.
sticky bit — usado principalmente em diretórios, este bit dita que um arquivo criado no diretório pode ser removido somente pelo usuário que criou o arquivo. É indicado pelo caractere t no lugar do x na categoria todos (everyone). Se a categoria todos não tem permissão para executar, o T torna-se maiúsculo para refletir este fato.
Sob o Red Hat Enterprise Linux, o sticky bit é definido por default no diretório /tmp/ exatamente por este motivo.
No Red Hat Enterprise Linux, as contas de usuário e nomes dos grupos são usadas principalmente para a conveniência das pessoas. Internamente, o sistema usa identificadores numéricos. Para os usuários, este identificador é conhecido como UID, enquanto que para os grupos, o identificador é conhecido como GID. Os programas que disponibilizam as informações do usuário ou grupo aos usuários traduzem os valores UID/GID para seus paralelos mais legíveis por humanos.
![]() | Importante |
|---|---|
UIDs e GIDs devem ser globalmente únicos dentro da empresa, se você pretende compartilhar arquivos através da rede. Caso contrário, quaisquer controles de acesso que você tente implantar não funcionarão apropriadamente, já que são baseados nos UIDs e GIDs, e não nos nomes de usuários e grupos. Especificamente, se os arquivos /etc/passwd e /etc/group de um servidor de arquivos e de uma estação de trabalho de um usuário diferem nos UIDs ou GIDs que contêm, a atribuição inapropriada de permissões pode acarretar em problemas de segurança. Por exemplo: se o usuário juan tem um UID de 500 em um computador, os arquivos que juan criar num servidor de arquivos terão o UID 500 no proprietário. Entretanto, se o usuário bob se autenticar localmente ao servidor de arquivos (ou mesmo num outro computador), e a conta do bob também tiver um UID de 500, bob terá acesso total aos arquivos de juan e vice-versa. Consequentemente, as colisões de UID e GID devem ser evitadas a todo custo. |
Há duas instâncias nas quais o valor numérico corrente de um UID ou GID tem algum significado específico. Um UID e GID de zero (0) são usados para o usuário root e são tratados especialmente pelo Red Hat Enterprise Linux — o acesso total é atribuído automaticamente.
A segunda instância é que UIDs e GIDs abaixo de 500 são reservados para uso do sistema. Ao contrário do UID/GID zero (0), UIDs e GIDs abaixo de 400 não são tratados especialmente pelo Red Hat Enterprise Linux. No entanto, estes UIDs/GIDs nunca devem ser atribuídos a um usuário, já que provavelmente algum componente do sistema usa ou usará estes UIDs/GIDs am algum momento no futuro. Para mais informações sobre estes usuários e grupos padrão, consulte o capítulo Usuários e Grupos no Guia de Referência do Red Hat Enterprise Linux.
Quando são adicionadas novas contas de usuários usando as ferramentas padrão de criação de usuários do Red Hat Enterprise Linux, estas contas recebem os primeiros UID e GID disponíveis a partir de 500. O próximo usuário novo recebe o UID/GID 501, seguido pelo UID/GID 502 e assim por diante.
Mais adiante ainda neste capítulo abordamos uma breve descrição das diversas ferramentas de criação de usuários disponíveis sob o Red Hat Enterprise Linux. Mas, antes de rever estas ferramentas, a próxima seção aborda os arquivos que o Red Hat Enterprise Linux usa para definir as contas e grupos do sistema.
No Red Hat Enterprise Linux, as informações sobre contas de usuário e grupos são armazenadas em diversos arquivos texto dentro do diretório /etc/. Quando um administrador de sistemas cria novas contas de usuário, é necessário editar estes arquivos manualmente ou usar aplicações para efetuar as alterações necessárias.
A seção seguinte documenta os arquivos do diretório /etc/ que armazenam informações sobre usuários e grupos no Red Hat Enterprise Linux.
O arquivo /etc/passwd pode ser lido por todos e contém uma lista de usuários, cada um numa linha separada. Em cada linha, há uma lista delimitada por dois pontos contendo as seguintes informações:
Noime de usuário (username) — O nome que o usuário digita ao se autenticar no sistema.
Senha (password) — Contém a senha criptografada (ou um x se estiver usando senhas shadow — confira mais detalhes posteriormente).
ID do usuário (UID) — O equivalente numérico do nome de usuário, referenciado pelo sistema e aplicações ao determinar privilégios de acesso.
ID do grupo (GID) — O equivalente numérico do nome do grupo principal, referenciado pelo sistema e aplicações ao determinar privilégios de acesso.
GECOS — Nomeado por motivos históricos, o campo GECOS[1] é opcional e é usado para armazenar informações extras (como o nome completo do usuário). Múltiplas entradas podem ser armazenadas aqui na lista delimitada por dois pontos. Utilitários como o finger acessam este campo para prover informações adicionais do usuário.
Diretório home — A localização absoluta do diretório home do usuário, tal como /home/juan/.
Shell — O programa iniciado automaticamente sempre que um usuário se autentica. É, geralmente, um interpretador de comandos (frequentemente chamado de shell). No Red Hat Enterprise Linux, o valor default é /bin/bash. Se o campo for deixado em branco, /bin/sh é usado. Se for configurado para um arquivo inexistente, o usuário não poderá se autenticar no sistema.
Aqui está um exemplo de uma entrada do /etc/passwd:
root:x:0:0:root:/root:/bin/bash |
Esta linha mostra que o usuário root tem uma senha shadow, assim como um UID e GID de 0. O usuário root tem /root/ como um diretório home, e usa /bin/bash para uma shell.
Para mais informações sobre o /etc/passwd, veja a página man do passwd(5).
Como o arquivo /etc/passwd deve ser legível por todos (world-readable - a principal razão é que este arquivo é usado para efetuar a tradução do UID para o nome do usuário), há um risco envolvido em armazenar a senha de todos no /etc/passwd. É verdade que as senhas são criptografadas, mas é possível executar ataques contra senhas se a senha criptografada estiver disponível.
Se um atacante conseguir uma cópia do /etc/passwd, poderá efetuar um ataque, se planejado silenciosamente. Ao invés de arriscar ser detectado ao tentar se autenticar com todas as senhas possíveis geradas pelo cracker de senhas, um atacante pode usar o cracker de senhas da seguinte forma:
Um programa cracker de senhas gera as senhas possíveis
Cada senha possível é então criptografada usando o mesmo algoritmo que o sistema utiliza
A possível senha criptografada é então comparada às senhas criptografadas no /etc/passwd
O aspecto mais perigoso deste ataque é que pode ocorrer num sistema distante de sua empresa. Sendo assim, o atacante pode usar o hardware de melhor desempenho disponível no mercado, possibilitando testar um número enorme de senhas muito rapidamente.
Consequentemente, o arquivo /etc/shadow é legível somente pelo usuário root e contém as senhas (e informações opcionais de expiração das senhas) de cada usuário. Assim como no arquivo /etc/passwd, as informações de cada usuário estão numa linha separada. Cada uma destas linhas é uma lista delimitada por dois pontos, incluindo as seguintes informações:
Nome de usuário (username) — O nome que o usuário digita ao se autenticar no sistema. Isso permite que a aplicação login recupere a senha do usuário (e informações relacionadas a este usuário).
Senha criptografada — A senha de 13 a 24 caracteres. A senha é criptografada usando a função crypt(3) da biblioteca ou o algoritmo hash md5. Neste campo, os valores além de uma senha hash ou criptografada formatada de maneira válida são usados para controlar as autenticações do usuário e exibir o status da senha. Por exemplo: se o valor é ! ou *, a conta está bloqueada e o usuário não pode se autenticar. Se o valor é !!, a senha ainda não foi determinada (e, consequentemente, o usuário não poderá se autenticar).
Data da última alteração da senha — O número de dias desde 1o. de Janeiro de 1970 (também chamado de período) em que a senha foi alterada pela última vez. Esta informação é usada junto aos campos de expiração da senha que seguem.
Número de dias antes que a senha possa ser alterada — O número mínimo de dias antes que a senha possa ser alterada.
Número de dias antes que uma alteração de senha seja solicitada — O número de dias antes da senha ser alterada.
Número de dias do aviso antes da alteração da senha — O número de dias antes da expiração da senha durante os quais o usuário é avisado da expiração iminente.
Número de dias antes da desabilitação da conta — O número de dias após a senha expirar antes da conta ser desabilitada.
Data desde a desabilitação da conta — A data (armazenada como o número de dias desde o período) desde que a conta do usuário foi desabilitada.
Um campo reservado — Um campo ignorado no Red Hat Enterprise Linux.
Aqui está um exemplo do /etc/shadow:
juan:$1$.QKDPc5E$SWlkjRWexrXYgc98F.:12825:0:90:5:30:13096: |
Esta linha exibe as seguintes informações do usuário juan:
A senha foi alterada pela última vez no dia 11 de Fevereiro de 2005
Não há tempo mínimo definido antes que a senha possa ser alterada
A senha deve ser alterada a cada 90 dias
O usuário receberá um aviso cinco dias antes de que a senha deve ser alterada
A conta será desabilitada 30 dias após a senha expirar, se não houver tentativas de autenticação
A conta expirará no dia 09 de Novembro de 2005
Para mais informações sobre o arquivo /etc/shadow, veja a página man do shadow(5).
O arquivo /etc/group é legível por todos (world-readable) e contém uma lista de grupos, cada um numa linha separada. Cada linha tem quatro campos separados por dois pontos, incluindo as seguintes informações:
Nome do grupo — O nome do grupo. Usado por vários utilitários como um identificador do grupo legível por humanos.
Senha do grupo — Se determinada, esta permite aos usuários que não fazem parte do grupo juntar-se a ele usando o comando newgrp e digitando a senha armazenada aqui. Se houver um x em caixa baixa neste campo, as senhas do grupo shadow estão em uso.
ID do grupo (GID) — O equivalente numérico do nome do grupo. É usado pelo sistema operacional e aplicações ao determinar os privilégios de acesso.
Lista de membros — Uma lista de usuários pertencentes ao grupo, separados por vírgulas.
Aqui está um exemplo do /etc/group:
general:x:502:juan,shelley,bob |
Esta linha mostra que o grupo general está usando senhas shadow, tem um GID de 502 e que juan, shelley e bob são membros.
Para mais informações sobre o /etc/group, veja a página man do group(5).
O arquivo /etc/gshadow é legível/acessível somente pelo usuário root e contém uma senha criptografada para cada grupo, assim como informações sobre os membros e administrador. Como no arquivo /etc/group, as informações de cada grupo estão numa linha separada. Cada uma destas linhas é uma lista separada por vírgulas, contendo as seguintes informações:
Nome do grupo — O nome do grupo. Usado por vários utilitários como um identificador do grupo legível por humanos.
Senha criptografada — A senha criptografada do grupo. Se determinada, usuários não membros do grupo podem juntar-se a ele digitando a senha deste grupo usando o comando newgrp. Se o valor deste campo é !, nenhum usuário pode acessar o grupo usando o comando newgrp. O valor !! é tratado da mesma maneira como o valor ! — no entanto, também indica que nenhuma senha foi determinada anteriormente. Se o valor é zero, somente os membros do grupo podem nele se autenticar (log in).
Administradores do grupo — Os membros do grupo aqui listados (numa lista delimitada por vírgulas) podem adicionar ou remover membros do grupo usando o comando gpasswd.
Membros do grupo — Os membros do grupo aqui listados (numa lista separada por vírgulas) são membros regulares e não-administrativos do grupo.
Aqui está um exemplo do /etc/gshadow:
general:!!:shelley:juan,bob |
Esta linha mostra que o grupo general não tem senha e não permite o ingresso de não membros usando o comando newgrp. Além disso, shelley é uma administradora do grupo, e juan e bob são membros regulares e não administrativos.
Já que editar estes arquivos aumenta o risco de erros de sintaxe, é recomendado usar as aplicações providas pelo Red Hat Enterprise Linux para este propósito. A próxima seção traz uma revisão das principais ferramentas para executar estas tarefas.
Há dois tipos básicos de aplicações que podem ser usadas para administrar contas de usuários e grupos nos sistemas Red Hat Enterprise Linux:
A aplicação gráfica Administrador de Usuários
Um conjunto de ferramentas de linha de comando
Para obter instruções detalhadas sobre o uso do Administrador de Usuários, consulte o capítulo Configuração de Usuário e Grupo no Guia de Administração de Sistemas Red Hat Enterprise Linux.
Apesar da aplicação Administrador de Usuários e dos utilitários de linha de comando executarem essencialmente a mesma tarefa, as ferramentas de linha de comando têm a vantagem de serem alteráveis por scripts e, consequentemente, mais fáceis de serem automatizadas.
A tabela seguinte descreve algumas das ferramentas de linha de comando mais comuns usadas para criar e administrar contas de usuário e grupos:
| Aplicação | Função |
|---|---|
| /usr/sbin/useradd | Adiciona contas de usuários. Esta ferramenta é usada também para especificar os membros principais e secundários do grupo. |
| /usr/sbin/userdel | Apaga contas de usuários. |
| /usr/sbin/usermod | Edita os atributos da conta incluindo algumas funções relacionadas à expiração da senha. Para os ajustes finos, use o comando passwd. O usermod também é usado para especificar os membros principais e secundários do grupo. |
| passwd | Define senhas. Apesar de ser usado principalmente para alterar a senha de um usuário, também controla todos os aspectos da expiração da senha. |
| /usr/sbin/chpasswd | Acessa um arquivo contendo pares de nome de usuário e senha e atualiza a senha de cada usuário de acordo. |
| chage | Altera a política de expiração da senha de um usuário. O comando passwd também pode ser usado para este propósito. |
| chfn | Altera as informações GECOS do usuário, |
| chsh | Altera a shell default do usuário. |
Tabela 6-2. Ferramentas de Linha de Comando para Administração de Usuários
A tabela a seguir descreve algumas das ferramentas de linha de comando mais comuns usadas para criar e administrar grupos:
| Aplicação | Função |
|---|---|
| /usr/sbin/groupadd | Adiciona grupos, mas não atribui usuários para estes grupos. Os programas useradd e usermod devem então ser usados para atribuir usuários a um determinado grupo. |
| /usr/sbin/groupdel | Apaga grupos. |
| /usr/sbin/groupmod | Modifca os nomes ou GIDs do grupo, mas não altera os membros do grupo. Os programas useradd e usermod devem ser usados para atribuir usuários a um determinado grupo. |
| gpasswd | Altera os membros do grupo e determina senhas para permitir que usuários não membros do grupo, que conheçam o grupo, a juntem-se a ele. Também é usado para especificar os administradores do grupo. |
| /usr/sbin/grpck | Verifica a integridade dos arquivos /etc/group e /etc/gshadow. |
Tabela 6-3. Ferramentas de Linha de Comando para Administração de Grupos
As ferramentas listadas oferecem uma grande flexibilidade em controlar todos os aspectos das contas de usuário e associação a grupos. Para aprender mais sobre como estas funcionam, consulte a página man de cada uma delas.
No entanto, estas aplicações não determinam sobre quais recursos estes usuários e grupos têm controle. Para isso, o administrador de sistemas precisa usar as aplicações para permissão de arquivos.
As permissões de arquivo são uma parte integral da administração de recursos dentro de uma empresa. A tabela seguinte aborda as ferramentas de linha de comando mais comuns utilizadas para este propósito.
| Aplicação | Função |
|---|---|
| chgrp | Altera o grupo (ownership) que detém um determinado arquivo. |
| chmod | Altera as permissões de um determinado arquivo. Também é capaz de atribuir permissões especiais. |
| chown | Altera a propriedade (ownership) de um arquivo e também pode alterar o grupo. |
Tabela 6-4. Ferramentas de Linha de Comando para Administração de Permissões
Também é possível alterar estes atributos nos ambientes gráficos do GNOME e KDE. Clique com o botão direito no ícone do arquivo (por exemplo: enquanto o ícone é exibido num visualizador gráfico de arquivos ou na área de trabalho) e selecione Propriedades.
| [1] | GECOS significa General Electric Comprehensive Operating Supervisor. Este campo era usado nos laboratórios da Bell, na implementação original do UNIX. O laboratório tinha muitos computadores diferentes, incluindo um que rodava o GECOS. Este campo era usado para armazenar informações quando o sistema UNIX enviava tarefas batch e de impressão ao sistema GECOS. |