SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
UNIVERSIDADE SÃO TOMÁS DE MOÇAMBIQUE
          CURSO DE: TECNOLOGIAS E SISTEMAS DE INFORMAÇÃO

                       SISTEMAS OPERATIVOS AVANÇADOS




                          Administração de Sistemas




DOCENTE: dr. Jonnathan Guambe


dr. Jonnathan Guambe                                  Administração de Sistemas
Índice
  1. Ficheiros e directórios ....................................................................................... 4

     1.1. Árvore de directórios .................................................................................. 4

     1.2. Identificação de um ficheiro .......................................................................4

     1.3. Atributos de um ficheiro .............................................................................4

         1.3.1. Nome ................................................................................................... 4

         1.3.2. Tipo ..................................................................................................... 4

         1.3.3. Dono, grupo e permissões de acesso ..................................................5

         1.3.4. Timestamps de criação, acesso e modificação ....................................5

         1.4. Acesso a um ficheiro ..............................................................................5

     1.5. Exercicios.................................................................................................... 7

  2. Administração de usuários ................................................................................8

     2.1. Verificando informações do usuário ...........................................................8

         2.1.1. Exemplos.............................................................................................. 9

     2.2. Tornando-se outro usuário – Comando su e sudo........................................9

     2.3. Adicionando usuários – Comando useradd .................................................9

     2.3.1. Exemplos.................................................................................................. 9

     2.4. Alterando a senha do usuário – comando passwd ....................................10

         2.4.1. Exemplos............................................................................................ 10

     2.5. Eliminando usuários – Comando userdel ..................................................11

         2.5.1. Exemplos............................................................................................ 11

     2.6. Modificando o perfil de um usuário – comando usermod .........................11

         2.6.1. Exemplo............................................................................................. 11

     2.7. Adicionando grupos – comando groupadd ................................................12


dr. Jonnathan Guambe                                                                 Administração de Sistemas
2.7.1. Exemplos............................................................................................ 12

     2.8. Eliminando grupos – Comando groupdel ..................................................12

     2.9. Exercicios.................................................................................................. 12

  3. Shell Script....................................................................................................... 13

     3.1. O que é Shell............................................................................................. 13

     3.2. Shell script................................................................................................. 13

         3.2.1. Passos para criacao de um shell script ..............................................14

             3.2.1.1. Problemas na execução do script................................................15

     3.3. Exercícios ................................................................................................. 16

  4. Tarefas automatizadas..................................................................................... 16

     4.1. Exemplos:.................................................................................................. 17

     4.2. Exercicios.................................................................................................. 18

  5. Bibliografia....................................................................................................... 18




dr. Jonnathan Guambe                                                                Administração de Sistemas
1. Ficheiros e directórios
Os ficheiros são objectos fundamentais nos sistemas operativos UNIX, mais que noutros sistemas
operativos. A forma como se opera sobre um ficheiro é extensível a quase tudo o que interage com o
sistema operativo.

1.1. Árvore de directórios
Do ponto de vista do utilizador, todos os ficheiros estão localizados na árvore de directórios do sistema. E
todos são acessíveis a partir da directório raiz, cujo nome é “/”. A estrutura em árvore assenta no conceito
de directório. Uma directório é um ficheiro que contém uma lista de ficheiros (que podem ser de qualquer
tipo, incluindo o tipo directório).

1.2. Identificação de um ficheiro
Um caminho (path) é uma string que identifica um ficheiro (de qualquer tipo, ou seja, pode identificar um
ficheiro regular, uma directório, um dispositivo...) na árvore de directórios do sistema. Um caminho é
absoluto se começa com o carácter '/ ' (/home/linux/teste.txt); caso contrário é relativo (teste.txt).

1.3. Atributos de um ficheiro
Os ficheiros têm vários atributos, a frente veremos a lista completa desses atributos, de momento segue
uma descrição dos mais relevantes no âmbito da parte prática da disciplina.
1.3.1. Nome
Qualquer ficheiro tem um nome. O nome de um ficheiro é uma string que não pode conter nem caracter
'0' nem o caracter '/'. O caracter '/' é o separador de nomes de ficheiros e directórios no nome dum
caminho; o caracter '0' é o caracter terminador duma string. O nome de um ficheiro obtém-se a partir de
um caminho que identifica o ficheiro, sendo a substring do caminho composta por todos os seus últimos
caracteres a partir da última ocorrência do caracter ‘/’.
1.3.2. Tipo
    •   Ficheiro regular [-] - é o tipo mais comum de ficheiro; pode conter dados de qualquer tipo (texto
        legível por humanos, instruções executáveis pelo processador, comandos interpretáveis por uma
        shell, etc.).
    •   Directório [d] – uma directório é um tipo de ficheiro que contém uma listagem de outros ficheiros
        ou directórios.




dr. Jonnathan Guambe                                                         Administração de Sistemas
•   Ficheiro especial [c] – este tipo de ficheiro é usado por dispositivos para input e output, tal como
        os ficheiros no directório /dev.
    •   Fifo (ou named Pipe) [p]– é um tipo de ficheiro utilizado para comunicação entre processos.
    •   Symbolic Link (atalho ou shortcut) [l] - é um ficheiro que representa um caminho para outro
        ficheiro.
    •   Socket [s] – é um ficheiro especial utilizado para comunicação entre processos tipicamente em
        execução em máquinas diferentes interligadas por uma rede de dados.
1.3.3. Dono, grupo e permissões de acesso
Todos os ficheiros têm um dono, um grupo e permissões de acesso. Estes três atributos em conjunto,
permitem decidir que tipo de acesso ao ficheiro pode ser feito por um determinado utilizador do sistema.
1.3.4. Timestamps de criação, acesso e modificação
Os ficheiros têm associados timestamps de acesso, modificação de estado e modificação de atributos e
modificação de conteúdo.
1.4. Acesso a um ficheiro
Para cada ficheiro são definidas permissões para três tipos de acesso: leitura, escrita e execução. Estes três
tipos de acesso são, por sua vez, permitidos ou negados a três conjuntos de utilizadores: o dono do
ficheiro, os utilizadores que pertencem ao grupo do ficheiro e os restantes.
Experimente executar o comando ls com a opção –l. O output é de uma linha por cada ficheiro na
directório actual. Cada linha tem a forma:
Os nove caracteres de cada linha (entre o segundo e o décimo, inclusive), mostram
o estado dos três tipos de acesso, permitido ou negado (um hifen ‘-‘ significa acesso negado, a letra r, w
ou x significa acesso permitido) para cada um dos três grupos de utilizadores (dono, grupo e outros).




dr. Jonnathan Guambe                                                        Administração de Sistemas
Cada tipo de acesso tem um significado óbvio para os ficheiros de qualquer tipo que não seja directório.
Neste caso, por ser eventualmente menos intuitivo o significado de cada tipo de permissão, e por ser um
tipo de ficheiro muito comum e importante segue o seu significado na tabela abaixo.




Outra questão importante é como é que o sistema decide para um determinado utilizador, para
um dado ficheiro, qual o grupo de utilizadores (owner, group ou others) cujas permissões de
acesso se aplicam. A regra é simples mas tem alguns efeitos inesperados. Se um utilizador é
dono do ficheiro então aplicam-se as permissões do owner. Se um utilizador não é dono mas
pertence ao grupo do ficheiro, aplicam-se as permissões do group. Só nos restantes casos é que
se aplicam as permissões de others.
Veja as páginas de manual dos comandos chmod e chown. Experimente tirar todos os tipos de
permissão ao dono de um ficheiro e mantê-las para o grupo e outros utilizadores. Tente ver o
conteúdo do ficheiro e verifique o que acontece.

1.5. Exercicios
    1. Considere a estrutura de directórios representado na figura abaixo:




        a) Crie um ficheiro carta.doc no directorio farrusco.




dr. Jonnathan Guambe                                                     Administração de Sistemas
b) Liste todos os ficheiros cujos nomes começam pela letra "c", localizados
         no directorio farrusco.

      c) Crie um subdirectorio aves na seu directorio pessoal.

      d) Mova para o directorio aves o ficheiro comida.txt, localizado no directorio
         farrusco.

      e) Posicione-se no directorio criado na operação c) deste grupo de
         exercícios, e confirme a sua localização.

      f) Liste todos os utilizadores que tenham sessões abertas no mesmo sistema
         que você.

      g) Guarde a informação dos utilizadores com sessões abertas no sistema
         num ficheiro chamado alunos.txt, que deverá ser criado no directorio
         gatos (Obs: Deve utilizar apenas um comando para realizar esta tarefa).

      h) Copie o ficheiro alunos.txt para o directorio boby.

      i) Crie, dentro da directoria miau, um ficheiro com o nome de fic1.txt, cujo
         conteúdo deverá ser: "Ola, bom dia!". Deverá usar apenas a linha de
         comando (não deverá usar nenhum processador de texto).

      j) Altere o nome do ficheiro fic1.txt para fic3.txt

      k) Acrescente ao ficheiro fic3.txt a palavra "Mais".

      l) Visualize o numero total de palavras, linhas e caracteres do ficheiro
         fic3.txt.

      m) Copie o ficheiro fic3.txt para o directorio mickey com o nome mmouse.txt.

      n) Remova as permissões de escrita sobre todos ficheiros e directorios
         localizados em ratos.

      o) Tente remover o ficheiro mmouse.txt.

      p) Volte a atribuir as permissões de escrita ao directorio ratos.

      q) Apague o ficheiro mmouse.txt.

      r) Altere o nome do ficheiro .bash_history, localizado na seu directorio
         pessoal, para historicocomandos.txt.




dr. Jonnathan Guambe                                         Administração de Sistemas
2. Administração de usuários
O Unix e Linux são sistemas operacionais multi-usuários, portanto é necessário que todos os usuários
sejam cadastrados e tenham permissões de acesso diferenciadas. É possível também cadastra-los em
grupos para facilitar a gestão.
A criação e administração de contas de usuários no sistema são exclusive do super-usuário (root). É uma
tarefa que demanda responsabilidade e deve ser acompanhada com muita atenção.

2.1. Verificando informações do usuário
Todo usuário possui um número chamado user ID com o qual o sistema Unix/Linux identifica-o no
sistema. Além do user ID, os usuários possuem o group ID. Toda vez que um processo for ativado será
atribuído ao processo um User ID e um Group ID. Estes ID's são chamados de identificação efetiva do
processo.
id [ opções ] [ nome ]
2.1.1. Exemplos
    •   id - Sem parâmetros, lista as informações do usuário actual.
        uid=1094(laureano) gid=500(prof) grupos=500(prof)
    •   id bin - Sem parâmetros, lista as informações do usuário bin.
        uid=1(bin) gid=1(bin) grupos=1(bin),2(daemon),3(sys)
    •   id -u - Lista somente o user id do usuário actual.
        1094



2.2. Tornando-se outro usuário – Comando su e sudo
Permite o usuário mudar sua identidade para outro usuário sem fazer o logout. Útil para executar um
programa ou comando como super-usuário sem ter que abandonar a sessão actual.
su [usuário] – onde [usuário] é o nome do usuário que deseja usar para aceder o sistema. Se não
digitado, é assumido o usuário root.
sudo su – comando usado para mudar de sessão para super-usuário ou usuário root. Este comando
somente funciona caso o usuário que esteja a digita-lo pertencer tenha permissões para tal.
Digite exit quando desejar retornar a identificação de usuário anterior.
sudo – executa determinado comando com o ID de root sem mudar a sessão para root.

dr. Jonnathan Guambe                                                       Administração de Sistemas
Utilize o manual on-line (man) para ver outras opções de utilização dos comandos su e sudo.

2.3. Adicionando usuários – Comando useradd
O comando useradd permite que se criem usuários conforme especificado em opções. Somente o super-
usuário poderá utilizar este comando.
useradd [ opções ] usuário
Este comando irá alterar os arquivos:
    •   /etc/passwd – informações de contas de usuários;
    •   /etc/shadow – senhas criptografadas;
    •   /etc/group – informações de grupos.

2.3.1. Exemplos
    •   useradd malcolmx - Cria o usuário malcolmx.
    •   usermod –d /home/malcolmx malcolmx- Cria o usuário malcolmx e designa o directório
        /home/malcolmx como o directório pessoal deste.
    •   usermod –s /bin/sh malcolmx - Cria o usuário malcolmx com o shell sh.
    •   usermod –g root malcolmx - Cria o usuário malcolmx com o grupo root.
    •   useradd –d /home/luiscossa –g users –c “Luis Octávio Cossa” luis - Cria o usuário luis com
        com várias informações.
O comando useradd tem alguns inconvenientes tais como, não criar o directório home do usuário, não
copiar os ficheiros para inicialização do shell do directório /etc/skel para o directório home do usuário
automaticamente, entre outros. Outra alternativa para adição de usuários e o comando adduser, que é mais
iterativo e efectua certas operações como criação do directório home, criação do grupo, relacionamento
do usuário ao grupo, copia de ficheiros do /etc/skel entre outros, automaticamente.
Utilize o manual on-line (man) para ver outras opções de utilização dos comandos adduser e useradd.



2.4. Alterando a senha do usuário – comando passwd
O comando passwd permite que se troque a senha de determinado usuário. O super-usuário pode trocar a
senha de qualquer outro. O usuário comum, porém, pode trocar somente a sua senha. As senhas são
armazenadas no arquivo /etc/passwd ou /etc/shadow. No arquivo /etc/passwd também é armazenado as
informações relativas aos usuários.


dr. Jonnathan Guambe                                                       Administração de Sistemas
Em algumas distribuições após a criação do usuário será necessário criar uma senha para este, caso
contrário, não será permitido que este usuário faça login no sistema.
passwd [ usuário ]
2.4.1. Exemplos
    •   passwd jparc - Alterando a senha de outro usuário (é preciso ser o super-usuário)
    •   passwd - Alterando a própria senha (usuário comum pode utilizar este comando)
Para sua segurança, deve-se configurar o sistema para que:
    •   A senha deva ter no mínimo 6 caracteres;
    •   A senha deva ter no mínimo duas letras maiúsculas e/ou duas letras minúsculas e pelo menos um
        dígito ou caractere especial;
    •   São aceites somente os caracteres ASCII padrão de códigos 0 a 127;
    •   A senha deve diferenciar do nome da conta (obrigatório);
    •   A nova senha deve diferenciar da senha velha em pelo menos três caracteres.
As regras acima não se aplicam ao super-usuário.



2.5. Eliminando usuários – Comando userdel
O comando userdel permite que se eliminem usuários do sistema. Somente o super-usuário poderá utilizar
este comando.
userdel [opções] usuário
2.5.1. Exemplos
    •   userdel jparc - Eliminando a conta do usuário jparc
    •   userdel –r jparc - Eliminando a conta do usuário jparc e apagando o seu directório home.



2.6. Modificando o perfil de um usuário – comando usermod
Este comando 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



dr. Jonnathan Guambe                                                     Administração de Sistemas
2.6.1. Exemplo
    •   useradd -d /home/luizotavio –g users –c “Luiz Otávio Laureano” luiz
    •   tail /etc/passwd
        kaminenko:x:1226:1100:Rafael Kaminenko:/home/cc2002-1s/kaminenko:/bin/bash
        crazyeye:x:1227:1100::/home/cc2002-1s/crazyeye:/bin/bash
        luiz:x:1228:100:Luiz Otávio Laureano:/home/luizotavio:/bin/bash
    •   usermod –m –d /home/luiz luiz
    •   tail /etc/passwd
        kaminenko:x:1226:1100:Rafael Kaminenko:/home/cc2002-1s/kaminenko:/bin/bash
        crazyeye:x:1227:1100::/home/cc2002-1s/crazyeye:/bin/bash
        luiz:x:1228:100:Luiz Otávio Laureano:/home/luiz:/bin/bash
Atenção: Ao modificar o directório home de um usuário do sistema, utilize sempre a opção –m para
mover o directório anterior para o novo directório especificado.



2.7. Adicionando grupos – comando groupadd
Para facilitar a administração do sistema, pode-se usar o conceito de grupos de usuários com perfis
semelhantes. Por exemplo, definir grupos conforme os departamentos de uma empresa.
groupadd [ opções ] grupo
Este comando irá alterar os arquivos:
    •   /etc/group          – informações de grupos.
    •   /etc/gshadow        – informações de grupos armazenadas de forma segura (senhas de grupo).
2.7.1. Exemplos
    •   groupadd vendas - Criando o grupo vendas
    •   groupadd –g 750 vendas - Criando o grupo vendas com GID 750



2.8. Eliminando grupos – Comando groupdel
O comando groupdel permite que se eliminem grupos do sistema. Somente o superusuário poderá utilizar
este comando.



dr. Jonnathan Guambe                                                     Administração de Sistemas
groupdel grupo
Atenção: Ao eliminar um grupo do sistema, se existir algum usuário ligado a este grupo, ele ficará
“órfão”.



2.9. Exercicios
1. Informe os comandos e anote o conteúdo dos arquivos /etc/group e do /etc/passwd após cada passo
(utilize o comando tail para visualizar o final do arquivo) e o resultado do comando id.
  * Adicionar o usuário aluno01 com ID 600;
  * Modificar o shell para o /bin/bash;
  * Acrescentar o comentário “Conta de teste do aluno”;
  * Criar o grupo alunos;
  * Ligar o usuário aluno01 ao grupo alunos.




dr. Jonnathan Guambe                                                      Administração de Sistemas
3. Shell Script
3.1. O que é Shell
Antes de saber o que é um script em shell, é importante saber o que é um Shell. O Shell nada
mais é, que o responsável entre a comunicação do usuário com o Kernel do sistema. Para isso,
basta que o usuário conheça os comando e sintaxes apropriadas há este Shell.
O kernel é quem acessa os equipamentos (hardware) da máquina, como disco rígido, placa de
vídeo e modem. Por exemplo, para o usuário ler um arquivo qualquer, toda esta hierarquia é
seguida:

                 USUÁRIO --> SHELL --> KERNEL --> DISCO RÍGIDO
Para os usuários do Windows, é fácil pensar no shell como um MSDOS melhorado. Ao invés do
C:> aparece um [root@localhost root]#, mas o funcionamento é similar. Basta digitar um
comando, suas opções e apertar a ENTER que ele será executado.
O shell é muito mais poderoso que MSDOS. Além dos comandos básicos para navegar entre
directórios e manipular arquivos, ele também possui todas as estruturas de uma linguagem de
programação, como IF, FOR, WHILE, variáveis e funções. Com isso, também é possível usar o
shell para fazer scripts e automatizar tarefas.



3.2. Shell script
Um script é um arquivo que guarda vários comandos e pode ser executado sempre que preciso.
Os comandos de um script são exactamente os mesmos que se digita no prompt, é tudo shell.
Por exemplo, se de tempos em tempos você quer saber informações do sistema como horário,
ocupação do disco e os usuários que estão logados, é preciso digitar três comandos:
[root@localhost root]# date
[root@localhost root]# df
[root@localhost root]# w
É melhor fazer um script chamado "aloscript" e colocar estes comandos nele. O conteúdo do
arquivo "aloscript" seria o seguinte:


dr. Jonnathan Guambe                                               Administração de Sistemas
#!/bin/bash
      date
      df
      w


E para chamar este script, basta agora executar apenas um comando:
[root@localhost root]# aloscript
Isso é um shell script. Um arquivo de texto que contém comandos do sistema e pode ser
executado pelo usuário.


3.2.1. Passos para criacao de um shell script
O primeiro shell script a fazer será o "aloscript" do exemplo anterior, de simplesmente juntar
três comandos em um mesmo script. A seguir estão os passos:
   1. Escolher um nome para o script
       Já temos um nome: aloscript.
        Use apenas letras minúsculas e evite acentos, símbolos e espaço em branco
   2. Escolher o directório onde colocar o script
       Para que o script possa ser executado de qualquer parte do sistema, mova-o para um
       directório que esteja no seu PATH. Para ver quais são estes directórios, use o comando:
       echo $PATH
       Se não tiver permissão de mover para um directório do PATH, deixe-o dentro de seu
       directório pessoal ($HOME).
   3. Criar o arquivo e colocar nele os comandos
       Use o nano, VI ou outro editor de textos de sua preferência para colocar todos os
       comandos dentro do arquivo.
   4. Colocar a chamada do shell na primeira linha
       #!/bin/bash


dr. Jonnathan Guambe                                                Administração de Sistemas
Isto possibilita que a script ao ser executada, o sistema saiba que o bash é quem irá
       interpretar estes comandos.
   5. Tornar o script um arquivo executável
       Use o seguinte comando para que seu script seja reconhecido pelo sistema como um
       comando executável:
       chmod +x aloscript
3.2.1.1. Problemas na execução do script
   •   "command not found"
       Significa que o shell não encontrou o seu script, verifique se o comando que você está
       chamando tem exactamente o mesmo nome do seu script. Lembre-se que o Unix/Linux é
       case sensitive, então o comando "ALOSCRIPT" é diferente do comando "aloscript".
       Caso o nome esteja correto, verifique se ele está no PATH do sistema. O comando "echo
       $PATH" mostra quais são os directórios conhecidos, mova seu script para dentro de um
       deles, ou chame-o passando o caminho completo.
       Se o script estiver no directório corrente, chame-o com um "./" na frente, assim:
       ./aloscript Caso contrário, especifique o caminho completo desde o directório raiz:, por
       exemplo: /home/aulas/aloscript
   •   "Permission Denied"
       Significa que o shell encontrou seu script, mas ele não é executável.
       Use o comando "chmod +x seu-script" para torná-lo um arquivo executável.
   •   "Sintax Error"
       Significa que o shell encontrou e executou seu script, porém ele tem erros.
       Um script só é executado quando sua sintaxe está 100% correta. Verifique os seus
       comandos, geralmente o erro é algum IF ou aspas que foram abertos e não foram
       fechados. A própria mensagem informa o número da linha onde o erro foi encontrado.




dr. Jonnathan Guambe                                               Administração de Sistemas
3.3. Exercícios
    1. Escreva um script chamado clean para limpar seu directório $HOME, removendo todos
        os arquivos com extensão "bak" ou "~" que não tenham sido acessados há pelo menos 3
        dias. Dica: use os comandos find e rm e a avaliação por aspas inversas.
    2. Escreva um script para criar directórios com nome DirX, onde X varia de 1 a 99, usando
        a instrucao “for”.



4. Tarefas automatizadas
Suponha que você seja dono de um serviço de hospedagem de sites e diariamente precisa disponibilizar,
numa pasta acessível por FTP, o arquivo de log de acessos de um cliente. Seria trabalhoso fazer isso
manualmente e na pior das hipóteses, você poderia esquecer. O Linux contem um o serviço cron, que
permite a realização de tarefas periodicamente e em determinadas datas ou dias especificadas por você,
ou seja, cron é uma ferramenta que permite programar a execução de comandos e processos de maneira
repetitiva ou apenas uma única vez.
Para executar as tarefas, o cron usa uma espécie de tabela conhecida como crontab. O arquivo crontab
geralmente fica localizado em /etc/crontab, mas também pode estar em um directório que cria um crontab
para cada usuário do sistema, geralmente em /var/spool/cron/.
Nos ficheiros de configuração existem algumas linhas que são usadas como variáveis para configurar o
ambiente no qual as actividades do cron são executadas. O valor da variável SHELL diz ao sistema qual
ambiente shell deve usar (neste exemplo, a shell bash), e a variável PATH define a localidade usada para
executar comandos. O output das tarefas do cron é enviado por e-mail ao nome do usuário definido na
variável MAILTO. Se a variável MAILTO for definida com um campo vazio (MAILTO="") ou omitida,
o e-mail não será enviado. Pode-se usar a variável HOME para definir o directório raiz a ser usado ao
executar comandos ou scripts.
O primeiro passo é abrir o crontab. Para isso, você pode usar editores de textos como vi e o emacs.
Também é possível digitar o comando "crontab -e" para editar o arquivo exclusivo de seu usuário. Em
alguns, a edição é feita como se você estivesse usando o nano.


O crontab tem o seguinte formato:
[minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando]

dr. Jonnathan Guambe                                                    Administração de Sistemas
O preenchimento de cada campo é feito da seguinte maneira:
    •   Minutos: informe números de 0 a 59;
    •   Horas: informe números de 0 a 23;
    •   Dias do mês: informe números de 1 a 31;
    •   Mês: informe números de 1 a 12;
    •   Dias da semana: informe números de 0 a 6;
    •   Usuário: é o usuário que vai executar o comando (não é necessário especifica-lo se o arquivo do
        próprio usuário for usado);
    •   Comando: a tarefa que deve ser executada.
Repare que a ordem desses valores indica o nome correspondente do campo. Por exemplo, no campo mês,
1 a 12 quer dizer de "Janeiro a Dezembro". No caso de dias da semana, 0 a 6 quer dizer de "Domingo a
Sábado". Note que o número 7 também pode ser usado. Neste caso, assim como o número 0, o 7 equivale
ao dia de "Domingo".
No lugar desses valores, você pode informar * (asterisco) para especificar uma execução constante. Por
exemplo, se o campo dias do mês conter *, o comando relacionado será executado todos os dias.
Você também pode informar intervalos no preenchimento, separando os números de início e fim através
de - (hífen). Por exemplo, se no campo horas for informado 2-5, o comando relacionado será executado às
2, 3, 4 e 5 horas. E se o comando tiver que ser executado às 2 horas, entre 15 e 18 horas e às 22 horas?
Basta informar 2,15-18,22. Nestes casos, você separa os parâmetros por vírgula.
Na configuração de tarefas automatizadas por vezes e útil usar comentários para inserir descrições quando
se tem várias tarefas a serem executadas, para tal devera inserir # e tudo o que for digitado na linha não
será considerado pelo cron.



4.1. Exemplos:
#Executa a script a cada 7 minutos
*/7 * * * * /home/user/test.pl
# Regista o consumo de memoria todas as segundas feiras as 3:30AM no ficheiro /tmp/meminfo
30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
# Executa determinada script no dia 1 de todos os meses as 4:10AM



dr. Jonnathan Guambe                                                     Administração de Sistemas
10 4 1 * * /root/scripts/backup.sh



4.2. Exercicios
    1. Crie um cron que a 1:0AM de todas as terças-feiras grava o historico de comandos no ficheiro
        /tmp/cmdhistory.
    2. Crie um cron remove todos os ficheiros e directórios do directório home do usuario aluno01
        (use /home/aluno01 com directório home) as 18 horas do dia 1 de Junho.
    3. Crie um cron que a cada 5 minutos grava historico dos usuarios logados no ficheiro
        /tmp/loggedinusers (Dica: use o comando who).



5. Bibliografia
    •   http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html
    •   http://www.gnu.org/manual/bash-2.02/bashref.html
    •   http://sh.underlinux.com.br

    •   Hudson, A. & Hudson, P.,”Ubuntu Unleashed”, Sams.
    •   Hagen W. V.(2007), “Ubuntu® Linux® Bible”, Wiley Publishing, Inc.




dr. Jonnathan Guambe                                                   Administração de Sistemas

Más contenido relacionado

Similar a Soa cap2 admin-sistemas - manual

Sis arqlinux
Sis arqlinuxSis arqlinux
Sis arqlinux
zirimbas
 
Linux comandosgeraiseservidoresderede-120930000057-phpapp01
Linux comandosgeraiseservidoresderede-120930000057-phpapp01Linux comandosgeraiseservidoresderede-120930000057-phpapp01
Linux comandosgeraiseservidoresderede-120930000057-phpapp01
Elizabete Bahia
 

Similar a Soa cap2 admin-sistemas - manual (20)

Apostila linux.sxw
Apostila linux.sxwApostila linux.sxw
Apostila linux.sxw
 
[Engenharia de Software] Marquivos.com
[Engenharia de Software] Marquivos.com[Engenharia de Software] Marquivos.com
[Engenharia de Software] Marquivos.com
 
Apostila Linux.Sxw
Apostila Linux.SxwApostila Linux.Sxw
Apostila Linux.Sxw
 
PERSISTÊNCIA DAS INFORMAÇÕES DE ARQUIVOS EXCLUÍDOS
PERSISTÊNCIA DAS INFORMAÇÕES DE ARQUIVOS EXCLUÍDOSPERSISTÊNCIA DAS INFORMAÇÕES DE ARQUIVOS EXCLUÍDOS
PERSISTÊNCIA DAS INFORMAÇÕES DE ARQUIVOS EXCLUÍDOS
 
Material sobre sistemas de arquivos do Windows,como é a organização e o supor...
Material sobre sistemas de arquivos do Windows,como é a organização e o supor...Material sobre sistemas de arquivos do Windows,como é a organização e o supor...
Material sobre sistemas de arquivos do Windows,como é a organização e o supor...
 
TA1 Slides Acessibilidade - Preto e Branco.pdf
TA1 Slides Acessibilidade - Preto e Branco.pdfTA1 Slides Acessibilidade - Preto e Branco.pdf
TA1 Slides Acessibilidade - Preto e Branco.pdf
 
Tipos de sistemas operacionais
Tipos de sistemas operacionaisTipos de sistemas operacionais
Tipos de sistemas operacionais
 
Sis arqlinux
Sis arqlinuxSis arqlinux
Sis arqlinux
 
ADS e GTI
ADS e GTIADS e GTI
ADS e GTI
 
Módulo 7 – Tratamento de ficheiros.pptx
Módulo 7 – Tratamento de ficheiros.pptxMódulo 7 – Tratamento de ficheiros.pptx
Módulo 7 – Tratamento de ficheiros.pptx
 
Comandos do linux
Comandos do linuxComandos do linux
Comandos do linux
 
Unidade 3.3 Estrutura de Diretórios Linux
Unidade 3.3 Estrutura de Diretórios LinuxUnidade 3.3 Estrutura de Diretórios Linux
Unidade 3.3 Estrutura de Diretórios Linux
 
Estruturas de Sistemas Operacionais
Estruturas de Sistemas OperacionaisEstruturas de Sistemas Operacionais
Estruturas de Sistemas Operacionais
 
Gerencia Básica Gnu/Linux
Gerencia Básica Gnu/LinuxGerencia Básica Gnu/Linux
Gerencia Básica Gnu/Linux
 
Linux comandosgeraiseservidoresderede-120930000057-phpapp01
Linux comandosgeraiseservidoresderede-120930000057-phpapp01Linux comandosgeraiseservidoresderede-120930000057-phpapp01
Linux comandosgeraiseservidoresderede-120930000057-phpapp01
 
Filestream sistema arquivos
Filestream  sistema arquivosFilestream  sistema arquivos
Filestream sistema arquivos
 
Linux
LinuxLinux
Linux
 
Redes Linux comandos gerais e servidores de redes
Redes Linux comandos gerais e servidores de redesRedes Linux comandos gerais e servidores de redes
Redes Linux comandos gerais e servidores de redes
 
Apostilaredeslinux
ApostilaredeslinuxApostilaredeslinux
Apostilaredeslinux
 
Tutorial Shell Script
Tutorial Shell ScriptTutorial Shell Script
Tutorial Shell Script
 

Más de portal_Do_estudante

Más de portal_Do_estudante (11)

Soa#cap4.1 gestor de pacotes
Soa#cap4.1   gestor de pacotesSoa#cap4.1   gestor de pacotes
Soa#cap4.1 gestor de pacotes
 
Soa#cap4.1 gestor de pacotes
Soa#cap4.1   gestor de pacotesSoa#cap4.1   gestor de pacotes
Soa#cap4.1 gestor de pacotes
 
Soa cap3 servicos de internet
Soa cap3   servicos de internetSoa cap3   servicos de internet
Soa cap3 servicos de internet
 
Soa cap4[1].4 ufw
Soa cap4[1].4   ufwSoa cap4[1].4   ufw
Soa cap4[1].4 ufw
 
Soa cap2 exercicios resolvidos shell
Soa cap2 exercicios resolvidos shellSoa cap2 exercicios resolvidos shell
Soa cap2 exercicios resolvidos shell
 
Soa cap2 administracao de sistemas2 (slides)
Soa cap2 administracao de sistemas2 (slides)Soa cap2 administracao de sistemas2 (slides)
Soa cap2 administracao de sistemas2 (slides)
 
Soa cap2 exercicios
Soa cap2 exerciciosSoa cap2 exercicios
Soa cap2 exercicios
 
Soa cap1 introducao a linux
Soa cap1 introducao a linuxSoa cap1 introducao a linux
Soa cap1 introducao a linux
 
Soa cap1 ubuntu
Soa cap1   ubuntuSoa cap1   ubuntu
Soa cap1 ubuntu
 
Cap1 exercicios comandos linux resolucao part i
Cap1 exercicios comandos linux   resolucao part iCap1 exercicios comandos linux   resolucao part i
Cap1 exercicios comandos linux resolucao part i
 
Cap1 exercicios comandos linux
Cap1 exercicios comandos linuxCap1 exercicios comandos linux
Cap1 exercicios comandos linux
 

Soa cap2 admin-sistemas - manual

  • 1. UNIVERSIDADE SÃO TOMÁS DE MOÇAMBIQUE CURSO DE: TECNOLOGIAS E SISTEMAS DE INFORMAÇÃO SISTEMAS OPERATIVOS AVANÇADOS Administração de Sistemas DOCENTE: dr. Jonnathan Guambe dr. Jonnathan Guambe Administração de Sistemas
  • 2. Índice 1. Ficheiros e directórios ....................................................................................... 4 1.1. Árvore de directórios .................................................................................. 4 1.2. Identificação de um ficheiro .......................................................................4 1.3. Atributos de um ficheiro .............................................................................4 1.3.1. Nome ................................................................................................... 4 1.3.2. Tipo ..................................................................................................... 4 1.3.3. Dono, grupo e permissões de acesso ..................................................5 1.3.4. Timestamps de criação, acesso e modificação ....................................5 1.4. Acesso a um ficheiro ..............................................................................5 1.5. Exercicios.................................................................................................... 7 2. Administração de usuários ................................................................................8 2.1. Verificando informações do usuário ...........................................................8 2.1.1. Exemplos.............................................................................................. 9 2.2. Tornando-se outro usuário – Comando su e sudo........................................9 2.3. Adicionando usuários – Comando useradd .................................................9 2.3.1. Exemplos.................................................................................................. 9 2.4. Alterando a senha do usuário – comando passwd ....................................10 2.4.1. Exemplos............................................................................................ 10 2.5. Eliminando usuários – Comando userdel ..................................................11 2.5.1. Exemplos............................................................................................ 11 2.6. Modificando o perfil de um usuário – comando usermod .........................11 2.6.1. Exemplo............................................................................................. 11 2.7. Adicionando grupos – comando groupadd ................................................12 dr. Jonnathan Guambe Administração de Sistemas
  • 3. 2.7.1. Exemplos............................................................................................ 12 2.8. Eliminando grupos – Comando groupdel ..................................................12 2.9. Exercicios.................................................................................................. 12 3. Shell Script....................................................................................................... 13 3.1. O que é Shell............................................................................................. 13 3.2. Shell script................................................................................................. 13 3.2.1. Passos para criacao de um shell script ..............................................14 3.2.1.1. Problemas na execução do script................................................15 3.3. Exercícios ................................................................................................. 16 4. Tarefas automatizadas..................................................................................... 16 4.1. Exemplos:.................................................................................................. 17 4.2. Exercicios.................................................................................................. 18 5. Bibliografia....................................................................................................... 18 dr. Jonnathan Guambe Administração de Sistemas
  • 4. 1. Ficheiros e directórios Os ficheiros são objectos fundamentais nos sistemas operativos UNIX, mais que noutros sistemas operativos. A forma como se opera sobre um ficheiro é extensível a quase tudo o que interage com o sistema operativo. 1.1. Árvore de directórios Do ponto de vista do utilizador, todos os ficheiros estão localizados na árvore de directórios do sistema. E todos são acessíveis a partir da directório raiz, cujo nome é “/”. A estrutura em árvore assenta no conceito de directório. Uma directório é um ficheiro que contém uma lista de ficheiros (que podem ser de qualquer tipo, incluindo o tipo directório). 1.2. Identificação de um ficheiro Um caminho (path) é uma string que identifica um ficheiro (de qualquer tipo, ou seja, pode identificar um ficheiro regular, uma directório, um dispositivo...) na árvore de directórios do sistema. Um caminho é absoluto se começa com o carácter '/ ' (/home/linux/teste.txt); caso contrário é relativo (teste.txt). 1.3. Atributos de um ficheiro Os ficheiros têm vários atributos, a frente veremos a lista completa desses atributos, de momento segue uma descrição dos mais relevantes no âmbito da parte prática da disciplina. 1.3.1. Nome Qualquer ficheiro tem um nome. O nome de um ficheiro é uma string que não pode conter nem caracter '0' nem o caracter '/'. O caracter '/' é o separador de nomes de ficheiros e directórios no nome dum caminho; o caracter '0' é o caracter terminador duma string. O nome de um ficheiro obtém-se a partir de um caminho que identifica o ficheiro, sendo a substring do caminho composta por todos os seus últimos caracteres a partir da última ocorrência do caracter ‘/’. 1.3.2. Tipo • Ficheiro regular [-] - é o tipo mais comum de ficheiro; pode conter dados de qualquer tipo (texto legível por humanos, instruções executáveis pelo processador, comandos interpretáveis por uma shell, etc.). • Directório [d] – uma directório é um tipo de ficheiro que contém uma listagem de outros ficheiros ou directórios. dr. Jonnathan Guambe Administração de Sistemas
  • 5. Ficheiro especial [c] – este tipo de ficheiro é usado por dispositivos para input e output, tal como os ficheiros no directório /dev. • Fifo (ou named Pipe) [p]– é um tipo de ficheiro utilizado para comunicação entre processos. • Symbolic Link (atalho ou shortcut) [l] - é um ficheiro que representa um caminho para outro ficheiro. • Socket [s] – é um ficheiro especial utilizado para comunicação entre processos tipicamente em execução em máquinas diferentes interligadas por uma rede de dados. 1.3.3. Dono, grupo e permissões de acesso Todos os ficheiros têm um dono, um grupo e permissões de acesso. Estes três atributos em conjunto, permitem decidir que tipo de acesso ao ficheiro pode ser feito por um determinado utilizador do sistema. 1.3.4. Timestamps de criação, acesso e modificação Os ficheiros têm associados timestamps de acesso, modificação de estado e modificação de atributos e modificação de conteúdo. 1.4. Acesso a um ficheiro Para cada ficheiro são definidas permissões para três tipos de acesso: leitura, escrita e execução. Estes três tipos de acesso são, por sua vez, permitidos ou negados a três conjuntos de utilizadores: o dono do ficheiro, os utilizadores que pertencem ao grupo do ficheiro e os restantes. Experimente executar o comando ls com a opção –l. O output é de uma linha por cada ficheiro na directório actual. Cada linha tem a forma: Os nove caracteres de cada linha (entre o segundo e o décimo, inclusive), mostram o estado dos três tipos de acesso, permitido ou negado (um hifen ‘-‘ significa acesso negado, a letra r, w ou x significa acesso permitido) para cada um dos três grupos de utilizadores (dono, grupo e outros). dr. Jonnathan Guambe Administração de Sistemas
  • 6. Cada tipo de acesso tem um significado óbvio para os ficheiros de qualquer tipo que não seja directório. Neste caso, por ser eventualmente menos intuitivo o significado de cada tipo de permissão, e por ser um tipo de ficheiro muito comum e importante segue o seu significado na tabela abaixo. Outra questão importante é como é que o sistema decide para um determinado utilizador, para um dado ficheiro, qual o grupo de utilizadores (owner, group ou others) cujas permissões de acesso se aplicam. A regra é simples mas tem alguns efeitos inesperados. Se um utilizador é dono do ficheiro então aplicam-se as permissões do owner. Se um utilizador não é dono mas pertence ao grupo do ficheiro, aplicam-se as permissões do group. Só nos restantes casos é que se aplicam as permissões de others. Veja as páginas de manual dos comandos chmod e chown. Experimente tirar todos os tipos de permissão ao dono de um ficheiro e mantê-las para o grupo e outros utilizadores. Tente ver o conteúdo do ficheiro e verifique o que acontece. 1.5. Exercicios 1. Considere a estrutura de directórios representado na figura abaixo: a) Crie um ficheiro carta.doc no directorio farrusco. dr. Jonnathan Guambe Administração de Sistemas
  • 7. b) Liste todos os ficheiros cujos nomes começam pela letra "c", localizados no directorio farrusco. c) Crie um subdirectorio aves na seu directorio pessoal. d) Mova para o directorio aves o ficheiro comida.txt, localizado no directorio farrusco. e) Posicione-se no directorio criado na operação c) deste grupo de exercícios, e confirme a sua localização. f) Liste todos os utilizadores que tenham sessões abertas no mesmo sistema que você. g) Guarde a informação dos utilizadores com sessões abertas no sistema num ficheiro chamado alunos.txt, que deverá ser criado no directorio gatos (Obs: Deve utilizar apenas um comando para realizar esta tarefa). h) Copie o ficheiro alunos.txt para o directorio boby. i) Crie, dentro da directoria miau, um ficheiro com o nome de fic1.txt, cujo conteúdo deverá ser: "Ola, bom dia!". Deverá usar apenas a linha de comando (não deverá usar nenhum processador de texto). j) Altere o nome do ficheiro fic1.txt para fic3.txt k) Acrescente ao ficheiro fic3.txt a palavra "Mais". l) Visualize o numero total de palavras, linhas e caracteres do ficheiro fic3.txt. m) Copie o ficheiro fic3.txt para o directorio mickey com o nome mmouse.txt. n) Remova as permissões de escrita sobre todos ficheiros e directorios localizados em ratos. o) Tente remover o ficheiro mmouse.txt. p) Volte a atribuir as permissões de escrita ao directorio ratos. q) Apague o ficheiro mmouse.txt. r) Altere o nome do ficheiro .bash_history, localizado na seu directorio pessoal, para historicocomandos.txt. dr. Jonnathan Guambe Administração de Sistemas
  • 8. 2. Administração de usuários O Unix e Linux são sistemas operacionais multi-usuários, portanto é necessário que todos os usuários sejam cadastrados e tenham permissões de acesso diferenciadas. É possível também cadastra-los em grupos para facilitar a gestão. A criação e administração de contas de usuários no sistema são exclusive do super-usuário (root). É uma tarefa que demanda responsabilidade e deve ser acompanhada com muita atenção. 2.1. Verificando informações do usuário Todo usuário possui um número chamado user ID com o qual o sistema Unix/Linux identifica-o no sistema. Além do user ID, os usuários possuem o group ID. Toda vez que um processo for ativado será atribuído ao processo um User ID e um Group ID. Estes ID's são chamados de identificação efetiva do processo. id [ opções ] [ nome ] 2.1.1. Exemplos • id - Sem parâmetros, lista as informações do usuário actual. uid=1094(laureano) gid=500(prof) grupos=500(prof) • id bin - Sem parâmetros, lista as informações do usuário bin. uid=1(bin) gid=1(bin) grupos=1(bin),2(daemon),3(sys) • id -u - Lista somente o user id do usuário actual. 1094 2.2. Tornando-se outro usuário – Comando su e sudo Permite o usuário mudar sua identidade para outro usuário sem fazer o logout. Útil para executar um programa ou comando como super-usuário sem ter que abandonar a sessão actual. su [usuário] – onde [usuário] é o nome do usuário que deseja usar para aceder o sistema. Se não digitado, é assumido o usuário root. sudo su – comando usado para mudar de sessão para super-usuário ou usuário root. Este comando somente funciona caso o usuário que esteja a digita-lo pertencer tenha permissões para tal. Digite exit quando desejar retornar a identificação de usuário anterior. sudo – executa determinado comando com o ID de root sem mudar a sessão para root. dr. Jonnathan Guambe Administração de Sistemas
  • 9. Utilize o manual on-line (man) para ver outras opções de utilização dos comandos su e sudo. 2.3. Adicionando usuários – Comando useradd O comando useradd permite que se criem usuários conforme especificado em opções. Somente o super- usuário poderá utilizar este comando. useradd [ opções ] usuário Este comando irá alterar os arquivos: • /etc/passwd – informações de contas de usuários; • /etc/shadow – senhas criptografadas; • /etc/group – informações de grupos. 2.3.1. Exemplos • useradd malcolmx - Cria o usuário malcolmx. • usermod –d /home/malcolmx malcolmx- Cria o usuário malcolmx e designa o directório /home/malcolmx como o directório pessoal deste. • usermod –s /bin/sh malcolmx - Cria o usuário malcolmx com o shell sh. • usermod –g root malcolmx - Cria o usuário malcolmx com o grupo root. • useradd –d /home/luiscossa –g users –c “Luis Octávio Cossa” luis - Cria o usuário luis com com várias informações. O comando useradd tem alguns inconvenientes tais como, não criar o directório home do usuário, não copiar os ficheiros para inicialização do shell do directório /etc/skel para o directório home do usuário automaticamente, entre outros. Outra alternativa para adição de usuários e o comando adduser, que é mais iterativo e efectua certas operações como criação do directório home, criação do grupo, relacionamento do usuário ao grupo, copia de ficheiros do /etc/skel entre outros, automaticamente. Utilize o manual on-line (man) para ver outras opções de utilização dos comandos adduser e useradd. 2.4. Alterando a senha do usuário – comando passwd O comando passwd permite que se troque a senha de determinado usuário. O super-usuário pode trocar a senha de qualquer outro. O usuário comum, porém, pode trocar somente a sua senha. As senhas são armazenadas no arquivo /etc/passwd ou /etc/shadow. No arquivo /etc/passwd também é armazenado as informações relativas aos usuários. dr. Jonnathan Guambe Administração de Sistemas
  • 10. Em algumas distribuições após a criação do usuário será necessário criar uma senha para este, caso contrário, não será permitido que este usuário faça login no sistema. passwd [ usuário ] 2.4.1. Exemplos • passwd jparc - Alterando a senha de outro usuário (é preciso ser o super-usuário) • passwd - Alterando a própria senha (usuário comum pode utilizar este comando) Para sua segurança, deve-se configurar o sistema para que: • A senha deva ter no mínimo 6 caracteres; • A senha deva ter no mínimo duas letras maiúsculas e/ou duas letras minúsculas e pelo menos um dígito ou caractere especial; • São aceites somente os caracteres ASCII padrão de códigos 0 a 127; • A senha deve diferenciar do nome da conta (obrigatório); • A nova senha deve diferenciar da senha velha em pelo menos três caracteres. As regras acima não se aplicam ao super-usuário. 2.5. Eliminando usuários – Comando userdel O comando userdel permite que se eliminem usuários do sistema. Somente o super-usuário poderá utilizar este comando. userdel [opções] usuário 2.5.1. Exemplos • userdel jparc - Eliminando a conta do usuário jparc • userdel –r jparc - Eliminando a conta do usuário jparc e apagando o seu directório home. 2.6. Modificando o perfil de um usuário – comando usermod Este comando 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 dr. Jonnathan Guambe Administração de Sistemas
  • 11. 2.6.1. Exemplo • useradd -d /home/luizotavio –g users –c “Luiz Otávio Laureano” luiz • tail /etc/passwd kaminenko:x:1226:1100:Rafael Kaminenko:/home/cc2002-1s/kaminenko:/bin/bash crazyeye:x:1227:1100::/home/cc2002-1s/crazyeye:/bin/bash luiz:x:1228:100:Luiz Otávio Laureano:/home/luizotavio:/bin/bash • usermod –m –d /home/luiz luiz • tail /etc/passwd kaminenko:x:1226:1100:Rafael Kaminenko:/home/cc2002-1s/kaminenko:/bin/bash crazyeye:x:1227:1100::/home/cc2002-1s/crazyeye:/bin/bash luiz:x:1228:100:Luiz Otávio Laureano:/home/luiz:/bin/bash Atenção: Ao modificar o directório home de um usuário do sistema, utilize sempre a opção –m para mover o directório anterior para o novo directório especificado. 2.7. Adicionando grupos – comando groupadd Para facilitar a administração do sistema, pode-se usar o conceito de grupos de usuários com perfis semelhantes. Por exemplo, definir grupos conforme os departamentos de uma empresa. groupadd [ opções ] grupo Este comando irá alterar os arquivos: • /etc/group – informações de grupos. • /etc/gshadow – informações de grupos armazenadas de forma segura (senhas de grupo). 2.7.1. Exemplos • groupadd vendas - Criando o grupo vendas • groupadd –g 750 vendas - Criando o grupo vendas com GID 750 2.8. Eliminando grupos – Comando groupdel O comando groupdel permite que se eliminem grupos do sistema. Somente o superusuário poderá utilizar este comando. dr. Jonnathan Guambe Administração de Sistemas
  • 12. groupdel grupo Atenção: Ao eliminar um grupo do sistema, se existir algum usuário ligado a este grupo, ele ficará “órfão”. 2.9. Exercicios 1. Informe os comandos e anote o conteúdo dos arquivos /etc/group e do /etc/passwd após cada passo (utilize o comando tail para visualizar o final do arquivo) e o resultado do comando id. * Adicionar o usuário aluno01 com ID 600; * Modificar o shell para o /bin/bash; * Acrescentar o comentário “Conta de teste do aluno”; * Criar o grupo alunos; * Ligar o usuário aluno01 ao grupo alunos. dr. Jonnathan Guambe Administração de Sistemas
  • 13. 3. Shell Script 3.1. O que é Shell Antes de saber o que é um script em shell, é importante saber o que é um Shell. O Shell nada mais é, que o responsável entre a comunicação do usuário com o Kernel do sistema. Para isso, basta que o usuário conheça os comando e sintaxes apropriadas há este Shell. O kernel é quem acessa os equipamentos (hardware) da máquina, como disco rígido, placa de vídeo e modem. Por exemplo, para o usuário ler um arquivo qualquer, toda esta hierarquia é seguida: USUÁRIO --> SHELL --> KERNEL --> DISCO RÍGIDO Para os usuários do Windows, é fácil pensar no shell como um MSDOS melhorado. Ao invés do C:> aparece um [root@localhost root]#, mas o funcionamento é similar. Basta digitar um comando, suas opções e apertar a ENTER que ele será executado. O shell é muito mais poderoso que MSDOS. Além dos comandos básicos para navegar entre directórios e manipular arquivos, ele também possui todas as estruturas de uma linguagem de programação, como IF, FOR, WHILE, variáveis e funções. Com isso, também é possível usar o shell para fazer scripts e automatizar tarefas. 3.2. Shell script Um script é um arquivo que guarda vários comandos e pode ser executado sempre que preciso. Os comandos de um script são exactamente os mesmos que se digita no prompt, é tudo shell. Por exemplo, se de tempos em tempos você quer saber informações do sistema como horário, ocupação do disco e os usuários que estão logados, é preciso digitar três comandos: [root@localhost root]# date [root@localhost root]# df [root@localhost root]# w É melhor fazer um script chamado "aloscript" e colocar estes comandos nele. O conteúdo do arquivo "aloscript" seria o seguinte: dr. Jonnathan Guambe Administração de Sistemas
  • 14. #!/bin/bash date df w E para chamar este script, basta agora executar apenas um comando: [root@localhost root]# aloscript Isso é um shell script. Um arquivo de texto que contém comandos do sistema e pode ser executado pelo usuário. 3.2.1. Passos para criacao de um shell script O primeiro shell script a fazer será o "aloscript" do exemplo anterior, de simplesmente juntar três comandos em um mesmo script. A seguir estão os passos: 1. Escolher um nome para o script Já temos um nome: aloscript. Use apenas letras minúsculas e evite acentos, símbolos e espaço em branco 2. Escolher o directório onde colocar o script Para que o script possa ser executado de qualquer parte do sistema, mova-o para um directório que esteja no seu PATH. Para ver quais são estes directórios, use o comando: echo $PATH Se não tiver permissão de mover para um directório do PATH, deixe-o dentro de seu directório pessoal ($HOME). 3. Criar o arquivo e colocar nele os comandos Use o nano, VI ou outro editor de textos de sua preferência para colocar todos os comandos dentro do arquivo. 4. Colocar a chamada do shell na primeira linha #!/bin/bash dr. Jonnathan Guambe Administração de Sistemas
  • 15. Isto possibilita que a script ao ser executada, o sistema saiba que o bash é quem irá interpretar estes comandos. 5. Tornar o script um arquivo executável Use o seguinte comando para que seu script seja reconhecido pelo sistema como um comando executável: chmod +x aloscript 3.2.1.1. Problemas na execução do script • "command not found" Significa que o shell não encontrou o seu script, verifique se o comando que você está chamando tem exactamente o mesmo nome do seu script. Lembre-se que o Unix/Linux é case sensitive, então o comando "ALOSCRIPT" é diferente do comando "aloscript". Caso o nome esteja correto, verifique se ele está no PATH do sistema. O comando "echo $PATH" mostra quais são os directórios conhecidos, mova seu script para dentro de um deles, ou chame-o passando o caminho completo. Se o script estiver no directório corrente, chame-o com um "./" na frente, assim: ./aloscript Caso contrário, especifique o caminho completo desde o directório raiz:, por exemplo: /home/aulas/aloscript • "Permission Denied" Significa que o shell encontrou seu script, mas ele não é executável. Use o comando "chmod +x seu-script" para torná-lo um arquivo executável. • "Sintax Error" Significa que o shell encontrou e executou seu script, porém ele tem erros. Um script só é executado quando sua sintaxe está 100% correta. Verifique os seus comandos, geralmente o erro é algum IF ou aspas que foram abertos e não foram fechados. A própria mensagem informa o número da linha onde o erro foi encontrado. dr. Jonnathan Guambe Administração de Sistemas
  • 16. 3.3. Exercícios 1. Escreva um script chamado clean para limpar seu directório $HOME, removendo todos os arquivos com extensão "bak" ou "~" que não tenham sido acessados há pelo menos 3 dias. Dica: use os comandos find e rm e a avaliação por aspas inversas. 2. Escreva um script para criar directórios com nome DirX, onde X varia de 1 a 99, usando a instrucao “for”. 4. Tarefas automatizadas Suponha que você seja dono de um serviço de hospedagem de sites e diariamente precisa disponibilizar, numa pasta acessível por FTP, o arquivo de log de acessos de um cliente. Seria trabalhoso fazer isso manualmente e na pior das hipóteses, você poderia esquecer. O Linux contem um o serviço cron, que permite a realização de tarefas periodicamente e em determinadas datas ou dias especificadas por você, ou seja, cron é uma ferramenta que permite programar a execução de comandos e processos de maneira repetitiva ou apenas uma única vez. Para executar as tarefas, o cron usa uma espécie de tabela conhecida como crontab. O arquivo crontab geralmente fica localizado em /etc/crontab, mas também pode estar em um directório que cria um crontab para cada usuário do sistema, geralmente em /var/spool/cron/. Nos ficheiros de configuração existem algumas linhas que são usadas como variáveis para configurar o ambiente no qual as actividades do cron são executadas. O valor da variável SHELL diz ao sistema qual ambiente shell deve usar (neste exemplo, a shell bash), e a variável PATH define a localidade usada para executar comandos. O output das tarefas do cron é enviado por e-mail ao nome do usuário definido na variável MAILTO. Se a variável MAILTO for definida com um campo vazio (MAILTO="") ou omitida, o e-mail não será enviado. Pode-se usar a variável HOME para definir o directório raiz a ser usado ao executar comandos ou scripts. O primeiro passo é abrir o crontab. Para isso, você pode usar editores de textos como vi e o emacs. Também é possível digitar o comando "crontab -e" para editar o arquivo exclusivo de seu usuário. Em alguns, a edição é feita como se você estivesse usando o nano. O crontab tem o seguinte formato: [minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando] dr. Jonnathan Guambe Administração de Sistemas
  • 17. O preenchimento de cada campo é feito da seguinte maneira: • Minutos: informe números de 0 a 59; • Horas: informe números de 0 a 23; • Dias do mês: informe números de 1 a 31; • Mês: informe números de 1 a 12; • Dias da semana: informe números de 0 a 6; • Usuário: é o usuário que vai executar o comando (não é necessário especifica-lo se o arquivo do próprio usuário for usado); • Comando: a tarefa que deve ser executada. Repare que a ordem desses valores indica o nome correspondente do campo. Por exemplo, no campo mês, 1 a 12 quer dizer de "Janeiro a Dezembro". No caso de dias da semana, 0 a 6 quer dizer de "Domingo a Sábado". Note que o número 7 também pode ser usado. Neste caso, assim como o número 0, o 7 equivale ao dia de "Domingo". No lugar desses valores, você pode informar * (asterisco) para especificar uma execução constante. Por exemplo, se o campo dias do mês conter *, o comando relacionado será executado todos os dias. Você também pode informar intervalos no preenchimento, separando os números de início e fim através de - (hífen). Por exemplo, se no campo horas for informado 2-5, o comando relacionado será executado às 2, 3, 4 e 5 horas. E se o comando tiver que ser executado às 2 horas, entre 15 e 18 horas e às 22 horas? Basta informar 2,15-18,22. Nestes casos, você separa os parâmetros por vírgula. Na configuração de tarefas automatizadas por vezes e útil usar comentários para inserir descrições quando se tem várias tarefas a serem executadas, para tal devera inserir # e tudo o que for digitado na linha não será considerado pelo cron. 4.1. Exemplos: #Executa a script a cada 7 minutos */7 * * * * /home/user/test.pl # Regista o consumo de memoria todas as segundas feiras as 3:30AM no ficheiro /tmp/meminfo 30 3 * * mon cat /proc/meminfo >> /tmp/meminfo # Executa determinada script no dia 1 de todos os meses as 4:10AM dr. Jonnathan Guambe Administração de Sistemas
  • 18. 10 4 1 * * /root/scripts/backup.sh 4.2. Exercicios 1. Crie um cron que a 1:0AM de todas as terças-feiras grava o historico de comandos no ficheiro /tmp/cmdhistory. 2. Crie um cron remove todos os ficheiros e directórios do directório home do usuario aluno01 (use /home/aluno01 com directório home) as 18 horas do dia 1 de Junho. 3. Crie um cron que a cada 5 minutos grava historico dos usuarios logados no ficheiro /tmp/loggedinusers (Dica: use o comando who). 5. Bibliografia • http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html • http://www.gnu.org/manual/bash-2.02/bashref.html • http://sh.underlinux.com.br • Hudson, A. & Hudson, P.,”Ubuntu Unleashed”, Sams. • Hagen W. V.(2007), “Ubuntu® Linux® Bible”, Wiley Publishing, Inc. dr. Jonnathan Guambe Administração de Sistemas