Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

4Linux - 451 Linux System Administration (Atualizado 2012), Notas de estudo de Informática

Curso de Linux

Tipologia: Notas de estudo

2014

Compartilhado em 05/09/2014

david-ubiratan-4
david-ubiratan-4 🇧🇷

4.9

(13)

16 documentos

Pré-visualização parcial do texto

Baixe 4Linux - 451 Linux System Administration (Atualizado 2012) e outras Notas de estudo em PDF para Informática, somente na Docsity! 4451 Linux System Administration www.4linux.com.br Conteúdo Compactadores, Empacotadores e Procedimentos de Backup 2 2.1 Introdução Teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 O empacotador cpio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 O empacotador tar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4 Compactadores GZIP, BZIP2 . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4.1 Gzip e Bzip2 com Arquivos de Texto . . . . . . . . . . . . . . . . 14 2.4.2 Gzip e Bzip2 com Arquivos Binários . . . . . . . . . . . . . . . . 16 2.5 Comando dd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2 4Linux – www.4linux.com.br 2.2 O empacotador cpio 1 # mkdir /backup 2.2 O empacotador cpio O comando cpio empacota arquivos/diretórios, suas principais opções são: -i -> extrair backup -o -> criar backup -t -> mostrar uma tabela com o conteúdo do backup -F -> essa opção especifica o arquivo de backup -d -> cria diretórios se necessário -v -> mostrar o que está fazendo em detalhes -u -> sobrescreve arquivos existentes Então, vejamos os principais grupos de op- ções e como utilizá-las. Para empacotar o conteúdo do diretório “/etc” com o “cpio” devemos fazer o seguinte: 1 # find /etc | cpio -ov > /backup/pacote.cpio O comando acima empacotará todos os objetos da saída do comando “ls /etc”. Para visualizar seu conteúdo: 1 # cpio -iv --list < /backup/pacote.cpio Linux System Administration Página 5 2.2 O empacotador cpio 4Linux – www.4linux.com.br Vamos renomear o diretório “/etc” para “/etc.old” : 1 # mv /etc /etc.old Restaure o backup do /etc: 1 # cpio -iv < /backup/pacote.cpio 2 # ls /etc Adicione arquivos ao pacote.cpio já criado: 1 # find /boot | cpio -ov -A -F /backup/pacote.cpio Para visualizar seu conteúdo: 1 # cpio -iv --list < /backup/pacote.cpio Adicione um usuário chamado inexistente: 1 # useradd inexistente Verifique que ele foi criado no arquivo /etc/passwd: 1 # tail -n1 /etc/passwd O comando cpio somente volta os arquivos, caso ele não exista ou ele seja mais recente que o atual: Página 6 Linux System Administration 4Linux – www.4linux.com.br 2.2 O empacotador cpio 1 # cpio -iv < /backup/pacote.cpio Verifique que os arquivos não foram alterados, pois as datas são mais atuais ou as mesmas dos arquivos no pacote: 1 # tail -n1 /etc/passwd Para forçar a restauração faça: 1 # cpio -iuv < /backup/pacote.cpio Verifique que não existe mais o usuário “inexistente”: 1 # tail -n1 /etc/passwd Remova o arquivo /etc/passwd: 1 # rm -f /etc/passwd Restaure apenas o arquivo /etc/passwd: 1 # cpio -ivF /backup/pacote.cpio /etc/passwd Linux System Administration Página 7 2.3 O empacotador tar 4Linux – www.4linux.com.br Podemos observar que o compactador gzip é mais rápido que o bzip2, mas qual deles fez a melhor compactação: 1 # du -sh /backup/usr* O bzip2 faz a melhor compactação, mas em compensação leva um tempo maior que o gzip. Para visualizar o conteúdo dos pacotes tar faça: 1 # tar -tf /backup/usr.tar.gz 2 # tar -tf /backup/usr.tar.bz2 3 # tar -tf /backup/usr.tar 4 # tar -tf /backup/etc.tar Para adicionar arquivos ao pacote já criado utilize o parâmetro “-r”, mas somente é possível em pacotes que ainda não foram compactados: Crie um arquivo chamado “aaaaaaaaaaaaaaaaaaa” em /etc: 1 # touch /etc/aaaaaaaaaaaaaaaaaaa Adicione ao tar criado: 1 # tar -rf /backup/etc.tar /etc/aaaaaaaaaaaaaaaaaaa Visualize: 1 # tar -tf /backup/etc.tar Vamos acessar o diretório /backup e descompactar o “/usr” feito com gzip: Página 10 Linux System Administration 4Linux – www.4linux.com.br 2.3 O empacotador tar 1 # cd /backup 2 # tar -zxvf usr.tar.gz Verifique que o pacote compactado foi descompactado no diretório atual e não na raiz: 1 # ls Para determinar qual vai ser o ponto inicial para descompactar o pacote utilize o parâmetro “-C”. Descompacte o pacote feito com bzip2 no diretório /mnt: 1 # tar -jxvf usr.tar.bz2 -C /mnt Verifique o diretório /mnt: 1 # ls /mnt Agora delete o diretório /etc: 1 # rm -rf /etc Volte o backup feito com o tar a partir do diretório “/”: 1 # tar xvf etc.tar -C / Verifique: Linux System Administration Página 11 2.4 Compactadores GZIP, BZIP2 4Linux – www.4linux.com.br 1 # ls /etc 2.4 Compactadores GZIP, BZIP2 Compressão de dados é o processo de codificar a informação de forma que seja pos- sível armazená-la em um número menor de “bits”. Por exemplo, se definíssemos que a palavra “compressão” passaria a ser abreviada por “comp”, estaríamos diminuindo o número de “bits” necessários para armazenar esta apostila. Entretanto, para que você pudesse entender o que “comp” significa seria necessário estar ciente dessa convenção ou seja, do algoritmo de compressão. Há dois tipos básicos de compressão, aquele em que não há perdas de informações e aquele em que elas ocorrem. Obviamente quando o assunto é “backup” de infor- mações vitais, devemos utilizar algoritmos sem perdas. Já em arquivos de imagens, vídeos e áudio, há casos que podemos nos dar ao luxo de perdas de informações em detrimento da qualidade, que em geral é praticamente imperceptível para os não especialistas da área. Os principais programas de compressão que utilizaremos são o “bzip2” e “gzip” . O “bzip2” utiliza os algoritmos “Burrows-Wheeler transform” e “Huffman coding”; já o “gzip” utiliza os algoritmos “LZ77” e “Huffman coding”. Todos esses algoritmos fazem parte do grupo dos algoritmos que não ocasionam perdas de dados. A forma de utilização desses comandos é bastante simples. Para o “gzip”, “bzip2”, basta fornecer o arquivo de entrada que a compressão se dará no próprio arquivo. Eis uma diferença entre o “tar” e esses programas, ele recebe dois argumentos, os arquivos de entrada e o arquivo de saída, ou seja, aqueles a serem empacotados e comprimidos. Verifique que não é possível compactar um diretório sem empacotá-lo antes. Tente Página 12 Linux System Administration 4Linux – www.4linux.com.br 2.4 Compactadores GZIP, BZIP2 1 # time gzip texto1 Determine o tamanho final do arquivo “texto1” após ser comprimido com “gzip”: 1 # ls -lh texto1.gz Determine o intervalo de tempo que leva para descomprimir o arquivo “texto1.gz”: 1 # time gunzip texto1.gz Vamos repetir os procedimentos utilizando o “bzip2”: Determine o intervalo de tempo que leva para comprimir o arquivo “texto2” com “bzip2”: 1 # time bzip2 texto2 Determine o tamanho final do arquivo “texto2” após ser comprimido com “bzip2”: 1 # ls -lh texto2.bz2 Determine o intervalo de tempo que leva para descomprimir o arquivo “texto2.bz2”: 1 # time bunzip2 texto2.bz2 Linux System Administration Página 15 2.4 Compactadores GZIP, BZIP2 4Linux – www.4linux.com.br 2.4.2 Gzip e Bzip2 com Arquivos Binários Utilize a tabela “tab:comparacao2” para anotar os resultados obtidos nos testes com “gzip” e “bzip” em arquivos binários: Determine o intervalo de tempo que leva para comprimir o arquivo “bin1” com “gzip”: 1 # time gzip bin1 Determine o tamanho final do arquivo “bin1” após ser comprimido com “gzip”: 1 # ls -lh bin1.gz Determine o intervalo de tempo que leva para descomprimir o arquivo “bin1.gz”: 1 # time gunzip bin1.gz Vamos repetir os procedimentos utilizando o “bzip2”: Determine o intervalo de tempo que leva para comprimir o arquivo “bin2” com “bzip2”: 1 # time bzip2 bin2 Determine o tamanho final do arquivo “bin2” após ser comprimido com “bzip2”: Página 16 Linux System Administration 4Linux – www.4linux.com.br 2.5 Comando dd 1 # ls -lh bin2.bz2 Determine o intervalo de tempo que leva para descomprimir o arquivo “bin2.bz2”: 1 # time bunzip2 bin2.bz2 2.5 Comando dd O comando “dd” tem a capacidade de copiar “bit a bit”. Segue um exemplo de seu uso: FAZER PARTIÇÃO MENOR E COPIAR 1 # dd if=/dev/sda3 of=/dev/sda11 O comando acima efetuará a clonagem da partição “sda3”, para a partição “sda11”. Cuidado com o comando “dd”, qualquer falta de atenção pode danificar o sis- tema, de forma irrecuperável. Onde: if=/dev/sda3 O nome do arquivo de entrada. of=/dev/sda11 Linux System Administration Página 17 Backup com ferramentas XFS 3.1 Introdução Teórica O XFS é um sistema de arquivos de alta performance com suporte a journaling, que teve origem na plataforma IRIX da SGI. É completamente multi-processo, e pode suportar grandes sistemas de arquivos com atributos estendidos, tamanho de blocos variável. O XFS é baseado em extents e utiliza bem o uso de Btrees (diretórios, extensões, e espaço livre) para ajudar no ganho de performance e escalabilidade. 3.2 Gerenciando backup em partições XFS Existem diversas ferramentas para gerenciar partições do tipo XFS, em nossa pratica vamos manipular a aplicação do sistema de arquivos, backup e restore no sistema de arquivos XFS. Antes de usar os comandos prepare sua infra adicionando um novo disco para o backup. Um novo disco sera usado em /dev/sdb para as tarefas, sendo que a primeira partição /dev/sdb1 deve conter 2GB e a segunda 6GB: Aplicando sistema de arquivos XFS O comando mkfs.xfs é usado para aplicar sistema de arquivos XFS em uma partição. O comando também pode ser usado com a flag -t como em “mkfs -t xfs”. 3 3.3 Gerar backup com xfsdump 4Linux – www.4linux.com.br 1 # mkfs.xfs /dev/sdb1 2 Ou 3 # mkfs -t xfs /dev/sdb2 Como a partição já possui o sistema de arquivos XFS, crie o ponto de montagem, monte a partição e faça a cópia de novos arquivos. 1 # mkdir /media/xfs 2 # mount -t xfs /dev/sdb1 /media/xfs 3 # cp -R /var /media/xfs 3.3 Gerar backup com xfsdump O comando xfsdump é utilizado para fazer backup de arquivos com seus atributos em um sistema de arquivos. O xfsdump examina os arquivos e determina quais precisam ser salvos (backup), e copia esses arquivos para um disco especificado, como fita magnética ou outra média de armazenamento. A ferramenta usa diretivas específicas do XFS para otimização, e também sabe como salvar os atributos extensos do XFS. Os backups criados pelo xfsdump são do tipo "endian safe"e assim podem ser transferidos entre máquinas Linux de diferentes ar- quiteturas e também entre máquinas IRIX. Crie um local para nosso backup em /media usando a segunda partição de 6GB 1 # mkdir /media/backup 2 # mount -t xfs /dev/sdb2 /media/backup Use o comando xfsdump para fazer o backup da partição /dev/sdb1 Página 4 Linux System Administration 4Linux – www.4linux.com.br 3.3 Gerar backup com xfsdump 1 # xfsdump -l 0 -p 30 -f /media/backup/backup .0. dump /media/xfs 2 3 xfsdump: using file dump (drive_simple) strategy 4 xfsdump: version 3.0.4 (dump format 3.0) - Running single -threaded 5 6 ==================== dump label dialog ==================== 7 8 please enter label for this dump session (timeout in 300 sec) 9 -> backup (Digite o nome do rotulo e tecle Enter) 10 11 session label entered: "backup" 12 13 ----------------------- end dialog ----------------------- 14 15 xfsdump: level 0 dump of debian :/media/xfs 16 xfsdump: dump date: Thu Apr 26 16:05:12 2012 17 xfsdump: session id: ce153353 -0d33 -4fc5 -aa88 -10274 eeaff4b 18 xfsdump: session label: "backup" 19 xfsdump: ino map phase 1: constructing initial dump list 20 xfsdump: ino map phase 2: skipping (no pruning necessary) 21 xfsdump: ino map phase 3: skipping (only one dump stream) 22 xfsdump: ino map construction complete 23 xfsdump: estimated dump size: 171053504 bytes 24 25 ==================== dump label dialog ==================== 26 27 please enter label for media in drive 0 (timeout in 300 sec) 28 -> quit (Digite o comando para sair do prompt do xfsdump) 29 30 ----------------------- end dialog ----------------------- 31 32 xfsdump: creating dump session media file 0 (media 0, file 0) 33 xfsdump: dumping ino map 34 xfsdump: dumping directories 35 xfsdump: dumping non -directory files 36 xfsdump: status at 16:05:46: 1/3842 files dumped , 0,0% data dumped , Linux System Administration Página 5 3.4 Restaurando backup com xfsrestore 4Linux – www.4linux.com.br Como resultado do comando foi criado um novo arquivo com a extensão .dump no diretório /media/backup (backup.1.dump). Neste arquivo temos o incremento da par- tição (o que tem de novo). Compare o tamanho dos dois arquivos: 1 # cd /media/backup 2 # ls -lh 3 -rw-r--r-- 1 root root 153M Abr 26 16:29 backup .0. dump 4 -rw-r--r-- 1 root root 34K Abr 26 16:40 backup .1. dump 3.4 Restaurando backup com xfsrestore O comando xfsrestore executa a função reversa do xfsdump; podendo restaurar uma cópia de segurança completa de um sistema de arquivos. Backups incrementais subsequentes podem ser colocados depois ’em cima’ do backup completo. Arqui- vos únicos e subdiretórios podem ser restaurados a partir de backups completos ou parciais. Primeiro crie um novo local para armazenar o backup restaurado, e use o comando xfsrestore para restaurar o backup incremental: 1 # mkdir /backup 2 # xfsrestore -f /media/backup/backup .1. dump /backup/ 3 4 xfsrestore: using file dump (drive_simple) strategy 5 xfsrestore: version 3.0.4 (dump format 3.0) - Running single - threaded 6 xfsrestore: searching media for dump 7 xfsrestore: examining media file 0 8 xfsrestore: dump description: 9 xfsrestore: hostname: debian 10 xfsrestore: mount point: /media/xfs Página 8 Linux System Administration 4Linux – www.4linux.com.br 3.5 Criar e Restaurar Backup Remoto 11 xfsrestore: volume: /dev/sdb1 12 xfsrestore: session time: Thu Apr 26 16:40:17 2012 13 xfsrestore: level: 1 14 xfsrestore: session label: "backup" 15 xfsrestore: media label: "backup" 16 xfsrestore: file system id: 3eca0743 -cfa5 -45b4 -8376- c892e3793511 17 xfsrestore: session id: ff2f5ed8 -977c-417e -8538 -40513 baf6939 18 xfsrestore: media id: ddf5382d -3770 -4aef -861f-e390edf46cd5 19 xfsrestore: using online session inventory 20 xfsrestore: searching media for directory dump 21 xfsrestore: reading directories 22 xfsrestore: 3 directories and 54 entries processed 23 xfsrestore: directory post -processing 24 xfsrestore: restoring non -directory files 25 xfsrestore: restore complete: 0 seconds elapsed 26 xfsrestore: Restore Status: SUCCESS Toda a estrutura de diretórios com o arquivo auth.log foi restaurado. Liste o conteudo do diretório /backup e comprove a restauração. 1 # ls -l /backup/var/log/auth.log 2 -rw-r----- 1 root root 9422 Abr 26 16:38 /backup/var/log/auth.log Caso precise de uma restauração completa do /dev/sdb1, use o comando: 1 # xfsrestore -f /media/backup/backup .0. dump /media/xfs 3.5 Criar e Restaurar Backup Remoto A pratica é bem parecida com o procedimento local mudando apenas, comandos adicionados para a conexão remota e a compactação dos arquivos. Em nossa infra Linux System Administration Página 9 3.5 Criar e Restaurar Backup Remoto 4Linux – www.4linux.com.br vamos precisa de 2 maquinas com SSH. • Maquina 1: Debian 6 com IP 192.168.200.1 (pacote xfsdump instalado) • Maquina 2: CentOS 6 com IP 192.168.200.2 (pacote xfsdump instalado) Backup Completo via SSH Na maquina Debian 6 use o comando xfdump para criar um backup completo do diretório /media/xfs. 1 # xfsdump -l 0 -L backup - /media/xfs | gzip | ssh root@192 .168.200.2 dd of=/ backup/backup$(date +%d-%m-%Y).gz Descrição das opções utilizadas: • xfsdump -l 0 -L backup - /media/xfs | : Comando usado para criar o backup completo (-l 0) do diretório /media/xfs com o label "backup"; • gzip | : O resultado do comando xfsdump sera compactado atraves deste co- mando; • ssh root@192.168.200.2 : Envia o backup compactado para a maquina re- mota; • dd of=/backup/backup$(date +%d-%m-%Y).gz : Na maquina remota o bac- kup compactado sera gravado em um arquivo (dd of) com a data atual em /backup. Através da linha de comando em nosso exemplo, o backup foi criado de forma remota na maquina CentOS no diretório /backup. Não esqueça de criar este diretório na maquina CentOS. Restore completo via SSH Página 10 Linux System Administration Agendamento de Tarefas 3.6 Introdução Teórica A “crontab” é utilizada para agendar comandos que serão executados periodica- mente, ao contrário do comando “at”, que executa comandos pontualmente. Há dois tipos de “crontab”: a de usuários e a do sistema. Ambas são arquivos que contêm tabelas com informação de quando o comando especificado deve ser executado, sendo que cada linha corresponde a um único agendamento. A “crontab” é gerenciada pelo “daemon crond”, que a cada um minuto verifica se há algum agendamento que deve ser executado e, se houver, executa-o. A “crontab” dos usuários pode ser acessada pelo comando: 1 # crontab [-e|-r|-l] A tabela fica armazenada em arquivos com o nome do usuário dono da tabela. Já a “crontab” do sistema é encontrada no arquivo “/etc/crontab” e já possui agendamen- tos para realizar as tarefas que se encontram nos diretórios “/etc/cron.[hourly|daily|weekly|monthly]”. Sendo que o programa chamado “run-parts” é quem executa os referidos agenda- mentos. O formato das “crontabs” dos usuários e do sistema são quase iguais. A exceção é que a “crontab” do sistema possui um campo a mais, como pode ser visto a seguir: 13 3.6 Introdução Teórica 4Linux – www.4linux.com.br 1 crontab (usuários) 2 # minuto hora dia mês diaDaSemana comando 3 4 crontab (sistema) 5 # minuto hora dia mês diaDaSemana USUÀRIO comando A única diferença entre as duas “crontabs” é que na do sistema há um campo para especificar qual é o usuário que irá executar o comando agendado. Além disso cada campo possui um conjunto de valores válidos, sendo eles: minuto: varia de 0-59; hora: varia de 0-23; dia: varia de 1-31; mês: varia de 1-12; diaDaSemana: varia de 0-7, sendo: 0 ou 7 – domingo 1 - segunda-feira 2 - terça-feira 3 - quarta-feira 4 - quinta-feira 5 - sexta-feira 6 - sábado • usuário: um usuário válido no sistema; • comando: o “path” completo para o comando. Página 14 Linux System Administration 4Linux – www.4linux.com.br 3.6 Introdução Teórica Podemos controlar quais usuários podem acessar ou não o “cron”. Para isso basta criar um dos arquivos: “/etc/cron.allow” ou “/etc/cron.deny”. A mesma dica é válida para o comando “at”: “/etc/at.allow” ou “at.deny”. Considerando o formato já listado, podemos realizar agendamentos utilizando alguns operadores que facilitam o trabalho. São eles: • vírgula (,) -> especifica uma lista de valores, por exemplo: “1,3,4,7,8”; • hifen (-) -> especifica um intervalo de valores, por exemplo: 1-15 (de 1 a 15); • asterisco (*) -> especifica todos os valores possíveis; • barra (/) -> especifica “pulos” de valores, por exemplo: se no campo hora utili- zarmos “*/3” o comando será executado às “0,3,6,9,12,15,18,21” horas; 3.6.1 Agendamento de Tarefas com AT O comando "at"pode agendar tarefas de forma semelhante ao cron, e é integrado à interface de linha de comando do Linux. É muito eficiente se aplicado no agen- damento de tarefas que sejam disparadas somente uma vez. O at permite o con- trole dos usuários que podem agendar comandos através dos arquivos /etc/at.allow e /etc/at.deny. Estes arquivos são organizados no formato de um usuário por linha. Durante o agendamento é verificado primeiro o arquivo /etc/at.allow (listando quem pode executar o comando) e depois /etc/at.deny. Caso eles não existam, o agenda- mento de comando é permitido a todos os usuários. Verifique se a data e a hora do sistema estão corretas: Linux System Administration Página 15 3.6 Introdução Teórica 4Linux – www.4linux.com.br Liste os agendamentos ativos e liste o conteúdo do diretório de “spool” do “at” e veja que o “job” foi removido: 1 # atq 2 # ls /var/spool/cron/atjobs Verifique o backup que estava agendado pelo comando at: 1 # ls /backup Todos usuários comuns podem utilizar o comando at, por padrão somente vem criado o arquivo “/etc/at.deny”, neste arquivo são configurados os usuários que não podem utilizar o agendador de tarefas at, caso queira bloquear o uso de alguns usuários específicos adicione-os neste arquivo, sendo um usuário por linha, se quiser bloquear o uso de todos, crie o arquivo “/etc/at.allow” em branco. Caso queira habilitar o uso do agendador de tarefas at para apenas alguns usuários específicos, crie o arquivo “/etc/at.allow” e coloque um nome por linha. Bloqueie o uso do agendador de tarefas at para usuários comuns: 1 # touch /etc/at.allow Teste o bloqueio com o usuário mandark: 1 $ at 12:00 01/01/2014 Página 18 Linux System Administration 4Linux – www.4linux.com.br 3.6 Introdução Teórica 3.6.2 Agendando Tarefas com o CRON Cuidados especiais com scripts Utilize nos comandos do script e no agendador, sempre o (path) caminho completo do aplicativo a ser executado, exemplo para o comando tar, use /bin/tar, também na linha de comando que inserir no cron use o caminho completo para o script, por exemplo, executar um script que está em /home/zago, use a linha: /home/zago/nome-do-script e não somente nome-do-script. Muito cuidado com scripts, o comodismo pode cair no esquecimento e não atualizar o script de backup quando incluir novos serviços, diretórios ou usuários, monitore constantemente, teste e avalie o que está sendo feito. Tenha os seguintes cuidados quando elaborar scripts para execução pelo cron. Nestes scripts não pode conter comandos que requer interação com o usuário, tais como pedir senha para completar a conexão de um ftp, nestes casos deve ser colo- cado todas as instruções dentro do script de maneira que possa completar a conexão passando o login e senha. Comandos que requerem confirmação para execução, por exemplo, apagar arquivos, o rm pede confirmação, mas com o parâmetro -rf não pede, então seria assim: rm -rf <arquivo, diretório ou /caminho/o que deve apagar> Não deve ter nenhum comando que peça confirmação ou qualquer interação com o usuário. Fique atento às permissões, quando possível agende como root para executar o script, use o "sudo"para dar permissões de execução em programas que requer po- deres de root na execução, acesso a diretórios de backup e etc.... Espaço em disco quando baixar arquivos, backup ..., comandos de parar serviços ou manipular arquivos em uso. Revise periodicamente scripts que requerem atualiza- Linux System Administration Página 19 3.6 Introdução Teórica 4Linux – www.4linux.com.br ção, tais como backup de dados dos usuários, incluir novos usuários... O cron limita a busca nos diretórios /bin e /usr/bin, portanto indique o caminho com- pleto do programa ou script, ou melhor indique sempre, mesmo que estejam nestes diretórios. Para agendar as tarefas usamos o comando crontab com a sintaxe descrita abaixo: 1 # crontab [-u usuário] { -e | -l | -r } u -> permite que o superusuário agende tarefas para outros usuários, pois o co- mando su pode atrapalhar o crontab. Um usuário comum não precisa usar essa opção para especificar ele próprio. e -> edita o arquivo de tarefas agendadas pelo usuário. A formatação desse arquivo será descrita mais adiante. l -> lista o arquivo de tarefas agendadas pelo usuário. r -> apaga o arquivo de tarefas agendadas pelo usuário. Basicamente, para agendarmos uma tarefa deveremos editar o nosso arquivo “agenda” com o comando: 1 # crontab -e O arquivo agenda tem as seguintes características: as linhas em branco, espaços iniciais e tabs são ignorados. As linhas cujo primeiro caractere não-branco for um "#"são comentários, e são ignorados. Uma linha ativa em um arquivo agenda é uma definição de ambiente ou um comando do cron. Definição de ambiente: Página 20 Linux System Administration 4Linux – www.4linux.com.br 3.6 Introdução Teórica Para apagar somente um agendamento do usuário, use o “crontab -e” e retire a linha desejada. Agora que aprendemos a utilizar a “crontab” do usuário podemos usar a “crontab” do sistema que opera praticamente da mesma forma, apenas tem um campo a mais, o usuário que executará o “script”. Seu arquivo de configuração é o /etc/crontab. Debian: 1 # cat /etc/crontab 2 SHELL=/bin/sh 3 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 4 5 #m h dom mon dow user command 6 17 * * * * root cd / && run -parts --report /etc/cron.hourly 7 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run -parts -- report /etc/cron.daily ) 8 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run -parts --report /etc/cron.weekly ) 9 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run -parts -- report /etc/cron.monthly ) CentOS: 1 # cat /etc/crontab 2 SHELL=/bin/sh 3 PATH=/sbin:/bin:/usr/sbin:/usr/bin 4 MAILTO=root 5 HOME=/ 6 7 01 * * * * root run -parts /etc/cron.hourly 8 02 4 * * * root run -parts /etc/cron.daily Linux System Administration Página 23 3.6 Introdução Teórica 4Linux – www.4linux.com.br 9 22 4 * * 0 root run -parts /etc/cron.weekly 10 42 4 1 * * root run -parts /etc/cron.monthly O programa “run-parts” executa todos os scripts executáveis dentro de um certo diretório. Então com essas linhas, temos diretórios programados para executar pro- gramas de hora em hora, diariamente, semanalmente ou mensalmente. Abaixo a tabela: Ainda dentro do diretório /etc, temos quatro agendamentos pré-definidos: cron.hourly, cron.daily, cron.weekly e cron.montly Onde: cron.hourly: de hora em hora cron.daily: de dia em dia cron.weekly: de semana em semana cron.montly: de mês em mês 3.6.3 Restringindo o uso do crontab Os arquivos “/etc/cron.allow” e “/etc/cron.deny” são usados para restringir acesso ao cron. O formato de ambos arquivos de controle de acesso consiste em um nome de usuário por linha. Espaços em branco não são permitidos em nenhum destes arquivos. O daemon do cron não precisa ser reiniciado se os arquivos de controle de acesso forem modificados. Os arquivos de controle de acesso são lidos a cada vez que o usuário tentar adicionar ou apagar uma tarefa do cron. O usuário root pode usar o cron sempre, independentemente dos nomes de usuário listados nos arquivos de controle de acesso. Página 24 Linux System Administration 4Linux – www.4linux.com.br 3.6 Introdução Teórica Se o arquivo /etc/cron.allow existe, somente os usuários listados neste poderão usar o cron, e então o arquivo cron.deny será ignorado. Se o arquivo cron.allow não existe, os usuários listados no cron.deny não poderão usar o cron. Linux System Administration Página 25 Automatização de Tarefas com Shell Script I 4.1 Introdução Teórica Tarefas administrativas são, muitas vezes, longas e repetitivas. Podemos automati- zar esses procedimentos através de “scripts”. Na verdade, os “scripts” podem nos auxiliar muito, numa vasta gama de atividades. O que é um “script”? É uma sequência de instruções que são executadas toda vez que o mesmo é chamado. Mas, qual a diferença entre um “script” e um programa, já que ambos são sequências de instruções? Um “script”, é um programa não compilado. O processador da máquina só é capaz de executar programas binários, isto é, compilados especificamente para ele. Dessa forma, é necessário um programa que interprete esse “script”, em tempo de execu- ção, para que o mesmo possa ser executado. No nosso caso, esse programa será uma “shell”, já que estamos falando de “shell scripts”. Sendo uma linguagem de programação, a “Shell Script” possui uma série de estru- turas de controle como “loops” e condicionais, mas que são estudadas apenas em cursos mais avançados. Estudando um exemplo Vejamos o seguinte exemplo de “Shell Script”: 3 4.1 Introdução Teórica 4Linux – www.4linux.com.br 1 # vim shell.sh 2 #!/bin/bash 3 # Meu primeiro shell script 4 cd ~ 5 clear 6 ls -alh 7 date 8 cd - Este é um “script” bem simples. As linhas que começam pelo símbolo "cedilha"são comentários, ou seja, tudo que aparece depois do desse carácter é desprezado. Os comentários são muito importantes nos programas, pois são uma forma de documentá- los. Imagine se você tiver que fazer uma alteração num programa escrito a um ano antes. Será que você irá se lembrar de todas as estruturas e variáveis que utilizou? Provavelmente não. Se for outra pessoa quem tiver que efetuar essa mudança, a situação será pior ainda! Mas a primeira linha, na qual aparece um comentário, possui uma característica um tanto estranha. Na verdade, a primeira linha de um “script”, indica qual será o interpretador daquele “script”. Em nosso exemplo será o programa “binbash”, uma “shell”. Se estivéssemos criando um “script” com a linguagem de programação “Perl”, a primeira linha seria algo como usrbinperl. O “script”, propriamente dito, executa 4 comandos simples: Acessar o diretório do usuário corrente (cd ); limpar a tela (clear); listar o conteúdo diretório corrente (ls -alh); imprimir a data (date) e voltar ao diretório original (cd -). Executando o script Um programa ou “script” no GNU/Linux deve possuir permissão de execução. Su- pondo que nosso “script” denomina-se “shell.sh”, para podermos executá-lo, deve- mos executar o comando: 1 # chmod u+x shell.sh Página 4 Linux System Administration 4Linux – www.4linux.com.br 4.1 Introdução Teórica E em seguida executar o script: 1 # ./shell.sh Em algumas situações, pode ser necessário fornecer parâmetros para um “script”. Por exemplo, se ao invés de listar o conteúdo do diretório pessoal do usuário, qui- séssemos que o “script” listasse o conteúdo de um diretório qualquer. Supondo que esse novo “script” chama-se “script2.sh”, uma possível forma de utili- zação do “script” seria: 1 # ./ script2.sh /etc Para passar parâmetros para esse “script”, precisamos conhecer a função de algu- mas variáveis: “$1, $2”. Quando passamos algum parâmetro para o nosso “script”, esse parâmetro fica armazenado em uma variável específica. Por exemplo: 1 # ./ script3.sh parâmetro1 parâmetro2 parâmetro3 Para conseguirmos resgatar o valor desses parâmetro, precisamos chamar as variá- veis “$1,$2 e $3”, por exemplo: 1 # vim script3.sh 2 #!/bin/bash 3 # 4 #Esse script pega o valor dos parâmetros e imprimi na tela. 5 echo $1 6 echo $2 7 echo $3 8 # ./ script3 42 the answer Linux System Administration Página 5 4.3 Usando a estrutura “se” 4Linux – www.4linux.com.br O teste de condicionais (strings, matemáticas e em arquivos) em “Shell Script” é feito através do comando “test”. Vamos conferir algumas formas de testar condicionais. Testando “strings” 1 # test "uva" = "uva" 2 # echo $? 3 # 0 1 # test "uva" = "banana" 2 # echo $? 3 # 1 Testando expressões matemáticas 1 # test 5 -eq 2 2 # echo $? 3 # 1 1 # test 2 -eq 2 2 # echo $? 3 # 0 Testando expressões em arquivos 1 # test -z $vazia 2 # echo $? 3 # 0 Página 8 Linux System Administration 4Linux – www.4linux.com.br 4.3 Usando a estrutura “se” 1 # var=valor 2 # test -z $var 3 # echo $? 4 # 1 Acima mostramos algumas formas de se testar as condicionais utilizadas dentro da estrutura “se”. Lembre-se que podemos usar as condicionais tanto dentro, quanto fora da estrutura “se”, depende do caso e do meio. Abaixo podemos ver uma lista de operadores para nossa diversão. Existem muitos outros operadores para que possamos dominar o mundo e conse- quentemente o sistemas UNIX com “shell script”. Estes são apenas os essenciais! Linux System Administration Página 9 4.4 Utilizando a estrutura “if” 4Linux – www.4linux.com.br 4.4 Utilizando a estrutura “if” Abaixo alguns exemplos realmente práticos de como utilizar a estrutura “if”. 1 #!/bin/bash 2 ## Primeiro script - Verificando se um usuário existe 3 echo "Digite usuário para consulta:" 4 read USER 5 REPLY=$(getent passwd | grep $USER) 6 if [ -z $REPLY ] ; then 7 echo "Usuário $USER não existe!" 8 else 9 echo "Usuário Existe" 10 fi Ao invés de verificar se a variável que recebia o resultado do comando estava vazia, poderíamos ter utilizado o comando “test” antes da estrutura e checar apenas seu código de erro: 1 #!/bin/bash 2 ## Primeiro script - Verificando se um usuário existe 3 # 4 echo "Digite usuário para consulta:" 5 read USER 6 REPLY=$(getent passwd | grep $USER) 7 8 test -z $REPLY 9 if [ $? -eq 0 ] ; then 10 echo "Usuário $USER não existe!" 11 else 12 echo "Pagamento em dia" 13 fi Página 10 Linux System Administration Conteúdo Automatizando Tarefas com Shell Script II 2 5.1 Introdução Teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 5.2 Utilizando a estrutura “case” . . . . . . . . . . . . . . . . . . . . . . . . . 3 5.3 Utilizando a estrutura “while” . . . . . . . . . . . . . . . . . . . . . . . . 5 5.4 Utilizando a estrutura “for” . . . . . . . . . . . . . . . . . . . . . . . . . . 6 5.5 Transformar Shell Script em binário . . . . . . . . . . . . . . . . . . . . . 8 2 Automatizando Tarefas com Shell Script II 5.1 Introdução Teórica Tarefas administrativas são, muitas vezes, longas e repetitivas. Podemos automa- tizar esses procedimentos através de “scripts”. Como exemplo podemos utilizar o "case"para comandos de fluxo, tal como é o if, mas enquanto if testa expressões não exatas, o "case"vai agir de acordo com resultados exatos. Temos o "while"para testa continuamente uma expressão, até que ela se torne falsa, e ainda contamos com o laço "for"que vai substituindo uma variável por um valor,e vai executando os comandos que são pedidos. 5.2 Utilizando a estrutura “case” Outra estrutura bastante útil quando vários “if” precisam ser declarados é a estrutura “case”. case <valor> in <padrão1>) comandos ;; <padrão2>) comandos ;; <padrão3>) comandos ;; *) comandos ;; esac 3 5.2 Utilizando a estrutura “case” 4Linux – www.4linux.com.br Exemplo 1: Executar comandos dependendo do usuário digitado. 1 #!/bin/bash 2 3 clear 4 echo "Digite um nome de usuário" 5 read Usuario 6 case $Usuario in 7 aluno ) 8 clear ; ls /etc ; cal ; date 9 ;; 10 root ) 11 clear ; whoami 12 ;; 13 *) 14 clear 15 echo $Usuario não existe 16 ;; 17 esac Exemplo 2: Script que exibe informações do sistema. 1 #!/bin/bash 2 clear 3 echo "Escolha uma opção para informações da maquina (Digite o numero )" 4 echo "1-Horario do sistema" 5 echo "2-Tempo que o servidor esta ligado" 6 echo "3-Quantidade de usuário logados" 7 echo "4-Sair" 8 read ESC 9 case $ESC in 10 1) 11 H=$(uptime | awk -F" " ’{ print $1 }’) 12 echo "Agora são $H" Página 4 Linux System Administration 4Linux – www.4linux.com.br 5.4 Utilizando a estrutura “for” 2 comandos com a VARIAVEL 3 done Exemplo 1: Compactar todos os arquivos do diretório atual. 1 #!/bin/bash 2 for i in ‘ls -1‘ 3 do 4 tar -cvzf $i.tar.gz $i 5 done Exemplo 2: Apaga todos os arquivos de uma determinada extensão. 1 #!/bin/bash 2 clear 3 echo "Digite a extensão dos arquivos que você quer apagar" 4 read ARQ 5 for i in *.$ARQ ; do 6 rm $i 7 done Exemplo de Loop Vamos criar um script que fará uma verificação de quais máquinas estão ativas na rede, para isso usaremos o comando ping. 1 # ping 192.168.200.254 Usaremos algumas opções do comando ping para que ele não entre num loop, como acontece por padrão, e espere nossa interação para interrompe-lo: Linux System Administration Página 7 5.5 Transformar Shell Script em binário 4Linux – www.4linux.com.br 1 # ping -c 2 -w 2 192.168.200.1 Iremos agora elaborar o shell script hostup.sh 1 #!/bin/bash 2 for IP in $(seq 1 15); do 3 ping -c 2 -w 2 192.168.200. $IP > /dev/null && 4 echo "192.168.200. $IP - UP" || 5 echo "192.168.200. $IP - DOWN" 6 done Dê permissão de execução ao “script” e execute-o para testá-lo: 1 # cd /sbin 2 # chmod u+x hostup.sh 3 # hostup.sh Programar em “shell script” é uma arte, e como na arte, em “shell” o limite é a sua imaginação. Para se aprofundar nesse assunto: http://jneves.wordpress.com/ http://aurelio.net 5.5 Transformar Shell Script em binário Obtenha o arquivo compactado no site usando o comando wget: Página 8 Linux System Administration 4Linux – www.4linux.com.br 5.5 Transformar Shell Script em binário 1 # wget -c http ://www.datsi.fi.upm.es/~ frosal/sources/shc -3.8.6. tgz Descompacte o arquivo: 1 # tar -xvzf shc -3.8.6. tgz Copie o binário o shc para /usr/local/bin 1 # cp shc -3.8.6/ shc /usr/local/bin/ Compile seu shell script usando o comando: 1 # shc -v -r -f script Opções de linha de comando: • -v: Modo verbose (mostra o que esta fazendo); • -r: Gera um binário compatível com mais de um sistema; • -f: Opção para o compilador buscar o arquivo; Copie o arquivo binário para /bin (assim todos os usuários terão acesso) 1 # cp script.x /bin/script Acerte as permissões do arquivo para que todos os usuários tenham acesso. Linux System Administration Página 9 Conteúdo Gerenciamento de dados SQL 2 6.1 Introdução ao SGBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 6.2 Instalação do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 6.3 Criação do Banco de Dados e Tabelas . . . . . . . . . . . . . . . . . . . 4 6.4 Inserir e pesquisar dados em tabelas . . . . . . . . . . . . . . . . . . . . 6 6.5 Atualizar campos e registros em tabelas . . . . . . . . . . . . . . . . . . 6 6.6 Alterando privilégios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2 Gerenciamento de dados SQL 6.1 Introdução ao SGBD Antes de iniciar a criação de bancos de dados e tabelas, é preciso ter instalado na maquina um SGBD. Que consiste é um sistema gestor de base de dados, onde dis- ponibiliza uma interface para que clientes (usuários), possam interagir com o banco de dados, de varias maneiras como inserir dados, pesquisar, excluir, entre outras tarefas. Os comandos são executados usando a linguagem SQL (Structured Query Language - Linguagem de Consulta Estruturada), que é uma linguagem para banco de dados relacional, facilitando a interação com vários SGBDs, como por exemplo o Firebird, PostgreSQL, MySQL, entre outros. As provas do LPI irão cobrar comandos básicos de SQL. 6.2 Instalação do MySQL 1) Para os nossos testes, vamos utilizar o “MySql”: 1 # aptitude install mysql -server 3 6.3 Criação do Banco de Dados e Tabelas 4Linux – www.4linux.com.br 2) Ganhando acesso ao Banco de dados: 1 # mysql -u root -p 3) Visualizando “databases”: 1 mysql > show databases; 6.3 Criação do Banco de Dados e Tabelas 1) Criando “database”: 1 mysql > create database lpi; 2) Utilizando “database”: 1 mysql > use lpi; 3) Veremos agora como criar as tabelas, onde os dados serão armazenados. A síntese de criação de tabelas do MySQL é a seguinte: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] nome_tabela [(definição_create,...)] [table_options] [select_statement] Novamente podemos nos valer do parâmetro opcional “IF NOT EXISTS” para execu- tarmos o comando sem termos certeza da existência ou não da tabela. Para criarmos uma tabela executamos a seguinte parte da sintaxe: “CREATE TABLE nome_tabela”. Página 4 Linux System Administration 4Linux – www.4linux.com.br 6.6 Alterando privilégios 1 mysql > alter table lpi 2 -> add nome varchar (80) not null; 2) Liste a estrutura da tabela: 1 mysql > desc lpi; 3) Selecionar todos os registros da tabela “lpi”: 1 mysql > select * from lpi; 4) Atualize o registro 1 onde o campo id possui o valor igual a 1: 1 mysql > update lpi set nome=’fulano ’ where id=’1’; 6.6 Alterando privilégios 1) Adicionando usuário: 1 mysql > GRANT ALL PRIVILEGES ON lpi.* TO curso@localhost 2 IDENTIFIED BY ’cursolinux ’ WITH GRANT OPTION; 3 FLUSH PRIVILEGES; Atribui todos os privilégios à todas as tabelas do banco “lpi” ao usuário “curso”, a partir da máquina “localhost”, cuja senha é “cursolinux”. O comando “FLUSH PRI- VILEGES” atualiza as novas alterações no “daemon” do MySQL. Caso o usuário “curso” não exista, um novo usuário será criado. Linux System Administration Página 7 6.6 Alterando privilégios 4Linux – www.4linux.com.br 2) Saindo do Mysql: 1 mysql > quit 3) Faça testes de login com o usuário “root” e o usuário “curso”: 1 # mysql -u root -p 2 # mysql -u curso -p Página 8 Linux System Administration 4451 Linux System Administration www.4linux.com.br Administração de Usuários I 7.1 Registro de usuários no sistema Há quatro arquivos básicos que dizem respeito à administração de usuários, sendo eles: • passwd -> contém as informações dos usuários; • shadow -> contém as informações das senhas dos usuários; • group -> contém as informações dos grupos e usuários que fazem parte deles; • gshadow -> contém informações a respeito das senhas de grupo. Leitura Sugerida, para administração de usuários: passwd -> man 5 passwd shadow -> man 5 shadow Leitura Sugerida, para administração dos grupos: 4 4Linux – www.4linux.com.br 7.1 Registro de usuários no sistema group -> man 5 group gshadow -> man 5 gshadow 7.1.1 Arquivo /etc/passwd Cada usuário cadastrado no sistema é identificado por uma linha no arquivo “/etc/- passwd”. Os campos são separados pelo caractere “:” (dois pontos). O formato do ar- quivo “/etc/passwd” é o seguinte: usuario:x:1000:1000:User da Silva,8111-1234:/home/usuário:/bin/bash Onde: Campo 1 -> Login do usuário; Campo 2 -> Referência da senha do usuário, pois ela fica armazenada em outro arquivo. Campo 3 -> O “UID - User Identify” é o número de identificação do usuário. Essa identificação é dividida conforme a categoria dos usuários: UID 0 -> É o número do usuário administrador “root”. Debian: UID de 1 a 999 -> São os números para usuários de sistema. UID de 1000 a 65535 -> São os números para usuários normais. CentOS: UID de 1 a 499 -> São os números para usuários de sistema. Linux System Administration Página 5 7.1 Registro de usuários no sistema 4Linux – www.4linux.com.br UID de 500 a 65535 -> São os números para usuários normais. Essas definições de usuários de sistema e usuários normais podem variar nas distri- buições, somente o “UID 0” é padrão em todas as distribuições. Campo 4 -> O “GID - Group Identity” é o número de identificação do grupo primário do usuário. Essa identificação é também dividida em 3 categorias como o UID: GID 0 -> É o número do grupo administrador “root”. Debian: GID de 1 a 999 -> São os números para grupos de sistema. GID de 1000 a 65535 -> São os números para grupos normais. CentOS: UID de 1 a 499 -> São os números para grupos de sistema. UID de 500 a 65535 -> São os números para grupos normais. Campo 5 -> Comentários e informações adicionais sobre o usuário; Campo 6 -> Diretório pessoal; Campo 7 -> Shell do usuário; Usar o comando “getent”, é a maneira certa de se acessar arquivos de controle no GNU/Linux. Página 6 Linux System Administration 4Linux – www.4linux.com.br 7.2 Levantamento de informações dos usuários 7.2.3 Comando groups A lista dos grupos existentes no sistema é armazenada em /etc/group. O uso do comando groups, sem parâmetros, faz com que o sistema informe os gru- pos dos quais o usuário é membro. 1 # groups Para ver qual grupo o usuário aluno pertence utilize a seguinte sintaxe: 1 # groups aluno 7.2.4 Comando finger O comando “finger” é mais amigável e nos traz maiores informações como: Lo- gin, Nome, Diretório “home”, “Shell”, número de e-mails não lidos e os horários das últimas autenticações que esse usuário realizou. 1 # finger aluno 7.2.5 Comando users O comando “users” mostra de maneira bem simples os usuários que estão logados no sistema. A sintaxe do comando “users” é a seguinte: Linux System Administration Página 9 7.2 Levantamento de informações dos usuários 4Linux – www.4linux.com.br 1 # users 7.2.6 Comando who O comando “who” mostra quais usuários estão logados na máquina. Traz informa- ções adicionais sobre qual terminal está sendo utilizado, o momento e a partir de qual máquina foi feito o “login” de cada usuário. 1 # who 7.2.7 Comando w O comando “w” é similar ao “who”, mas traz também informações sobre o que cada usuário está fazendo, tanto local quanto remotamente. Esse comando é muito útil para ver se não existem conexões indevidas em nosso sistema. A sintaxe do comando “w” para visualizar todos os usuários logados é a seguinte: 1 # w Para visualizar se o usuário aluno está logado a sintaxe é a seguinte: 1 # w aluno Página 10 Linux System Administration 4Linux – www.4linux.com.br 7.3 Criando grupo 7.3 Criando grupo Um usuário sempre deve pertencer a um grupo primário, mas pode ser adicionado a grupos secundários, normalmente usado dentro de uma estrutura empresarial onde os usuários precisam pertencer a vários grupos para terem acessos a arquivos de outros setores. 7.3.1 Comando addgroup Adiciona um grupo ao sistema. ou adiciona um usuário a um grupo. Só funciona no Debian: Adicione o grupo rede e grupo internet: 1 # addgroup rede 2 # addgroup internet CentOS: Não existe o comando. 7.3.2 Comando groupadd O comando groupadd cria um novo grupo usando valores especificados na linha de comando e os valores padrões do sistema. O novo grupo será criado nos arquivos do sistema, conforme o requerido. Adicione o grupo aula: Linux System Administration Página 11 7.4 Criando Usuários 4Linux – www.4linux.com.br 1 # id mandark 2 # ls /home/mandark CentOS: O comando adduser no CentOS é um link para o comando useradd. Veja o comando "useradd". 7.4.2 Comando useradd Podemos também adicionar usuários através do comando “useradd”, que é um pouco mais complexo e precisa de alguns parâmetros a mais. Adicione o usuário levinsky e o usuário leelee: 1 # useradd leelee 2 # useradd levinsky Tente se logar com o usuário “levinsky” em um terminal e repare que não é pos- sível, pois ainda não foi definida uma senha para ele. Adicione uma senha para o usuário: 1 # passwd levinsky Agora tente se logar no terminal com o usuário levinsky e veja que, é possível após ser definida a senha. Mas tente se logar na parte gráfica e veja o que acontece, não é possível, pois o usuário não tem diretório home. Para criar o usuário “deedee” com os principais atributos faça: Página 14 Linux System Administration 4Linux – www.4linux.com.br 7.5 Adicionando usuário ao grupo 1 # useradd -m -s /bin/bash -u 3000 -g 100 -p ‘perl -e ’print crypt (123456 , "salt")’‘ deedee Acima criamos o usuário deedee, onde: -m -> cria diretório home, caso ele não exista -s -> shell do usuário -u -> UID -g -> GID -p -> senha criptografada perl -e ’print crypt(123456, “salt”)’ -> criptografar senha 123456 no formato crypt Verifique o UID e GID do usuário vendas: 1 # id deedee Logue-se com o usuário deedee no terminal e na parte gráfica. 7.5 Adicionando usuário ao grupo 7.5.1 Comando addgroup O comando addgroup pode ser utilizado para adicionar um usuário a um grupo. Adi- cione o usuário mandark ao grupo rede, aula e aluno: Linux System Administration Página 15 7.5 Adicionando usuário ao grupo 4Linux – www.4linux.com.br 1 # addgroup mandark rede 2 # addgroup mandark aula 3 # addgroup mandark aluno CentOS: Não existe o comando. 7.5.2 Comando adduser Só funciona no Debian: O comando adduser também é utilizado para adicionar um usuário à um grupo, sua sintaxe é: 1 # adduser [usuário] [grupo] Adicione o usuário mandark ao grupo empresa: 1 # adduser mandark empresa Visualize os grupos que o usuário pertence: 1 # id mandark CentOS: Página 16 Linux System Administration 4Linux – www.4linux.com.br 7.7 Removendo usuários 7.6.3 Comando delgroup Remove um usuário de um grupo. Só funciona Debian: Remova o usuário mandark do grupo social: 1 # delgroup mandark social Visualize: 1 # id mandark 7.7 Removendo usuários A remoção de usuários pode ser feita de duas formas. A primeira é mantendo o dire- tório “home” do usuário e a segunda, removendo também o “home”. É aconselhável que se remova o diretório do usuário para que um próximo usuário adicionado ao sistema não acabe como dono daquele diretório e tendo acesso a informações às quais ele não deveria ter. Isso pode acontecer porque a delegação de “UID’s” é se- quencial. Mas para remover o usuário com o seu diretório, também é aconselhável, antes, fazer um backup de tudo o que aquele usuário possuía ou transferir todos os arquivos para o responsável. O usuário que será removido não pode estar logado. 7.7.1 Comando userdel A sintaxe para remover o usuário e manter o seu diretório home é a seguinte: Linux System Administration Página 19 7.7 Removendo usuários 4Linux – www.4linux.com.br 1 # userdel [usuário] Remova a usuária meemee: 1 # userdel meemee Repare que a usuária meemee foi removida, mas seu diretório home não: 1 # ls -l /home O problema aqui é que o próximo usuário que for criado, herdará o diretório pra si, veja: 1 # adduser herdeiro 2 # ls -l /home Além de ser criado um diretório home, ele também herda o do usuário anterior, isto acontece porque os usuários são criados conforme os UID’s disponíveis na sequên- cia. Para remover o usuário e o seu diretório “home”, é necessário utilizar a opção “-r” da seguinte forma: 1 # userdel -r [usuário] Remova o usuário deedee e seu diretório home: 1 # userdel -r deedee Página 20 Linux System Administration 4Linux – www.4linux.com.br 7.7 Removendo usuários Verifique que foi deletado o diretório home do usuário deedee: 1 # ls -l /home 7.7.2 Comando deluser Só funciona no Debian: O comando deluser deleta um usuário. Delete o usuário levinsky: 1 # deluser levinsky Verifique que o diretório home do usuário não foi removido: 1 # ls -l /home Adicione novamente o usuário levinsky: 1 # adduser levinsky Delete o usuário levinsky e seu diretório home: 1 # deluser levinsky --remove -home Verifique que o diretório home do usuário foi removido: 1 # ls -l /home Linux System Administration Página 21 7.8 Removendo grupos 4Linux – www.4linux.com.br CentOS: Não existe o comando. Página 24 Linux System Administration 4451 Linux System Administration www.4linux.com.br Conteúdo Administração de Usuários II 2 8.1 Modificando Usuários . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 8.1.1 Comando passwd . . . . . . . . . . . . . . . . . . . . . . . . . . 3 8.1.2 Comando usermod . . . . . . . . . . . . . . . . . . . . . . . . . 4 8.2 Alteração do Dono e Grupo . . . . . . . . . . . . . . . . . . . . . . . . . 7 8.3 Introdução a tipos de permissões . . . . . . . . . . . . . . . . . . . . . . 9 8.4 Permissões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 8.4.1 LITERAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 8.4.2 OCTAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 8.4.3 Exemplos de permissões . . . . . . . . . . . . . . . . . . . . . . 17 8.5 Umask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 8.5.1 Cálculo da umask . . . . . . . . . . . . . . . . . . . . . . . . . . 21 8.6 Permissões Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved