Curso de extensão em Administração de Sistemas GNU/Linux Rogerio Bastos Gestores da Rede Acadêmica de Computação Departamento de Ciência da Computação Universidade Federal da Bahia 2012.1
Gerenciamento de Usuários
root O usuário root (superuser) possui privilégios para efetuar qualquer operação no sistema Esta conta é criada durante a instalação do sistema e sempre possui UID igual a 0 (zero)
Arquivo /etc/passwd O arquivo /etc/passwd armazena informações sobre os usuários do sistema Originalmente este arquivo era utilizado também para armazenar as senhas Os dados são armazenados em texto plano e cada linha corresponde a um usuário
Arquivo /etc/passwd Username armazena o login e deve ser único para cada usuário Password armazena o hash da senha ou a letra x para sinalizar que a senha está no arquivo /etc/shadow User ID armazena o UID, número inteiro não-negativo, que identifica unicamente um usuário no sistema Group ID armazena o GID, número inteiro não-negativo, que identifica unicamente um grupo no sistema
Arquivo /etc/passwd Full name (or other comment) armazena o nome ou outra informação na forma de texto, podendo conter espaço Home directory armazena o caminho completo para o diretório do usuário Default shell armazena o caminho do shell padrão do usuário, normalmente /bin/bash. Utiliza-se /bin/false para usuário que não precisam logar no sistema.
Arquivo /etc/passwd Cada campo de uma linha é separado pelo símbolo de dois pontos
Arquivo /etc/group O arquivo /etc/group armazena informações sobre os grupos do sistema Sintaxe similar à do arquivo /etc/passwd Os dados são armazenados em texto plano e cada linha corresponde a um grupo
Arquivo /etc/group Group name armazena o nome do grupo, deve ser único Group password pode armazenar uma senha, assim como no campo correspondente do arquivo /etc/passwd Group ID armazena o GID do grupo Group member list lista de logins dos membros, separados por vírgula
Arquivo /etc/shadow O arquivo /etc/shadow armazena o hash da senha dos usuário, mas, ao contrário do arquivo /etc/passwd, apenas o root tem permissão de acessá-lo Similarmente o arquivo /etc/gshadow armazena o hash da senha dos grupos
Arquivo /etc/shadow Username armazena o login do usuário Password armazena o hash da senha ou:! ou null conta sem senha * - conta desabilitada!<password> - conta travada!! - senha nunca foi definida Last Changed número de dias (desde 01/01/1970) desde a última troca da senha
Arquivo /etc/shadow Minimum número mínimo de dias necessários para trocar a senha (zero permite trocar a qualquer momento) Maximum número máximo de dias um usuário pode manter a mesma senha Warn número de dias antes de expirar a senha necessários para alertar o usuário Inactive número de dias após a senha expirar para a conta ser desabilitada
Arquivo /etc/shadow Expire número de dias (desde 01/01/1970) para que a conta expire Reserved reservado para uso futuro
Arquivo /etc/shadow Para calcular a data a partir dos valores do arquivo /etc/shadow, pode-se utilizar o comando date Exemplo # date -d 01/01/1970 + 99999 days Mon Oct 16 00:00:00 BRST 2243
Processo de Autenticação Um login e uma senha são solicitados Verifica-se se o usuário exite em /etc/passwd (ou outra base, como LDAP) Criptografa a senha fornecida Compara o resultado com a senha armazenada
Comandos O comando useradd cria contas de usuário no sistema Opções Exemplo -d homedir define o diretório padrão -m criar o diretório do usuário -s shell define o shell padrão # useradd joao # useradd -m -s /bin/bash maria
Comandos O comando usermod modifica uma conta já existente Suporta a maioria das opções do useradd Opções Exemplo -L bloqueia uma conta -U desbloqueia uma conta # usermod -d /home/local/joao joao # usermod -L maria
Comandos O comando userdel remove contas de usuários do sistema Opções Exemplo -f remove a conta mesmo se o usuário ainda estiver logado -r apaga os arquivo do diretório do usuário # userdel joao # userdel -r maria
Comandos De forma similar, os comandos groupadd, groupmod e groupdel adiciona, modifica e remove, respectivamente, grupos no sistema Os comandos passwd e gpasswd definem/alteram a senha de usuários e grupos, respectivamente
Comandos Os comandos adduser e addgroup são front-ends para os comandos useradd, usermod e groupadd Os comandos deluser e delgroup são front-ends para os comandos userdel e groupdel São configurados através dos arquivos /etc/adduser.conf e /etc/deluser.conf
Comandos O comando chage modifica os prazos referentes a troca de senha dos usuários Sintaxe Exemplo chage [options] [LOGIN]
Comandos O comando newgrp é utilizado para ter acesso a um grupo que possui senha Sintaxe newgrp [-] [group] Exemplo # newgrp novogrupo
Comandos O comando su é utilizado para executar um shell com outro usuário Sintaxe Opções su [options] [username] -c cmd: executa o comando cmd e sai -l: redefine o ambiente do shell
Comandos Exemplo $ whoami adam $ su -l Password: <root password given here> # whoami root
Comandos O comandos sudo é utilizado para permitir que usuários executem comandos como root ou outros usuários As permissões são definidas no arquivo /etc/sudoers, porém o mesmo deve ser editado através do comando visudo Para permitir que um usuário possa editar arquivos como o root, deve-se autorizar a execução do comando sudoedit
Comandos Exemplo # sudo aptitude install vim [sudo] password for usuario:
Automatizando Tarefas
Automatizando Tarefas Existem algumas tarefas que precisam ser executadas periodicamente para manter o sistema funcionando (e.g. rotação dos logs) O GNU/Linux provê ferramentas que facilitam o agendamente de tarefas, a exemplo do cron e o at
Cron O serviço cron é destinado ao agendamento de tarefas que são executadas periodicamente Ele é composto de dois programas: crond é o daemon que é iniciado durante o boot do sistema e roda em backgroud para executar as tarefas agendadas crontab é um programa para manipular a tabelas de tarefas agendadas
User Crontab Cada usuários possui sua própria tabela do cron, que é armazenada em /var/spool/cron Deve-se utilizar exclusivamente o comando crontab para editar a tabela do cron
User Crontab Cada linha do arquivo define um agendamento, que possui seis campos, separados por espaço Minuto: de 0 a 59 Hora: de 0 a 23 Dia do mês: de 1 a 31 Mês: de 1 a 12 ou de jan a dec Dia da semana: de 0 a 7, onde 0 é domingo, ou de sun a sat Comando: qualquer comando
User Crontab Linhas iniciadas com # são consideradas comentários Na definição do agendamento, o símbolo asterisco representa qualquer hora, minuto, dia, mês, etc Também é possível utilizar listas (1,3,5) e/ou intervalos (1-5)
User Crontab Exemplo # run myprogram at 6:15am 15 6 * * * myprogram # run myprogram at 6:15am and 6:15pm 15 6,18 * * * myprogram
Comandos O comando crontab serve para visualizar ou editar os agendamentos de cada usuários Sintaxe Opções crontab [options] -e: edita a tabela interativamente -l: imprime a tabela de agendamentos -r: remove a tabela
System Crontab O arquivo /etc/crontab e arquivos no diretório /etc/cron.d definem agendamentos de tarefas do sistema O formato desses arquivos é ligeiramente diferente, pois possui um campo para definir o usuário entre a especificação da data e o comando Exemplo # run myprogram at 6:15am as root 15 6 * * * root myprogram
System Crontab Algumas distribuições possuem agendamentos pré-definidos para executar scripts/programas armazenados em: /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
Comandos O comando at permite adiar a execução de uma aplicação e suporta diversas definições de tempo Sintaxa Opções at [-f file] time at [options] -d jobid: remove o jobid da fila -l: lista as tarefas agendadas
Comandos Exemplo $ at 6:15pm tomorrow at> myprogram at> ^D $ at -f command_list 9pm + 2 days $ at -l $ at -d 5