Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Treinamento OC 2k17 Linux Básico Disco, prato, trilhas, setores e cilindros Todo disco rígido apresenta trilhas magnéticas mapeadas que necessitam de um formato específico para a leitura e gravação de dados. Inode: Um inode é uma estrutura de dados em um Sistema de arquivos (file system) do Linux/Unix que armazena toda a informação sobre um determinado arquivo. Filesystem: É uma hierarquia de diretórios que é utilizada para organizer arquivos em um computador. Quando um arquivo é criado, ambos os nomes do arquivos e os números dos inodes correspondentes são armazenados como entradas de diretório, exibindo para o usuário o conteúdo e seus arquivos. Esses diretórios que assossiam nomes de arquivos com inodes. O Sistema operacional obtem o número do inode de um arquivo e a sua informação pelo chamado STAT. Inode e Filesystem Inode Layout Sistemas de Arquivos O ext3 é uma atualização do sistema de arquivos ext2. Em relação ao ext2, a principal diferença é a implementação do journaling. O ext4 é última versão do sistema de arquivos extFS até o momento, ele é na verdade a atualização do ext3. O XFS é considerado por muitos de alto desempenho, é um sistema de arquivos de 64 bits sendo compatível com sistemas de 32 bits. Foi desenvolvido inicialmente para o SO IRIX, depois portado para o kernelGNU/Linux. O ReiserFS foi criado por Hans Reiser e pode ser usado pelas distribuições GNU/Linux, sendo que algumas dão bom suporte durante a instalação e outras não. Sua versão atual é a 3.6.x. O ReiserFS foi o primeiro sistema de arquivos com suporte a journaling incluído no núcleo do GNU/Linux. O JFS foi criado com o propósito principal de ser utilizado em servidores que deveriam usar poucos recursos do processador, e ser capaz de ser redimensionado mesmo em uso Ext4 Partition: Reserved boot block, Collection of equally sized block groups An ext4 file system is split into a series of block groups. To reduce performance difficulties due to fragmentation, the block allocator tries very hard to keep each file’s blocks within the same group. XFS – Também possui inodes de tamanho igual, porém apresenta performance melhorada e não tem as limitações de endereçamento do ext4. Foi empregado em estações de processamento gráfico de alto desempenho. Task ext3/4 XFS Create a file system mkfs.ext4 or mkfs.ext3 mkfs.xfs File system check e2fsck xfs_repair Resizing a file system resize2fs xfs_growfs Save an image of a file system e2image xfs_metadump and xfs_mdrestore Label or tune a file system tune2fs xfs_admin Backup a file system dump and restore xfsdump and xfsrestore Common Commands for ext3/4 and XFS: Estrutura de diretórios Linux. Pastas montadas na raiz, chama de “/” /var - Este diretório contém os as filas de e-mail e impressão, que são muito manipuladas. Há também os arquivos de log, cujo conteúdo está em constante alteração e crescimento. /usr - Programas, códigos fonte e documentação. O ciclo de alteração desses arquivos é longo. /tmp - Espaço temporário utilizado por programas. Uma partição distinta para /tmp impedirá que dados temporários ocupem todo o espaço no diretório raiz, causando travamento do sistema. Não necessita de backup. /home - Diretórios pessoais do usuário. Uma partição distinta ajuda a limitar o espaço disponível para usuários comuns. Sugestões de diretórios que podem estar em outros dispositivos/partições: 10 Com o fdisk podemos criar novas partições em um disco, até 4 partições primárias e inúmeras partições lógicas, dependendo somente do tamanho do disco (levando em conta que cada partição requer um mínimo de 40MB). Também podemos modificar ou deletar partições já existentes ou recém criadas no disco. O FDISK VISUALIZANDO AS PARTIÇÕES NO HD Antes de criar uma nova partição, modificar ou deletar, você vai precisar dar uma olhada em todas as partições que existem no disco. Então para esta missão vamos usar o "fdisk -l", como abaixo: # fdisk –l Para ver apenas as partições de um determinado disco podemos incluir no comando o nome do disco como segue: # fdisk -l /dev/sda FDISK Para ver as partições dentro do fdisk, usar o opção"p": # fdisk /dev/sda Visto, vamos deletar sda6, sda7 e sda8 usando o comando "d", desta maneira: Comando (m para ajuda): d Número da partição (1-9): 6 Comando (m para ajuda): d Número da partição (1-9): 7 Comando (m para ajuda): d Número da partição (1-9): 8 Comando (m para ajuda): w A tabela de partições foi alterada! FDISK Podemos criar uma nova partição de um tamanho específico utilizando o comando "n", conforme abaixo: Comando (m para ajuda): w A tabela de partições foi alterada! FDISK Depois de criada a partição deve ser formatada com o comando "mkfs", de acordo com o tipo de sistema de arquivos desejado. Digamos que tenhamos criado a partição "9", alguns exemplos seriam: Para ext4: # mkfs.ext4 /dev/sda9 2) Para reiserfs: # mkfs.reiserfs /dev/sda9 3) Para ntfs (Windows XP e outros): # mkfs.ntfs /dev/sda9 MKFS MONTAR E EXIBIR FSTAB O que é o fstab. O fstab é o arquivo de configuração que contém informações sobre todas as partições e dispositivos de armazenamento do computador. Esse arquivo está localizado no diretório /etc, de forma que o caminho completo desse arquivo é /etc/fstab. O /etc/fstab é apenas um arquivo de texto puro, de forma que você pode abri-lo e edita-lo com qualquer editor de texto que esteja familiarizado. Porém, observe que você precisa ter privilégios de super-usuário antes de poder editar o fstab. Assim, para poder editar esse arquivo, você precisa logar como root ou usar o comando su para tornar-se super-usuário. FSTAB Visão geral do arquivo Naturalmente cada máquina possui um arquivo /etc/fstab um pouco diferente porque suas partições, dispositivos e suas propriedades são diferentes em cada sistema. Mas a estrutura básica dele é sempre a mesma. Abaixo segue um exemplo do conteúdo do /etc/fstab: 1ª 2ª 3ª 4ª 5ª 6ª dev/hda2 / ext2 defaults 1 1 /dev/hdb1 /home ext2 defaults 1 2 /dev/cdrom /media/cdrom auto ro,noauto,user,exec 0 0 /dev/fd0 /media/floppy auto rw,noauto,user,sync 0 0 proc /proc proc defaults 0 0 Como pode ver, cada linha contém a informação de um dispositivo ou partição. A primeira coluna contém o nome do dispositivo, a segunda seu ponto de montagem, a terceira o tipo do sistema de arquivo, a quarta são as opções de montagem, a quinta (um número) opções de esvaziamento, e a sexta (outro número) são as opções de checagem do sistema de arquivos. FSTAB 1ª e 2ª colunas: Dispositivos e pontos de montagens padrão - A primeira e segunda coluna devem ser bem diretas. Elas dizem ao comando mount exatamente as mesmas coisas que você informaria a ele se fosse montar algo manualmente: o que é o dispositivo ou partição, e onde será o ponto de montagem. 3ª coluna: Tipo do sistema de arquivo - A terceira coluna do arquivo especifica o tipo de sistema de arquivo do dispositivo ou partição. Exp. Ext3, Ext4, reiserfs. 4ª coluna: Opções de montagem - A quarta coluna no fstab lista as opções de montagem dos dispositivo ou partições 5ª e 6ª colunas: Opções dump e fsck - Dump é um utilitário de backup e fsck é um utilitário de checagem do sistema de arquivos. A quinta coluna no arquivo /etc/fstab é a opção dump. Ela verifica e usa esse número para decidir se um sistema de arquivo deve ou não ser alvo de backup. Se for zero, o dump ignorará esse sistema de arquivos. A sexta coluna é a opção fsck. O utilitário verifica esse número para determinar em que ordem os sistemas de arquivos devem ser checados. Se seu valor for zero o sistema não será checado. Obs.: Para verificar se o arquivo /etc/fstab está consistente digite: mount –a, caso o Linux reporte algum erro, verifique-o e faça as correções, pois o sistema não inicia com erros neste arquivo. Editar o FSTAB No vim digitar: Syntax on BLKID – “Billy the Kid” Identificador de discos no sistema. Precisa estar formatado. Usos comuns de armazenamentos o que é NAS? NAS (Network Attached Storage) é um dispositivo de armazenamento conectado a uma rede que possibilita o armazenamento e a recuperação de dados de um local centralizado para usuários autorizados da rede e clientes heterogêneos. Os dispositivos NAS são flexíveis e de expansão horizontal, significando que à medida que você precisar de mais armazenamento, pode adicionar ao que você já tem. Um NAS é como ter uma nuvem privada no escritório. É mais rápido, mais barato e fornece todos os benefícios de uma nuvem pública local, fornecendo controle total para você. Os dispositivos NAS são perfeitos para pequenas empresas. pois são: Simples de operar, dispensando a presença de um profissional de TI dedicado De menor custo Fácil de usar para fazer backup de dados, então estão sempre acessíveis quando você Usos comuns de armazenamentos SAS A sigla significa Serial Attached SCSI, ou SCSI com Serial Anexado. Isso já diz bastante sobre como ele atua. É um novo padrão SCSI, porém com comunicação em série, não paralela. É como o SATA está para o ATA. Inclusive, ele foi inspirado no próprio SATA e tem uma grande compatibilidade com este padrão. O grande diferencial dele é que pode permitir a ligação dos HDs com extensores a uma única porta SAS. Usos comuns de armazenamentos O Que É SAN? Um storage area network (SAN) é um rede de dispositivos que conectam vários clientes e dispositivos de armazenamentos (Figura 01). Portanto, no SAN existi vários caminhos disponíveis para o transporte de dados entre dois pontos. Esta característica de múltiplos caminhos do SAN permite flexibilidade, disponibilidade, e escalabilidade. Flexibilidade: A configuração do software elimina ou reduz a necessidade de reorganizar os cabos quando é feita alguma modificação no projeto. Disponibilidade: Múltilplos caminhos protegem contra falha de um caminho entre cliente e um dispositivo de armazenamento. Escalabilidade: Permite uma maior quantidade de dispositivos serem conectados do que o DAS permite. Existem dois tipos de maneiras que você pode colocar seus HDs em modo RAID. Por meio de Hardware ou por meio de Software. Caso decida usar o hardware, você tem de fazer isso por meio de sua BIOS para configurar o controlador RAID do hardware. Como cada BIOS é diferente, é necessário dar uma lida no manual para os passos indicados. Você pode também acessar o site oficial da fabricante do disco rígido para obter mais informações. ARRAY - MATRIZ RAID RAID E NAS STORAGE SAN E NAS DIAGRAMA SAN RAID 0 é o modo de RAID mais rápido, pois grava dados entre todos os discos do volume. Além disso, as capacidades de cada disco são adicionadas juntas para otimizar o armazenamento de dados. Raid 0: O Raid 0 permite que você melhore o desempenho usando múltiplos HDs. Quando o utiliza, o seu computador grava os dados em dois ou mais HDs de forma igual. Um exemplo, você grava 1GB de dados, 500MB fica armazenado em um HD e os outros 500MB, em outro HD. Sendo assim, quando os dados precisam ser lidos, ele lê um pedaço de cada HD, mais rápido do que fazer em apenas um. Uma das desvantagens desse modo é que caso um dos HDs falhe, todos os seus dados são perdidos. RAID – REDUNDANT ARRAY OF INDEPENDENT DISKS. Mdadm usa níveis. Level = níveis. RAID 0 - STRIPING http://www.seagate.com/br/pt/manuals/network-storage/business-storage-nas-os/raid-modes/ https://www.baboo.com.br/hardware/armazenamento/entenda-quais-sao-os-tipos-de-raid/ 30 O RAID 1 fornece segurança de dados aprimorada, já que todos os dados são gravados em cada disco no volume. Se um disco único falhar, os dados permanecem disponíveis no outro disco no volume. Contudo, devido ao tempo que leva para gravar dados várias vezes, o desempenho é reduzido. Além disso, o RAID 1 reduzirá a capacidade do disco em 50% ou mais, pois cada bit de dados é armazenado em todos os discos no volume. RAID 1 - MIRRORING O RAID 5 grava dados entre todos os discos no volume e um bloco de paridade para cada bloco de dados. Se um disco físico apresentar falha, os dados do disco com falha podem ser recriados em um disco de substituição. Não há perda de dados em caso de falha em um disco único, mas se um segundo disco falhar antes da recriação dos dados no disco rígido de substituição, todos os dados no array serão perdidos. São necessários no mínimo três discos para recriar um volume RAID 5. O RAID 5 oferece desempenho comparável ao do RAID 0 com a vantagem de proteger os dados. O RAID 5 Synopsis mdadm [mode] <raiddevice> [options] <component-devices> Description RAID devices are virtual devices created from two or more real block devices. This allows multiple devices (typically disk drives or partitions thereof) to be combined into a single device to hold (for example) a single filesystem. Some RAID levels include redundancy and so can survive some degree of device failure. 1 – Particionar os discos 2 - Criar o array 3 – Adicionar o array ao arquivo de configuração 4 – Formatar o array 5 – Montar o array 6 – Verificar o array 7 – Inserir array no fstab Obs: disco 1 e disco 2 do debian mdadm - manage MD devices aka Linux Software RAID https://linux.die.net/man/8/mdadm 33 Criar as partições em disco: Fdisk /dev/sdb Fdisk /dev/sdc Obs: desmontar o que estiver montado. Apagar as partições anteriores. Editar ou comentar a linha no fstab. Fdisk – type (t) fd = RAID partition GRAVAR COM W!!!! RAID - Configuração Agora vamos criar o RAID 1 # mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdb1 Onde: --create :: cria o dispositivo /dev/md0 /dev/md0 :: ele cria um dispositivo MD, que significa Multiple Device, ou seja, pode-se ter múltiplos dispositivos neste array --level=1 :: é o nível do RAID, estamos usando RAID 1, que é o RAID de espelhamento --raid-devices=2 :: número de discos do RAID. No nosso caso são 2 HDs /dev/sdc1 :: Partição que será adicionada ao array /dev/md0 /dev/sdb1 :: Partição que será adicionada ao array /dev/md0 Vamos formatar o novo dispositivo MD no sistema de arquivos ext4: # mkfs.ext4 /dev/md0 UU = ambos discos ativados Criar o array RAID Verificar o array criado Verificar o array criado Adicionar o array criado ao arquivo de configuração Formatar o array Montar o array para uso imediato Verificar o array montado Inserir o array no fstab RAID - Configuração Finalizamos a criação do array, agora vamos ver o andamento da sincronização dos 2 discos: # watch -n 1 cat /proc/mdstat # mdadm –detail /dev/md0 RAID - Configuração Vamos configurar o RAID para toda vez que ligar a máquina, ele já automontar a partição para utilizar: Primeiro, vamos criar a pasta: # mkdir -p /mnt/raid1 Agora vamos ver o UUID do array para configurar na inicialização (/etc/fstab): # blkid /dev/md0 O resultado vai ser alguma coisa parecida com isso: /dev/md0: UUID="f600331d-8f52-49eb-ae69-ea5f85fbbd2b" TYPE="ext4" Agora vamos abrir o "/etc/fstab" e inserir esse dispositivo na inicialização do servidor: UUID=f600331d-8f52-49eb-ae69-ea5f85fbbd2b /mnt/raid1 auto defaults,errors=remount-ro 0 1 update-initramfs sudo -u Verificação e teste de falha # mdadm --manage --set-fault /dev/md0 /dev/sdc1 RAID - Configuração Removendo o disco com problemas # mdadm /dev/md0 -r /dev/sdc1 RAID - Configuração Adcionando novo disco ao RAID # mdadm /dev/md0 -a /dev/sdc1 RAID - Configuração O Linux é um sistema multiusuário, portanto necessita de gerência destas contas de usuários. Como administrador de sistemas é importante saber como funciona esta gestão que engloba os arquivos de configuração referente aos usuários. Todo usuário possui um UID (User ID) é sua identificação única. O usuário também possui GID que é a identificação do grupo primário do usuário. O principal arquivo de configuração dos usuários é /etc/passwd que tem 7 campos distribuídos da seguinte forma: [login]:[senha]:[UID]:[GID]:[Nome Completo]:[home]:[shell] login: Usado para logar no sistema senha: palavara chave UID: Número de identificação do Usuários GID: Número de identificação do grupo do usuário Comentários: Informações extras sobre o usuário home: diretório home – Espaço de trabalho do usuário shell: interpretador de comandos Administração de usuários Quando um usuário é criado outros arquivos também são alterados. São eles o /etc/shadow e o /etc/group. No /etc/shadow contém a senha criptografada do usuário e no /etc/group a lista de grupos que este usuário pertence. /etc/shadow – informações de contas de usuários e senhas criptografadas; /etc/group – informações de grupos do sistema. Administração de usuários Campos do arquivo /etc/shadow: Nome do usuário: alexandre Senha criptografada: ! = não possui senha; * = conta desativada; ! + Senha = conta travada; !! = nunca configurou senha Última mudança de senha: 16865 - dias decorridos entre 1 de janeiro de 1970 Número de dias para que a mudança de senha seja permitida: 0 tipicamente este número é zero, permitindo que o usuário mude sua senha quando desejar. Número de dias após o qual a senha deve ser alterada: caso a alteração da senha não seja forçada, este número será 99999. Número de dias antes da expiração da senha : 7 tipicamente o usuário é avisado com uma semana de antecedência. Número de dias entre a expiração da senha e a desativação da conta: caso não se queira desativação automática da conta, este campo é deixado em branco ou com o valor 1. Dia da desativação da conta: dias decorridos entre 1 de Janeiro de 1970 e a data em que a conta será desativada. Campo reservado: para uso futuro. Administração de usuários Administração de usuários Campos do arquivo /etc/group: nome do grupo: senha (opcional): Isso só é usado para participar de um grupo quando não se é um membro usual gid: identificar numérico único para cada grupo; lista de membros: lista de nomes de usuários que são membros do grupo, separados por vírgulas. O comando id exibe informações sobre o usuário logado Useradd - Para adicionar um usuário no sistema, é necessário ter privilégios de administrador (#root). #useradd [opções] LOGIN d - Caminho do diretório home do usuário. g - Especifica o grupo do usuário. c - Inclui um comentário referente ao usuário, tais como nome, setor, etc s - Especifica o shell de comando que o usuário irá utilizar. p - Essa opção serve para especificarmos uma senha já criptografada para o usuário. Cria o usuário aluno. # useradd aluno Cria o usuário designando o diretório pessoal /home/aluno # useradd –m aluno Cria o usuário aluno com o grupo root. #useradd –U root aluno Cria o usuário aluno com com várias informações. #useradd –m –U –c “aluno Infnet” aluno Administração de usuários O comando passwd permite que se troque a senha de determinado usuário. O superusuário pode trocar a senha de qualquer outro. O usuário comum, porém, pode trocar somente a sua senha. #passwd [usuário/grupo] [opções] opções -g - Se especificada, a senha do grupo será alterada. Somente o root ou o administrador do grupo pode alterar sua senha. A opção -r pode ser usada com esta para remover a senha do grupo. A opção -R pode ser usada para restringir o acesso do grupo para outros usuários. -x [dias] Especifica o número máximo de dias que a senha poderá ser usada. Após terminar o prazo, a senha deverá ser modificada. -i Desativa a conta caso o usuário não tenha alterado sua senha após o tempo especificado por -x. -n [dias] Especifica o número mínimo de dias para a senha ser alterada. O usuário não poderá mudar sua senha até que [dias] sejam atingidos desde a última alteração de senha. -w [num] Número de dias antecedentes que o usuário receberá o alerta para mudar sua senha. O alerta ocorre [num] dias antes do limite da opção -x, avisando ao usuários quantos dias restam para a troca de sua senha. -l [nome] Bloqueia a conta do usuário [nome]. Deve ser usada pelo root. O bloqueio da conta é feito acrescentando um caracter a senha para que não confira com a senha original. -u [nome] Desbloqueia a conta de um usuário bloqueada com a opção -l. -S [nome] Mostra o status da conta do usuário [nome]. A primeira parte é o nome do usuário seguido de L(conta bloqueada), NP(sem senha), ou P (com senha), a terceira parte é a data da última modificação da senha, a quarta parte é a período mínimo, máximo, alerta e o período de inatividade para a senha. Administração de usuários Modificando o perfil de um usuário O comando usermod tem a mesma sintaxe e os mesmos parâmetros (existem algumas opções a mais) do comando useradd, a diferença é que ele modifica ou adiciona informações relativas a um usuário já cadastrado. usermod [ opções ] usuário Opções: -d - Modifica o caminho do diretório home do usuário. -g - Modifica o grupo do usuário. -L – Bloqueia o usuário no sistema -U – Desbloqueia o usuário -c - Modifica o comentário referente ao usuário. -p - Substitui a senha já criptografada do usuário. Administração de usuários Eliminando usuários O comando userdel permite que se eliminem usuários do sistema. Somente o superusuário poderá utilizar este comando. userdel [opções] usuário Exemplos de utilização: #userdel aluno Eliminando a conta do usuário e apagando o seu diretório home. #userdel –r aluno Administração de usuários O comando chage possibilita modificar configurações de uma conta de usuário que tenham relação com sua expiração. Essas informações ficam armazenadas no arquivo /etc/shadow, incluindo a senha criptografada do usuário. Significado das opções: -l - Mostra informações da conta de usuário fornecida. -m <n> - Minimum Password Age, onde "n" é a quantidade mínima de dias para a troca da senha. -M <n> - Máximo Password Age, onde "n" é a quantidade máxima de dias para a troca da senha. -d <data> - Last Password Change, onde "data" é a data da última troca da senha. -W <n> - Password Expiration Warning, onde "n" é a quantidade de dias antes da expiração da senha, em que o usuário irá começar a receber o aviso para a troca da senha. -I <n> - Password Inactive, onde "n" tem que ser ao menos a quantidade de dias de senha expirada +1, isso significa se a senha esta expirada a 10 dias, temos que no mínimo colocar n=11, para a conta seja reativada e o usuário possa trocar da senha. -E <data> - Account Expiration Date, onde "data" é a data de expiração da senha. Administração de usuários Administração de usuários Para criar grupos, usamos o comando groupadd Cria um novo grupo diretoria # groupadd diretoria Cria o novo grupo marketing especificando o seu GID como 1502. # groupadd -g 1502 marketing Para mudar informações de grupos, usamos o comando groupmod Modifica o GID do grupo diretoria. # groupmod -g 1501 diretoria Modifica o nome do grupo marketing # groupadd -n market marketing Para delir um grupo de usuário do sistema, usamos o comando groupdel # groupdel diretoria Criar usuários 8 users diferentes Criar grupos (4: ftp, ssh, congo, sunda) Mudar senhas dos users. Conferir onde eles estão Listar usuários Listar grupos Interpretar a organização dos arquivos shadow, group e passwd Colocar usuários em 4 grupos diferentes Apagar grupos Apagar usuários PRÁTICA DE ADMINISTRAÇÃO DE USUÁRIOS # less /etc/group ( vai até o final da linha, você vera quais os grupos tem no seu servidor e quais usuários façam parte de cada determinado grupo.) cat /etc/passwd cat /etc/group # useradd aluno #passwd [usuário/grupo] [opções] usermod [ opções ] usuário cat /etc/group | cut -d: -f1 groups “nome do usuário” gpasswd -a “user” teste groupadd diretoria http://www.planetaunix.com.br/2014/11/o-arquivo-etcgroup-gerenciando-grupos.html Comandos úteis para administração de usuários e grupos. Agendando Tarefas com cron e atd O cron é o daemon responsável por executar comandos agendados e recorrentes (todo dia, toda semana, etc.); o atd é o que lida com comandos a serem executados uma única vez, mas em um momento específico no futuro. Por padrão, todos os usuários podem agendar a execução de tarefas. Cada usuário tem, assim, seu próprio crontab no qual pode gravar comandos agendados. Ele pode ser editado rodando crontab -e (seu conteúdo é armazenado no arquivo /var/spool/cron/crontabs/usuário). SEGURANÇA Restringindo cron ou atd Você pode restringir o acesso ao cron criando um arquivo explícito para autorização (whitelist) em /etc/cron.allow, no qual você indica apenas usuários com autorização para agendar comandos. Todos os outros serão automaticamente privados desse recurso. Reciprocamente, para bloquear apenas um ou dois encrenceiros, você pode botar seus nomes de usuário em um arquivo explícito para proibição (blacklist), /etc/cron.deny. Esse mesmo recurso está disponível para o atd, com os arquivos /etc/at.allow e /etc/at.deny. Cada significante linha de um crontab descreve um comando agendado com os seguintes seis campos: o valor para o minuto (números de 0 à 59); o valor para a hora (de 0 à 23); o valor para o dia do mês (de 1 à 31); o valor para o mês (de 1 à 12); o valor para o dia da semana (a partir de 0 até 7, 1 correspondendo a Segunda, Domingo sendo representado tanto por 0 quanto por 7; ainda é possível usar as três primeiras letras do nome do dia da semana em Inglês, como Sun, Mon, etc.); Cada valor pode ser expresso na forma de uma lista de valores possíveis (separados por vírgulas). A sintaxe a-b descreve o intervalo de todos os valores entre a e b. A sintaxe a-b/c descreve o intervalo com um incremento de c (exemplo: 0-10/2 significa 0,2,4,6,8,10). Um asterisco * é um coringa, representando todos os valores possíveis. Agendando Tarefas com cron e atd O cron reconhece algumas abreviações que substituem os cinco primeiros campos de uma entrada no crontab. Elas correspondem as opções de agendamento mais clássicas: @yearly: uma vez por ano (Janeiro 1, às 00:00); @monthly: um vez por mês (o primeiro dia do mês, às 00:00); @weekly: uma vez por semana (Domingo às 00:00); @daily: uma vez por dia (às 00:00); @hourly: uma vez por hora (no início de cada hora). Exemplo Arquivo de exemplo crontab #min hour day mon dow command */2 * * * * ping –c www.google.com >> ~/ping.txt 00-59/3 * * * * cp ~/ping.txt ping2.txt # 8:00 am, segunda~sexta 00 08 * * 1-5 COMANDO Agendando Tarefas com cron e atd O at executa um comando em um momento específico no futuro. Ele recebe o horário e data desejados como parâmetros de linha de comando, e o comando a ser executado em sua saída padrão. O comando será executado como se estivesse sido feito no shell corrente. O at até toma o cuidado de reter o ambiente corrente, para poder reproduzir as mesmas condições quando ele executa o comando. O horário é indicado pelas seguintes convenções usuais: 16:12 ou 4:12pm representa 4:12 pm. A data pode ser especificada em vários formatos Europeus e Ocidentais, incluindo DD.MM.YY (27.07.15 assim representando 27 July 2015), YYYY-MM-DD (essa mesma data sendo expressa como 2015-07-27. Uma sintaxe alternativa adia a execução por uma dada duração: at now + número período. O período pode ser minutos, horas, dias, ou semanas. O número apenas indica o número de unidades ditas que tem que ocorrer antes da execução do comando. Agendando Tarefas com cron e atd Agendando Tarefas com cron e atd Para cancelar um tarefa agendada pelo cron, apenas rode crontab -e e apague a linha correspondente no arquivo crontab. Para tarefas do at, também é fácil: rode atrm número-da-tarefa. O número da tarefa é indicado pelo comando atno momento que você vez o agendamento, mas você pode obter ele novamente com o comando atq, o qual retorna a lista corrente de tarefas agendadas. O SAMBA é um serviço muito útil, tendo em vista a necessidade de compartilhamento de informações e sistemas de autenticação que possam integrar diferentes tecnologias, tais como: Windows e Linux. Foi uma criação de um estudante de Ciência da Computação da Universidade Nacional Australiana, de Camberra na Austrália, Andrew Tridgell, que teve a iniciativa de fazer testes com o objetivo de montar um espaço em disco em seu PC, rodando o sistema operacional DOS, para um servidor com o sistema operacional Unix. Com o servidor SAMBA devidamente instalado e configurado, é possível o compartilhamento de recursos (impressoras, arquivos) com clientes Windows, ligados em rede. Através do compartilhamento, o servidor se comporta como se fosse uma estação Windows na rede. Ele utiliza o protocolo SMB. SAMBA No caso de ser configurado como um controlador primário de domínio (PDC), o servidor SAMBA realiza a autenticação de usuários em estações clientes Windows. Toda a manipulação necessária de usuários cadastrados é feita de forma centralizada em um único arquivo, no qual se encontram as configurações do servidor SAMBA SAMBA - Instalação Instalação Verificação SAMBA - Configuração Passo 1: Inserir usuários no Linux: # adduser <nomeusuario> Passo 2: Adicionar usuários no SAMBA e atribuir uma senha ao mesmo. # smbpasswd –a <nomedousuario> SAMBA - Configuração Todas as configurações do SAMBA são feitas de forma centralizada no arquivo smb.conf, localizado em /etc/samba/. Existem ferramentas gráficas disponíveis trabalham sobre o arquivo smb.conf, com uma interface mais amigável para os usuários, tal como a SWAT. Porém algumas distribuições não mantêm o pacote de instalação em seus repositórios. O arquivo smb.conf é dividido em partes (seções), sendo que os parâmetros são agrupados por seção, para ser mais fácil a sua manipulação pelos usuários. Uma seção no arquivo de configuração smb.conf do SAMBA é especificada através de um nome entre colchetes [] As seções foram divididas em global, homes, profiles e printers. Global - são especificados os parâmetros para as configurações que afetam o servidor SAMBA como um todo. Homes - são de especificação das opções de acesso aos diretórios dos usuários, sendo que o diretório criado é disponibilizado apenas para seu dono, após a autenticação do usuário no servidor SAMBA. Printers - têm a função de disponibilizar as impressoras configuradas na rede via SAMBA. Profiles - é composta por parâmetros que definem um perfil quando o servidor SAMBA é utilizado como PDC de domínio. SAMBA - Configuração SAMBA - Configuração smb.conf – seção Global SAMBA - Configuração Usuário sem pasta /home O parâmetro "-s" especifica um shell de comandos para ser atribuído ao usuário criado. O shell /bin/false, como o nome sugere, é um shell falso, e qualquer usuário que utiliza este shell não será capaz de logar-se corretamente no sistema GNU/Linux. Caso você tenha criado um usuário sem especificar o shell, o usuário é configurado com o shell padrão de sua distro. Para alterá-lo, edite diretamente o arquivo de texto /etc/passwd, ou execute o comando usermod -s /bin/false Vamos adicionar estes usuários para serem utilizados no Samba: Para facilitar a administração e ter compartilhamentos Samba, devemos organizar os usuários em grupos. Criar o usuário antes com o comando adduser que é melhor, porra! SAMBA - Configuração Agora, vamos agrupar os funcionários da empresa nos grupos correspondentes, de acordo com o seu departamento. # cat /etc/group Vamos criar um diretório de trabalho do Marketing: Vamos alterar quem será o dono do diretório de trabalho Precisamos alterar as permissões dos diretório, pois queremos que apenas usuário do grupo tenha acesso SAMBA - Configuração Precisamos criar no /etc/samba/smb.conf as politicas de acesso aos diretório compartilhados SAMBA - Configuração Acessando a pasta compartilhada via Microsoft SAMBA - Verificação SAMBA - Verificação SAMBA - Autenticação O Samba oferece também um recurso de geração de log. Ele pode ser ativado na seção [global] do smb.conf. A opção "log level" indica o nível das mensagens (de 0 a 10), sendo que o nível 0 mostra apenas mensagens críticas, o nível 1 mostra alguns detalhes sobre os acessos e os demais mostram diversos níveis de informações de debug, úteis a desenvolvedores. A partir do Samba 3.04 foi incluído um módulo de auditoria, que permite logar os acessos e as modificações feitas de uma forma muito mais completa que o log tradicional. Isso é feito através do módulo "full_audit", que (do ponto de vista técnico) funciona de forma similar ao módulo "recycle" usado pela lixeira. SAMBA – Log´s Precisamos ativar o módulo através da linha abaixo: vfs objects = full_audit Precisamos definir quais operações devem ser logadas através da opção "full_audit:success“. Exite uma lista de opções que podem ser inseridas, porém como em nosso contexto, queremos apenas LOG de arquivos inseridos no Diretório compartilhado pelo Samba, usaremos os parâmetros abaixo. Consulte a lista completa no link https://www.samba.org/samba/docs/man/manpages-3/vfs_full_audit.8.html full_audit:success = mkdir write pwrite Por padrão, um grande volume de mensagens de alerta e erros gerados durante a operação. A opção "full_audit:failure = none" evita que estas mensagens sejam enviadas para log, fazendo com que a mensagem de saida do log fique muito mais limpo e seja mais fácil encontrar as opções que realmente interessam: full_audit:failure = none Para concluirmos, vamos especificar o nível dos alertas, entre os suportados pelo syslog, como em: full_audit:facility = local7 full_audit:priority = notice Esta configuração pode ser tanto incluída dentro da seção [global] (de forma que o log inclua os acessos e as alterações feitas em todos os compartilhamentos) quanto ser incluída apenas na configuração de um compartilhamento específico. SAMBA – Log´s Com isso, o Samba vai passar a gerar os eventos referentes aos acessos. Falta agora configurar o rsyslog , para gerar as saídas dos eventos em um arquivo o enviar notificação para o e-mail do administrado. Para isso, abra o arquivo /etc/rsyslog.d/50-default.conf, e insira a linha direcionando as saidas de log para o arquivo “samba-full_audit.log”. Precisamos criar o arquivo no diretório indicado no rsyslog e mudar o dono:grupo, para que nele sejam inseridas as mensagem de mudança. Mensagens de log do samba ! SAMBA – Log´s Monitorar um sistema de arquivos, pode ser necessário para auditoria e ou supervisionamento de atividades no sistema em tempo real. O Incros - inotify cron, é um Daemon que pode ser usado de maneira semelhante ao Cron (serviço de agendamento de tarefas). A diferença é que o Incron trata os eventos do sistema de arquivos (escrita, leitura e etc) ao invés de períodos de tempo. Incron Alguns exemplos: Notificar programas (daemons do servidor, por exemplo) sobre as mudanças na configuração; Notificação de mudanças nos arquivos críticos do sistema, assim, como a sua eventual recuperação através da execução de scripts de backups; Limpeza automática; Entre outros ... Quando o Incron é instalado via gerenciador de pacotes, é criado dentro do diretório "/etc" alguns arquivos que descreverei abaixo: "/etc/incron.conf": Arquivo de configuração principal do Incron. Contém as configurações padrão para o programa 'incrond'. Cada linha possui um único par de valores na forma 'opção = valor'. "/etc/incron.deny": Arquivo que detém a lista de usuários não autorizados a usar o Incron e ter uma 'incrontab' própria. "/etc/incron.allow": Arquivo que detém a lista de usuários autorizados a usar o Incron e ter uma 'incrontab' própria. "/etc/init.d/incron": Script para iniciar, parar e reiniciar o Daemon 'incrond'. Incron Instalação Verificação Incron Para permitir o uso do serviço para algum usuário, é só editar o arquivo "/etc/incron.allow" listando os nomes dos usuários ou o arquivo que configurou no "/etc/incron.conf". É necessário que o 'root' esteja listado no "/etc/incron.allow", caso não esteja, ele será bloqueado e não usará o serviço. Abaixo tem o exemplo: O usuário 'root', está podendo escrever entradas na 'incrontab' Incron Alguns símbolos de eventos e o que significam: IN_ACCESS: O arquivo foi acessado (lido). IN_ATTRIB: Metadados alterados (permissões, timestamps, atributos estendidos, etc.). IN_CLOSE_WRITE: Arquivo aberto para a escrita foi fechado. IN_CLOSE_NOWRITE: Arquivo não aberto para escrita foi fechado. IN_CREATE: Arquivo ou diretório criado no diretório monitorado. IN_DELETE: Arquivo ou diretório excluído do diretório monitorado. IN_DELETE_SELF: Arquivo ou diretório monitorado foi-se excluído. IN_MODIFY: O arquivo foi modificado. IN_MOVE_SELF: Arquivo ou diretório monitorado foi movido. IN_MOVED_FROM: Arquivo foi movido para fora do diretório monitorado. IN_MOVED_TO: Arquivo foi movido para diretório monitorado. IN_OPEN: Arquivo foi aberto. IN_ALL_EVENTS: símbolo é definido como uma máscara de bits de todos os eventos acima. - Opções:$$: Cifrão $@: Representa o diretório monitorado. $#: Representa o arquivo que aconteceu o evento. $%: Representa o evento ocorrido sobre o objeto (em modo texto). $&: Representa o evento ocorrido sobre o objeto (em modo numérico). Incron O Incron trabalha analisando as entradas do 'incrontab' de cada usuário, e para cada evento no objeto (diretório e ou arquivo) monitorado, o Incron executa um comando ou script definido pelo administrador. Desta forma, podemos usar o Incron para armazenar informações sobre alterações no diretórios e/ou arquivos, assim como a criação de arquivos ou exclusão dos mesmos, podendo monitorar um objeto ou vários objetos contidos no diretório. O diretório "/samba/publico/" será monitorado, e qualquer evento de criação ou deleção de diretório ou arquivo dentro do mesmo, será registrado pelo comando 'logger' com a facilidade 'loca1' e nível 'notice'. Os símbolos indicam: $@: O diretório que está sendo monitorado “/samba/publico/” no exemplo. $#: indica o nome do objeto (pode ser um arquivo ou diretório) onde ocorreu um evento. $%: Indica o tipo de evento realizado sobre o $# objeto. Nesta opção, quando houver alterações no diretório “/samba/publico/” , o script será executado. Shell Script Podemos utilizar a criação de arquivos de scripts para tornar mais simples as execuções de tarefas repetitivas no dia a dia Um script nada mais é do que um algoritmo projetado para realizar uma determinada tarefa, utilizando os comandos específicos do bash e os executáveis do sistema operacional Para criar um shell script é necessário obedecer a algumas regras. Para começar, a primeira linha do arquivo deve ser uma invocação do próprio bash: #!/bin/bash #!/bin/bash echo "Hello, World!" Shell Script Variáveis de Ambiente O shell é executado no sistema controlado por variáveis de ambiente. Variáveis de ambiente são espaços de memória que armazenam valores. Estas variáveis podem ser locais, que são as variáveis disponíveis somente pelo shell corrente e que não está sendo acessado por subprocessos do sistema. E as variáveis globais, que estão disponíveis tanto para o shell corrente como para os subprocessos que fazem uso delas. Algumas variáveis de ambiente importantes para facilitar o entendimento: HOME - Esta variável identifica o diretório do usuário doméstico. SHELL - Esta variável identifica qual shell está sendo usado. TERM - Esta variável define o tipo de terminal que está sendo usado. USER - Pré-define o nome de conta como variável de ambiente. PATH - Esta é a variável de ambiente que define quais diretórios pesquisar e a ordem na qual eles são pesquisados para encontrar um determinado comando. MAIL - Esta é a variável de correio eletrônico. Utilize o comando echo “$Variavel” para exibir o conteúdo da mesma Variáveis locais: $ set BASH=/bin/bash BASH_VERSINFO=([0]="2" [1]="04" [2]="0" [3]="1" [4]="release" [5]="i386-conectiva-linux-gnu") BASH_VERSION='2.04.0(1)-release' COLORTERM= COLUMNS=142 ... Variáveis globais: $ env ou $ printenv PWD=/root WM=kde TMPDIR=/root/tmp KONSOLE_DCOP=DCOPRef(konsole-985,konsole) GS_LIB=/root/.kde/share/fonts ... Shell Script Para atribuir um valor a uma variável local veja o exemplo: $ LINUX=livre $ echo $LINUX livre O comando echo exibe o valor de uma variável de ambiente. $ set | grep LINUX LINUX=livre Para tornar esta variável local em uma variável global, devemos usar o comando export: # export LINUX # env | grep LINUX LINUX=livre Para deletar uma variável de ambiente da memória usamos o comando unset e # unset LINUX # echo $LINUX Shell Script Usando variáveis #!/bin/bash TEXTO=‘Primeiro Script !!!’ echo “Imprima na tela o texto $TEXTO” #!/bin/bash DATA=`date +%d-%m-%y-%H:%M` ls –l /etc/* > etc.$DATA echo $DATA As aspas (‘ ‘) simples interpretam literalmente a frase que estiver entre elas e as variáveis não são processadas. Já as aspas duplas (“”) processam o conteúdo das variáveis. A crase (´ `) faz com que o comando que estiver entre elas seja executado e seu resultado armazenado em variáveis ou usado por outro comando. Shell Script Shell Script Atribuindo saídas de comandos a variáveis É possível armazenar o resultado de um comando em uma variável. Há duas sintaxes para isso: nome_da_variavel=$(comando) nome_da_variavel=`comando` #!/bin/bash system_info=`df -h` echo “$system_info” Também poderia ser #!/bin/bash system_info=$(df -h) echo “$system_info” Capturando a entrada de dados do usuário Shell Script Pode ser que o seu script precise interagir com o usuário, pedindo para ele fornecer algum dado de entrada para processamento. Neste caso, é necessário que se leia o que o usuário digitou e isso é feito através do seguinte comando: read variável onde será armazenado o valor digitado #!/bin/bash echo “Qual sua idade ?” read idade; echo “Você tem $idade!” #!/bin/bash echo –n “Qual sua idade ?” read idade; echo “Você tem $idade!” Shell Script Comandos de seleção ou de tomada de decisão Na maioria das vezes precisamos seguir um determinado fluxo de execução baseado em alguma decisão tomada pelo usuário ou outro sistema que esteja utilizando o nosso. O comando mais simples que permite isso é o IF if CONDICAO; then AÇÕES Fi Onde: CONDICAO: teste que, se verdadeiro, passará o controle para o bloco dentro do then; AÇÕES: comandos a serem executados se o resultado de CONDICAO for verdadeiro If ping –c 5 www.google.com Then Echo ´Internet OK! ‘ fi Shell Script O comando else Existe a possibilidade de também tratar o caso em que o nosso teste falha. Para isso temos o comando else, cuja sintaxe é: if CONDICAO ; then AÇÕES_1 else AÇÕES_2 fi If ping –c 2 10.10.10.10 Then Echo ´Internet OK! ‘ else Echo ‘ está fora!’ fi Shell Script O comando case O comando case tem a mesma funcionalidade do if...then.., com a diferença de sua sintaxe ser mais compacta: case VARIAVEL in CASO_1) AÇÕES_1;; CASO_2) AÇÕES_2 esac #!/bin/bash Echo ‘ Escolha uma das opções : ‘ Echo ‘ 1 – Ping internet ‘ Echo ‘ 2 – Reboot ‘ case OP in “1”) Ping –c 5 www.google.com;; “2”) reboot;; esac Shell Script #!/bin/bash P(){ echo ' opção 1 - Ping internet' echo ' opção 2 - Reboot do sistema' read –t 2–p ' digite a opção desejada: ‘ op Echo ‘ Vamos lá seu molenga’ case $op in '1') teste;; '2') reiniciar;; *) echo 'Digite apenas 1 ou 2';P;; esac } teste (){ ping -c 5 www.google.com } reiniciar (){ reboot } P Criando função
Compartilhar