Mudanças entre as edições de "GAR12503-2014-2"
Linha 743: | Linha 743: | ||
* Processo de Boot | * Processo de Boot | ||
* upstart | * upstart | ||
− | |||
{{Collapse top | Roteiro}} | {{Collapse top | Roteiro}} | ||
Linha 781: | Linha 780: | ||
Em linhas gerais, a descrição do serviço informa quando ele deve ser ativado (start), quando deve ser parado (stop), o tipo de execução (respawn para reinício automático, ou task para uma única execução), e que ação deve ser executada para ativar o serviço (exec para executar um programa, ou script .. end script para executar uma sequência de comandos de shell). Maiores detalhes podem ser lidos na [http://manpages.ubuntu.com/manpages/karmic/en/man5/init.5.html página de manual do init]. | Em linhas gerais, a descrição do serviço informa quando ele deve ser ativado (start), quando deve ser parado (stop), o tipo de execução (respawn para reinício automático, ou task para uma única execução), e que ação deve ser executada para ativar o serviço (exec para executar um programa, ou script .. end script para executar uma sequência de comandos de shell). Maiores detalhes podem ser lidos na [http://manpages.ubuntu.com/manpages/karmic/en/man5/init.5.html página de manual do init]. | ||
+ | {{Collapse bottom}} | ||
− | RAID: | + | *RAID: |
− | + | {{Collapse top | Roteiro}} | |
[http://en.wikipedia.org/wiki/RAID RAID (''Redundant Array of Independent Disks'')] se destina a combinar discos de forma a incrementar o desempenho de entrada e saída e, principalmente, segurança dos dados contra defeitos em discos. RAID pode ser provido via software ou hardware (melhor este último). O Linux possui implementação por software em seu kernel, e neste [http://tldp.org/HOWTO/Software-RAID-HOWTO.html HOWTO] há uma descrição resumida. | [http://en.wikipedia.org/wiki/RAID RAID (''Redundant Array of Independent Disks'')] se destina a combinar discos de forma a incrementar o desempenho de entrada e saída e, principalmente, segurança dos dados contra defeitos em discos. RAID pode ser provido via software ou hardware (melhor este último). O Linux possui implementação por software em seu kernel, e neste [http://tldp.org/HOWTO/Software-RAID-HOWTO.html HOWTO] há uma descrição resumida. | ||
Linha 810: | Linha 810: | ||
Atividades: | Atividades: | ||
− | {{Collapse top | Roteiro}} | + | {{Collapse top | Roteiro upstart}} |
'''''Um exemplo de criação de serviço no upstart''''' | '''''Um exemplo de criação de serviço no upstart''''' | ||
#Analisar alguns serviços no /etc/init/ e verificar o conteúdo dos ''upstarts''. Tentar replicar a ideia para o faxineiro. | #Analisar alguns serviços no /etc/init/ e verificar o conteúdo dos ''upstarts''. Tentar replicar a ideia para o faxineiro. | ||
Linha 829: | Linha 829: | ||
end script</syntaxhighlight> | end script</syntaxhighlight> | ||
# Reiniciar o sistema para testá-lo (executar ''reboot'') | # Reiniciar o sistema para testá-lo (executar ''reboot'') | ||
+ | {{Collapse bottom}} | ||
− | + | {{Collapse top | Roteiro RAID}} | |
− | |||
− | |||
# Dica: crie uma cópia de sua máquina virtual (snapshot - ferramenta do VirtualBox) antes de executar o roteiro, caso dê problemas a recuperação é muito simples. | # Dica: crie uma cópia de sua máquina virtual (snapshot - ferramenta do VirtualBox) antes de executar o roteiro, caso dê problemas a recuperação é muito simples. | ||
# Crie duas partições de mesmo tamanho no disco /dev/sdb usando o cfdisk. Marque-as como sendo do tipo Linux RAID (fdisk t = "fd"). | # Crie duas partições de mesmo tamanho no disco /dev/sdb usando o cfdisk. Marque-as como sendo do tipo Linux RAID (fdisk t = "fd"). | ||
Linha 843: | Linha 842: | ||
{{Collapse bottom}} | {{Collapse bottom}} | ||
− | + | === Aula 05 (21/08) - Cron === | |
− | |||
− | + | Conteúdo: | |
+ | *Agendamento de tarefas | ||
+ | *cron | ||
− | [ | + | Agendamento de tarefas administrativas com crontab. Apostila de Gerência de Redes, capítulo 19. |
+ | {{Collapse top | Roteiro}} | ||
+ | O [http://manpages.ubuntu.com/manpages/karmic/en/man8/cron.8.html cron] é um programa de agendamento de tarefas. Com ele pode-se fazer a programação para execução de qualquer programa numa certa periodicidade ou até mesmo em um exato dia, numa exata hora. Um uso comum do '''cron''' é o agendamento de tarefas administrativas de manutenção do seu sistema, como por exemplo, análise de segurança w backup. Estas tarefas são programadas para, todo dia, toda semana ou todo mês, serem automaticamente executadas através da ''crontab'' e um script shell comum. A configuração do '''cron''' geralmente é chamada de ''crontab''. | ||
− | + | Os sistemas Linux possuem o '''cron''' na instalação padrão. A configuração tem duas partes: uma global, e uma por usuário. Na global, controlada pelo root, o [http://manpages.ubuntu.com/manpages/karmic/en/man5/crontab.5.html crontab] pode ser configurado para executar qualquer tarefa de qualquer lugar, como qualquer usuário. Já na parte por usuário, cada usuário tem seu próprio ''crontab'', sendo restringido apenas ao que o usuário pode fazer (e não tudo, como é o caso do root). | |
− | |||
− | + | ''Uso do crontab'' | |
− | |||
− | [ | + | Para configurar um crontab por usuário, utiliza-se o comando [http://manpages.ubuntu.com/manpages/karmic/en/man5/crontab.1.html crontab], junto com um parâmetro, dependendo do que se deseja fazer. Abaixo uma relação: |
− | + | * '''crontab -e''': Edita a crontab atual do usuário logado | |
− | + | * '''crontab -l''': Exibe o atual conteúdo da crontab do usuário | |
+ | * '''crontab -r''': Remove a crontab do usuário | ||
− | + | Se você quiser verificar os arquivos crontab dos usuários, você precisará ser root. O comando '''crontab''' coloca os arquivos dos usuários no diretório ''/var/spool/cron/crontabs'' . Por exemplo, a crontab do usuário ''aluno'' estará no arquivo ''/var/spool/cron/crontabs/aluno''. | |
− | + | Existe também uma crontab global, que fica no arquivo ''/etc/crontab'', e só pode ser modificado pelo root. | |
+ | Vamos estudar o formato da linha do crontab, que é quem vai dizer o que executar e quando. Vamos ver um exemplo: | ||
− | = | + | <syntaxhighlight lang=text> |
− | + | 30 12,22 * * * /home/aluno/scripts/backup.sh >/dev/null 2>&1 | |
+ | </syntaxhighlight> | ||
− | + | A linha é dividida em campos separados por tabs ou espaço: | |
− | == | + | {| border="1" cellpadding="2" |
− | + | !Campo | |
+ | !Função | ||
+ | |- | ||
+ | |1o || Minuto | ||
+ | |- | ||
+ | |2o|| Hora | ||
+ | |- | ||
+ | |3o || Dia do mês | ||
+ | |- | ||
+ | |4o || Mês | ||
+ | |- | ||
+ | |5o || Dia da semana | ||
+ | |- | ||
+ | |6o || Programa a ser executrado | ||
+ | |} | ||
− | + | Todos estes campos, sem contar com o 6o., são especificados por números. Veja a tabela abaixo para os valores destes campos: | |
− | |||
− | |||
− | == | + | {| border="1" cellpadding="2" |
− | + | !Campo | |
+ | !Função | ||
+ | |- | ||
+ | |Minuto || 0-59 | ||
+ | |- | ||
+ | |Hora || 0-23 | ||
+ | |- | ||
+ | |Dia do mês || 1-31 | ||
+ | |- | ||
+ | |Mês || 1-12 | ||
+ | |- | ||
+ | |Dia da semana || 0-6 (0=domingo, 6=sábado) | ||
+ | |} | ||
− | + | Além destes temos também alguns parâmetros ativos: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | @reboot = run at boot and reboot only | |
− | + | @yearly = run at midnight Jan 1 each year (equiv to 0 0 1 1 *) | |
− | = | + | @annually = run at midnight Jan 1 each year (equiv to 0 0 1 1 *) |
− | |||
− | + | @monthly = run at midnight on the first day of each month (equiv to 0 0 1 * *) | |
− | + | @weekly = run at midnight each Sunday (equiv to 0 0 * * 0) | |
− | + | @daily = run at midnight each day (equiv to 0 0 * * *) | |
− | + | @ midnight = run at midnight each day (equiv to 0 0 * * *) | |
− | = | + | @ hourly = run on the first second of every hour (equiv to 0 * * * *) |
− | |||
− | |||
− | |||
− | + | Então o que nosso primeiro exemplo estava dizendo? A linha está dizendo: "Execute o comando ''/root/scripts/backup.sh'' às 12:30 h e às 22:30h, todos os dias". | |
− | + | Vamos analisar mais alguns exemplos: | |
− | + | 1,21,41 * * * * echo "Meu crontab rodou mesmo!" | |
− | + | Aqui está dizendo: "Executar o comando do sexto campo toda hora, todo dia, nos minutos 1, 21 e 41". | |
− | |||
− | + | 30 4 * * 1 rm -rf /tmp/* | |
− | + | Aqui está dizendo: "Apagar todo conteúdo do diretório /tmp toda segunda-feira, as 4:30 da manhã." | |
− | + | 45 19 1,15 * * /usr/local/bin/backup | |
− | + | Aqui está dizendo: "Executar o comando 'backup' todo dia 1 e 15 às 19:45.". | |
− | |||
− | + | E assim pode-se ir montando inúmeros jeitos de agendamento possível. No arquivo do crontab global, o sexto campo pode ser substituído pelo nome do usuário, e um sétimo campo adicionado com o programa para a execução, como mostrado no exemplo a seguir: | |
− | + | */5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg | |
− | + | Aqui está dizendo: "Executar o mrtg como usuário root, de 5 em 5 minutos sempre." | |
− | |||
− | + | 0 19-23/2 * * * /root/script | |
− | |||
− | + | Aqui está dizendo: “Executar o 'script' entre as 19 e 23 de 2 em duas horas.” | |
− | |||
− | + | {{Collapse bottom | Agendamento de tarefas}} | |
− | |||
− | + | Atividades: | |
− | |||
− | + | {{Collapse top | Roteiro cron}} | |
− | + | # Crie uma regra cron que faça o backup (tar zipado) de todo o /etc para ser executada todos os dias às 02h30min. Adicione comentários no arquivo indicando a tarefa a ser executada. | |
− | + | # Crie uma regra cron para que seja feita uma limpeza total do /tmp todos os domingos as 03 h. Faça comentários no crontab para que outros usuários entendam o que foi feito. | |
− | + | # Crie uma regra cron para que seja eliminado o usuário ''visitante'', bem como seu diretório ''home'', todo dia 1° de janeiro as 00 h 30 min. Faça comentários. | |
− | + | # Crie uma regra cron para que seja criado novamente o usuário ''visitante'' todo dia 1° de janeiro a 01 h 00 min. Faça comentários. | |
− | + | # Agende o comando '''date''' para escrever/adicionar sua saída ao arquivo ''/root/date'' a cada minuto. | |
− | + | # Pressuponha que o script '''/root/abacaxi.sh''' exista, agende o mesmo para ser executado: | |
− | + | ## De dois em dois dias às 11 h e 55 min. | |
− | + | ## Todo dia 5 às 3 h e 50 min. | |
− | + | ## No dia 14 de cada mês entre as 8 e 18 h, de hora em hora. | |
− | + | {{Collapse bottom}} | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | # | ||
− | |||
− | |||
− | # | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | # | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | # | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Edição das 11h43min de 21 de agosto de 2014
Informações da disciplina
- Professor: Tomas Grimm
- Turma: 1250331
- Encontros: terças e quintas das 18:30 às 20:20 e quartas das 18:30 às 22:30
- Atendimento paralelo:
- terças das 13:30 às 15:20
Plano de aula
Cronograma | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Material auxiliar
- Apostila de Gerência de Redes do Prof. Odilson Tadeu Valle
- Guia rápido de comandos básicos
- Guia rápido de manipulação de diretórios
- Comandos essenciais do VI
- Lista completa de comandos do VI
Aulas
Aula 01 (06/08) - Introdução. SO Linux. Shell e comandos básicos
Conteúdo:
- Apresentação da disciplina
- Introdução a Gerência de Redes de Computadores (slides)
- Sistema Operacional Linux e Redes (slides)
- Shell
- Comandos básicos de Linux
- Editor VI
Comandos básicos Linux |
---|
# Comandos de navegação e interação com arquivos:
ls # listar arquivos
cd # mudar diretório
rm # remover arquivos
cp # copiar arquivos
mv # mover arquivos ou renomeá-los
cat # mostra o conteúdo de um arquivo ou concatena com outro arquivo
more # exibe o conteúdo de um artigo de forma paginada
pwd # mostra o caminho para o diretório atual
rmdir # deleção de diretório
mkdir # criação de diretório
clear # limpa a tela
# Comandos relacionados aos usuários:
who # mostra as sessões abertas na máquina
whoami # mostra o nome do usuário atual
finger # mostra informações de usuário
# Comandos relacionados ao status da memória e do disco:
df # informações de espaço em disco
du # utilização do disco
free # informações de memória
top # mostra processos
|
Atividades:
Respostas do exercício de comandos básicos |
---|
|
Aula 02 (07/08) - Instalação de aplicativos e Sistemas de arquivos
Conteúdo:
- Gerenciador de pacotes apt
- Sistemas de arquivos
Instalação de aplicativos |
---|
A instalação de software pode ser feita de diversas formas, dentre as quais serão destacadas três:
Exemplo de uso do apt-get:
lynx http://www.ifsc.edu.br/
Exemplo de uso:
wget ftp://ftp.cn.debian.org/ubuntu-old-releases/ubuntu/pool/main/l/lynx-cur/lynx_2.8.7pre6-1_all.deb wget ftp://mirror.linux.org.au/ubuntu/pool/main/l/lynx-cur/lynx-cur_2.8.7pre6-1_i386.deb
lynx ...
|
Atividades:
Exercícios de instalação de pacotes |
---|
Respostas
|
Exercícios sobre sistemas de arquivos |
---|
Respostas
|
Aula 03 (12/08) - Gerenciamento de usuários e grupos e Cotas de disco
Conteúdo:
- Gerenciamento de usuários e grupos.
- Permissionamento.
- Cotas de usuário.
Roteiro |
---|
Criação de contas de usuários e de grupos, e seu uso para conferir permissões de acesso a arquivos, diretórios e recursos do sistema operacional. Apostila, páginas 61 a 65. Um usuário no Linux (e no Unix em geral) é definido pelo seguinte conjunto de informações:
As contas de usuários, que contêm as informações acima, podem ficar armazenadas em diferentes bases de dados (chamadas de bases de dados de usuários). Dentre elas, a mais simples é composta pelo arquivo /etc/passwd: root:x:0:0:root:/root:/bin/bash sshd:x:71:65:SSH daemon:/var/lib/sshd:/bin/false suse-ncc:x:105:107:Novell Customer Center User:/var/lib/YaST2/suse-ncc-fakehome:/bin/bash wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash news:x:9:13:News system:/etc/news:/bin/bash uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash roberto:x:1001:100:Roberto de Matos:/data1/roberto:/bin/bash Acima um exemplo de arquivo /etc/passwd Cada linha desse arquivo define uma conta de usuário no seguinte formato: nome de usuário:senha:UID:GID:Nome completo:Diretório inicial:Shell O campo senha em /etc/passwd pode assumir os valores:
O arquivo /etc/shadow armazena exclusivamente as informações relativas a senha e validade da conta. Nele cada conta possui as seguintes informações:
Um exemplo do arquivo /etc/shadow segue abaixo: root:$2a$05$8IZNUuFTMoA3xv5grggWa.oBUBfvrE4MfgRDTlUI1zWDXGOHi9dzG:13922:::::: suse-ncc:!:13922:0:99999:7::: uucp:*:13922:::::: wwwrun:*:13922:::::: roberto:$1$meoaWjv3$NUhmMHVdnxjmyyRNlli5M1:14222:0:99999:7::: Exercício: quando a senha do usuário roberto irá expirar ? Um grupo é um conjunto de usuários definido da seguinte forma:
Assim como as contas de usuários, os grupos ficam armazenados em bases de dados de usuários, sendo o arquivo /etc/group a mais simples delas: root:x:0: trusted:x:42: tty:x:5: utmp:x:22: uucp:x:14: video:x:33:roberto www:x:8:roberto users:x:100: radiusd:!:108: vboxusers:!:1000: Os membros de um grupo são os usuários que o têm como grupo primário (especificado na conta do usuário em /etc/passwd), ou que aparecem listados em /etc/group. Gerenciamento de usuários e gruposPara gerenciar usuários e grupos podem-se editar diretamente os arquivos /etc/passwd, /etc/shadow e /etc/group, porém existem utilitários que facilitam essa tarefa:
Esses utilitários usam os arquivos /etc/login.defs e /etc/default/useradd para obter seus parâmetros padrão. O /etc/adduser.conf tem o mesmo intuito mas é seta exclusivamente os parâmetros do comando adduser. O arquivo /etc/login.defs contém uma série de diretivas e padrões que serão utilizados na criação das próximas contas de usuários. Seu principal conteúdo é: MAIL_DIR dir # Diretório de e-mail PASS_MAX_DAYS 99999 #Número de dias até que a senha expire PASS_MIN_DAYS 0 #Número mínimo de dias entre duas trocas senha PASS_MIN_LEN 5 #Número mínimo de caracteres para composição da senha PASS_WARN_AGE 7 #Número de dias para notificação da expiração da senha UID_MIN 500 #Número mínimo para UID UID_MAX 60000 #Número máximo para UID GID_MIN 500 #Número mínimo para GID GID_MAX 60000 #Número máximo para GID CREATE_HOME yes #Criar ou não o diretório home Como o login.defs o arquivo /etc/default/useradd contém padrões para criação de contas. Seu principal conteúdo é: GROUP=100 #GID primário para os usuários criados HOME=/home #Diretório a partir do qual serão criados os “homes” INACTIVE=-1 #Quantos dias após a expiração da senha a conta é desativada EXPIRE=AAAA/MM/DD #Dia da expiração da conta SHEL=/bin/bash #Shell atribuído ao usuário. SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários. GROUPS=video,dialout CREATE_MAIL_SPOOL=no O /etc/adduser.conf também possui uma série de padrões que funcionam especificamente para o comando adduser: DSHELL=/bin/bash #Shell atribuído ao usuário. DHOME=/home #Diretório a partir do qual serão criados os “homes” SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários. FIRST_UID=1000 #Número mínimo para UID LAST_UID=29999 #Número máximo para UID FIRST_GID=1000 #Número mínimo para GID LAST_GID=29999 #Número máximo para GID QUOTAUSER="" #Se o sistema de cotas estiver funcional, pode atribuir quota ao usuário criado. PermissõesHá uma maneira de restringir o acesso aos arquivos e diretórios para que somente determinados usuários possam acessá-los. A cada arquivo e diretório é associado um conjunto de permissões. Essas permissões determinam quais usuários podem ler, e escrever (alterar) um arquivo e, no caso de ser um arquivo executável, quais usuários podem executá-lo. Se um usuário tem permissão de execução para um diretório, significa que ele pode realizar buscas dentro daquele diretório, e não executá-lo como se fosse um programa. Quando um usuário cria um arquivo ou um diretório, o LINUX determina que ele é o proprietário (owner) daquele arquivo ou diretório. O esquema de permissões do LINUX permite que o proprietário determine quem tem acesso e em que modalidade eles poderão acessar os arquivos e diretórios que ele criou. O super-usuário (root), entretanto, tem acesso a qualquer arquivo ou diretório do sistema de arquivos. O conjunto de permissões é dividido em três classes: proprietário, grupo e usuários. Um grupo pode conter pessoas do mesmo departamento ou quem está trabalhando junto em um projeto. Os usuários que pertencem ao mesmo grupo recebem o mesmo número do grupo (também chamado de Group Id ou GID). Este número é armazenado no arquivo /etc/passwd junto com outras informações de identificação sobre cada usuário. O arquivo /etc/group contém informações de controle sobre todos os grupos do sistema. Assim, pode -se dar permissões de acesso diferentes para cada uma destas três classes. Quando se executa ls -l em um diretório qualquer, os arquivos são exibidos de maneira semelhante a seguinte: > ls -l total 403196 drwxr-xr-x 4 odilson admin 4096 Abr 2 14:48 BrOffice_2.1_Intalacao_Windows/ -rw-r--r-- 1 luizp admin 113811828 Out 31 21:28 broffice.org.2.0.4.rpm.tar.bz2 -rw-r--r-- 1 root root 117324614 Dez 27 14:47 broffice.org.2.1.0.rpm.tar.bz2 -rw-r--r-- 1 luizp admin 90390186 Out 31 22:04 BrOo_2.0.4_Win32Intel_install_pt-BR.exe -rw-r--r-- 1 root root 91327615 Jan 5 21:27 BrOo_2.1.0_070105_Win32Intel_install_pt-BR.exe > As colunas que aparecem na listagem são:
O esquema de permissões está dividido em 10 colunas, que indicam se o arquivo é um diretório ou não (coluna 1), e o modo de acesso permitido para o proprietário (colunas 2, 3 e 4), para o grupo (colunas 5, 6 e 7) e para os demais usuários (colunas 8, 9 e 10). Existem três modos distintos de permissão de acesso: leitura (read), escrita (write) e execução (execute). A cada classe de usuários você pode atribuir um conjunto diferente de permissões de acesso. Por exemplo, atribuir permissão de acesso irrestrito (de leitura, escrita e execução) para você mesmo, apenas de leitura para seus colegas, que estão no mesmo grupo que você, e nenhum acesso aos demais usuários. A permissão de execução somente se aplica a arquivos que podem ser executados, obviamente, como programas já compilados ou script shell. Os valores válidos para cada uma das colunas são os seguintes:
A permissão de acesso a um diretório tem outras considerações. As permissões de um diretório podem afetar a disposição final das permissões de um arquivo. Por exemplo, se o diretório dá permissão de gravação a todos os usuários, os arquivos dentro do diretório podem ser removidos, mesmo que esses arquivos não tenham permissão de leitura, gravação ou execução para o usuário. Quando a permissão de execução é definida para um diretório, ela permite que se pesquise ou liste o conteúdo do diretório. A modificação das permissões de acesso a arquivos e diretórios pode ser feita usando-se os utilitários:
Há também o utilitário umask, que define as permissões default para os novos arquivos e diretórios que um usuário criar. Esse utilitário define uma máscara (em octal) usada para indicar que permissões devem ser removidas. Exemplos:
|
Atividades:
Roteiro |
---|
Permissionamento de arquivos e grupos de usuários
|
Questionário conceitual de gerência
Aula 04 (20/08) - Processo de Boot e RAID
Conteúdo:
- Processo de Boot
- upstart
Roteiro |
---|
Boot: O processo de inicialização do sistema operacional, chamado de boot. Tradicionalmente no Unix System V isto se faz com a definição de níveis de execução (runlevels) e uma tabela que descreve que processos ou serviços devem existir em cada nível. Os níveis de execução são:
As distribuições Linux em geral adotam a inicialização no estilo Unix System V. No entanto, o Ubuntu usa um outro processo chamado de upstart. Esse serviço de inicialização confere maior flexibilidade e mesmo simplicidade à definição de que serviços devem ser executados. O upstart não usa o conceito de níveis de execução, mas devido à sua flexibilidade ele pode emular esse estilo de inicialização. Para o upstart, um serviço deve ser iniciado ou parado dependendo de uma combinação de eventos, sendo que um evento indica a ocorrência de uma etapa da inicialização. O upstart é implementado pelo processo init (programa /sbin/init), que é o primeiro processo criado pelo sistema operacional. Quer dizer, logo após terminar a carga e inicialização do kernel, este cria um processo que executa o programa /sbin/init. O upstart lista o subdiretório /etc/init e procura arquivos com extensão .conf. Cada arquivo desses descreve um serviço a ser controlado pelo upstart. Por exemplo, o serviço tty2 é escrito no arquivo tty2.conf: # tty2 - getty
#
# This service maintains a getty on tty2 from the point the system is
# started until it is shut down again.
start on runlevel [23]
stop on runlevel [!23]
respawn
exec /sbin/getty -8 38400 tty2
Abaixo segue o significado de cada linha:
Em linhas gerais, a descrição do serviço informa quando ele deve ser ativado (start), quando deve ser parado (stop), o tipo de execução (respawn para reinício automático, ou task para uma única execução), e que ação deve ser executada para ativar o serviço (exec para executar um programa, ou script .. end script para executar uma sequência de comandos de shell). Maiores detalhes podem ser lidos na página de manual do init. |
- RAID:
Roteiro |
---|
RAID (Redundant Array of Independent Disks) se destina a combinar discos de forma a incrementar o desempenho de entrada e saída e, principalmente, segurança dos dados contra defeitos em discos. RAID pode ser provido via software ou hardware (melhor este último). O Linux possui implementação por software em seu kernel, e neste HOWTO há uma descrição resumida. Há vários níveis RAID, que correspondem a diferentes combinações de discos e partições. São eles:
Criação de um volume RAID no Linux:
Para ativar um volume já criado, basta executar mdadm --assemble caminho_do_volume. Ex: mdadm --assemble /dev/md0, mdadm --assemble /dev/md1. |
Atividades:
Roteiro upstart |
---|
Um exemplo de criação de serviço no upstart
Resposta Foi proposta a criação de um serviço chamado faxineiro, para remover dos diretórios temporários (/tmp e /var/tmp).
|
Roteiro RAID |
---|
|
Aula 05 (21/08) - Cron
Conteúdo:
- Agendamento de tarefas
- cron
Agendamento de tarefas administrativas com crontab. Apostila de Gerência de Redes, capítulo 19.
Roteiro | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
O cron é um programa de agendamento de tarefas. Com ele pode-se fazer a programação para execução de qualquer programa numa certa periodicidade ou até mesmo em um exato dia, numa exata hora. Um uso comum do cron é o agendamento de tarefas administrativas de manutenção do seu sistema, como por exemplo, análise de segurança w backup. Estas tarefas são programadas para, todo dia, toda semana ou todo mês, serem automaticamente executadas através da crontab e um script shell comum. A configuração do cron geralmente é chamada de crontab. Os sistemas Linux possuem o cron na instalação padrão. A configuração tem duas partes: uma global, e uma por usuário. Na global, controlada pelo root, o crontab pode ser configurado para executar qualquer tarefa de qualquer lugar, como qualquer usuário. Já na parte por usuário, cada usuário tem seu próprio crontab, sendo restringido apenas ao que o usuário pode fazer (e não tudo, como é o caso do root). Uso do crontab Para configurar um crontab por usuário, utiliza-se o comando crontab, junto com um parâmetro, dependendo do que se deseja fazer. Abaixo uma relação:
Se você quiser verificar os arquivos crontab dos usuários, você precisará ser root. O comando crontab coloca os arquivos dos usuários no diretório /var/spool/cron/crontabs . Por exemplo, a crontab do usuário aluno estará no arquivo /var/spool/cron/crontabs/aluno. Existe também uma crontab global, que fica no arquivo /etc/crontab, e só pode ser modificado pelo root. Vamos estudar o formato da linha do crontab, que é quem vai dizer o que executar e quando. Vamos ver um exemplo: 30 12,22 * * * /home/aluno/scripts/backup.sh >/dev/null 2>&1
A linha é dividida em campos separados por tabs ou espaço:
Todos estes campos, sem contar com o 6o., são especificados por números. Veja a tabela abaixo para os valores destes campos:
Além destes temos também alguns parâmetros ativos: @reboot = run at boot and reboot only @yearly = run at midnight Jan 1 each year (equiv to 0 0 1 1 *) @annually = run at midnight Jan 1 each year (equiv to 0 0 1 1 *) @monthly = run at midnight on the first day of each month (equiv to 0 0 1 * *) @weekly = run at midnight each Sunday (equiv to 0 0 * * 0) @daily = run at midnight each day (equiv to 0 0 * * *) @ midnight = run at midnight each day (equiv to 0 0 * * *) @ hourly = run on the first second of every hour (equiv to 0 * * * *)
Vamos analisar mais alguns exemplos: 1,21,41 * * * * echo "Meu crontab rodou mesmo!" Aqui está dizendo: "Executar o comando do sexto campo toda hora, todo dia, nos minutos 1, 21 e 41". 30 4 * * 1 rm -rf /tmp/* Aqui está dizendo: "Apagar todo conteúdo do diretório /tmp toda segunda-feira, as 4:30 da manhã." 45 19 1,15 * * /usr/local/bin/backup Aqui está dizendo: "Executar o comando 'backup' todo dia 1 e 15 às 19:45.". E assim pode-se ir montando inúmeros jeitos de agendamento possível. No arquivo do crontab global, o sexto campo pode ser substituído pelo nome do usuário, e um sétimo campo adicionado com o programa para a execução, como mostrado no exemplo a seguir: */5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg Aqui está dizendo: "Executar o mrtg como usuário root, de 5 em 5 minutos sempre." 0 19-23/2 * * * /root/script Aqui está dizendo: “Executar o 'script' entre as 19 e 23 de 2 em duas horas.” |
Atividades:
Roteiro cron |
---|
|