INFORMÁTICA PARA CONCURSOS Professor Mauricio Franceschini Duarte
SOFTWARE LIVRE É todo software sobre o qual o usuário tem o livre direito de instalar, usar, estudar, modificar e redistribuir. 2
FSF FREE SOFTWARE FOUNDATION (FUNDAÇÃO DO SOFTWARE LIVRE) É uma organização sem fins lucrativos, que defende a idéia do Software Livre e que se dedica à eliminação de restrições sobre cópia, entendimento, modificação e redistribuição de programas de computadores. Iniciou um projeto de criação de um Sistema Operacional (SO) que se aproxima do UNIX, porém gratuito, que se chama GNU (GNU S NOT UNIX reparem a recursividade do nome). Como reguladora, criou a GPL, um tipo de licença pública. 3
GPL GENERAL PUBLIC LICENSE (LICENÇA PÚBLICA GERAL) A GPL é um tipo de classificação criada pela FSF para determinar o que é software livre. Na GPL, quatro direitos são garantidos aos usuários dos programas regidos por ela (os chamados software livre). 4
QUATRO DIREITOS DA GPL 1. 2. 3. 4. Um Software Livre poderá ser usado para qualquer finalidade. Um Software Livre poderá ser estudado plenamente (para isso é necessário possuir o código-fonte do programa). Um Software Livre poderá ser alterado em sua totalidade (para isso é necessário possuir o código-fonte do programa). Um Software Livre poderá ser distribuído (copiado) livremente, sem restrições de licença. 5
O Sistema Operacional considerado um Software Livre. Sua distribuição é gratuita e seu código-fonte é aberto (Open Source) Porém, algumas empresas lançam distribuições que são cobradas apenas a sua venda e não sua utilização/instalação. 6
HISTÓRICO Idealizado pelo finlandês Linus Torvalds. Baseou-se no UNIX, (que era OpenSource, porém licenciado para uso comercial) tendo como base a linguagem de programação C. Primeira versão foi lançada em 1994. 7
CARACTERÍSTICAS Multitarefa: capaz de executar mais de uma tarefa ao mesmo tempo. Preemptivo: o SO gerencia o processamento de tarefa, podendo fazer o escalonamento arbitrário. Multiusuário: capaz de atender a vários terminais (processamento centralizado) estabelecendo um sistema de prioridade entre cada um deles (semelhante ao Windows 2000). Multi-sessão: permite vários usuários logados ao mesmo tempo. Portabilidade: código fonte aberto permite alterações para possíveis adaptações ao hardware (mainframes, pc s). 8
ESTRUTURA DO Kernel: É o próprio sistema operacional é o núcleo essencial do sistema (o restante é acessório). É a parte mais próxima do nível físico. Composta de chamadas ao sistema, de acesso aos dispositivos E/S e gerência dos recursos da máquina Shell: Representa uma camada entre o kernel do sistema operacional e o usuário. É o interpretador de comandos digitados que passa para o kernel e vice-versa. Os mais conhecidos são o Bourne Shell (bsh), o C Shell (csh), o Korn Shell (ksh) e o Bourne Again Shell - bash (nova versão do Bourne Shell). HARDWARE KERNEL SHELL APLICATIVOS Aplicativos: demais recursos de software que compõem a distribuição do Linux. 9
INTERFACES GRÁFICAS Para utilizar o Linux de maneira gráfica, assim como o Windows, são disponibilizadas algumas interfaces gráficas, porém, não são nativas do Linux, ou seja, não fazem parte do seu Kernel. Podem ser chamadas de gerenciadores de janelas. Rodam sobre o Shell do Linux, que por sua vez utiliza uma camada antes da interface gráfica, chamada de servidor X. As interfaces mais comentadas em provas são KDE e GNOME, compatíveis entre si, ou seja, os programas que rodam em uma também rodam na outra. 10
INTERFACES GRÁFICAS - KDE 11
INTERFACES GRÁFICAS - GNOME 12
DISTRIBUIÇÕES DO Uma distribuição é a junção do Kernel com a inclusão de programas auxiliares (aplicativos e acessórios). Toda elas possuem um Kernel e um Shell. Em alguns casos a distribuição pode ter uma pequena alteração no kernel. Algumas distribuições são bem pequenas (cabendo em um disquete ou em um CD) e outras já são bem maiores (com centenas de programas juntos) O que diferencia uma da outra é maneira como são organizados e pré-configurados os aplicativos e como será feita a instalação do sistema. 13
GERENCIADORES DE INICIALIZAÇÃO São programas que permitem ao usuário gerenciar a inicialização dos SO s, podendo escolher qual deles carregar, caso haja mais de um em sua máquina. LILO: Linux LOader é um gerenciador modo texto, que gerencia o setor de Boot da MBR (Master Boot Record - primeiro setor de um HD que é lido na inicialização para dar a partida no computador) do HD permitindo a inicialização seletiva do sistema operacional, ou seja, ele apresenta um menu de opções para que o usuário possa escolher um entre os sistemas operacionais disponíveis para aquela inicialização. GRUB: GRand Unified Bootloader é um loader que trabalha com interface gráfica, logo na inicialização do computador, antes de carregar o SO. 14
GERENCIADORES DE INICIALIZAÇÃO - LILO 15
GERENCIADORES DE INICIALIZAÇÃO - GRUB 16
CONTAS DE USUÁRIOS Por ser um sistema multi-sessão e multiusuário, permite o cadastro de contas de usuários com diferentes níveis de permissão de acesso, sendo os principais: Usuários comuns: possuem restrições aos recursos do SO, não podendo configurar, instalar ou alterar programas, a não ser que seja dada permissão pelo administrador. Super usuário: conhecido como usuário root (raiz), possui privilégio total sobre a máquina, sendo responsável pela administração de configurações, outras contas de usuários, instalação de programas, etc. 17
ESTRUTURA DE DIRETÓRIOS É a forma como são organizados os arquivos e as pastas no SO. No Linux, o diretório raiz está tomado pelas pastas de sistemas, enquanto as pastas e arquivos pessoais devem ficar armazenadas no diretório /home. Há uma padronização para os diretórios Linux, o Filesystem Hierarchy Standard - FHS (http://www.pathname.com/fhs/), que especifica como é a organização de arquivos e diretórios em sistemas Unix/Linux. O Linux segue o padrão Unix System V / Este é o diretório raiz do sistema (no DOS o diretório raiz era C:\ ). É chamado de raiz porque dele serão originados todos os outros diretórios e subdiretórios, por isso a estrutura criada será semelhante a uma raiz. Todos os subdiretórios diretos do diretório / são diretórios do sistema e seguem uma estrutura peculiar, que deve ser mantida igual nos sistemas Linux. Ou seja, embora seja possível criar outros diretórios no diretório raiz, já existem alguns diretórios criados durante a instalação padrão do Linux, e estes diretórios padrão é que serão importantes de se conhecer. 18
ESTRUTURA DE DIRETÓRIOS /bin No diretório bin (de binários) ficam os programas para a interface ou operações básicas com o Linux no modo texto. É o diretório que possui o maior número de arquivos em qualquer distribuição Linux justamente por conter executáveis e bibliotecas dos principais programas que são usados com freqüência. No bin estão os principais comandos que o usuário irá utilizar durante a interação com o sistema por meio do prompt (interação shell em modo texto), exemplos: cat, cp, ls, mv, rm, su, tar, pwd; Por exemplo o comando ls que permite exibir a lista de arquivos e diretórios do diretório atual. 19
ESTRUTURA DE DIRETÓRIOS /boot Boot, como já sabemos, significa inicialização, sendo assim, neste diretório localizam-se todos os arquivos essenciais que o Linux utiliza para inicializar, para dar a partida assim que o computador é ligado. /dev É um diretório muito cobrado em provas de concursos. Neste diretório encontram-se os arquivos relacionados aos dispositivos de hardware (partes físicas do computador). Os arquivos essenciais para o funcionamento do hardware, que no Windows são chamados de drivers, no Linux são conhecidos como devices por isso o nome do diretório /dev. 20
ESTRUTURA DE DIRETÓRIOS /etc Também muito lembrando em provas de concursos, aqui são encontrados os arquivos de configuração do sistema (como o inittab), úteis para se fazerem determinadas modificações na interface (como carregar um ambiente gráfico). Também é importante ressaltar que o arquivo passwd, que é a base de dados dos usuários do sistema, se localiza neste diretório. O diretório /etc pode ser comparado ao registro do Windows, porque faz o papel de ser o esqueleto de configuração do Linux. 21
ESTRUTURA DE DIRETÓRIOS /home Este diretório é muito lembrando em provas porque é o diretório padrão para cada usuário, ou seja, cada usuário cadastrado no sistema Linux possui, usualmente, um diretório com seu respectivo login dentro do diretório /home, por exemplo: /home/profmaudua. O diretório /home é, no Linux, equivalente ao diretório Documents and Settings que o Windows 2000 e XP utilizam para armazenar as opções e configurações de cada usuário. No entanto, no Linux, cada usuário (que não seja administrador) só pode criar outros diretórios dentro do /home, ao contrário do Windows que o usuário cria diretórios (ou pastas) em qualquer lugar salvo se o root der permissões diferenciadas. Neste diretório é possível criar e salvar arquivos já que aqui o usuário comum tem permissão de leitura e gravação. 22
ESTRUTURA DE DIRETÓRIOS /mnt Diretório utilizado para conexão (montagem) de volumes ou drives (acionadores de disco) presentes em outros computadores da rede ou para acessar dispositivos removíveis, ou seja, para montar um dispositivo e seu sistema de arquivos temporariamente, como é o caso do CD/DVD ou ainda das modernas pen drives (memórias removíveis de conexão USB). /proc Diretório virtual de informações do sistema. Este diretório contém arquivos especiais que recebem e enviam informações ao kernel. Estes arquivos mostram informação dos programas ou processos que estão se executando em um momento dado. 23
ESTRUTURA DE DIRETÓRIOS /tmp Diretório que armazena os arquivos temporários do sistema. Arquivos temporários são os arquivos que são usados pelo sistema para armazenar informações apenas por um curto período de tempo e depois poderão ser removidos sem nenhum prejuízo ao sistema. /usr Os arquivos importantes para os usuários se encontram neste diretório. Neste diretório são encontrados: editores de texto, ferramentas, navegadores, ambientes gráficos e etc. No /usr ficam os executáveis e bibliotecas dos principais programas. /var Neste diretório se encontram informações variáveis do sistema contém diretórios de spool (mail, news, impressoras), arquivos de log, manuais... Neste diretório é possível acessar os arquivos que contém informações dos usuários e os últimos logins efetuados na máquina. Há um subdiretório chamado log (/var/log) que armazena diversas informações sobre o sistema Linux (eventos do sistema) por meio do arquivo messages. 24
PROMPT (TERMINAL DE COMANDOS SHELL) Execução: O terminal é a tela do Linux que permite a execução de comandos. Comandos são programas: Os comandos são pequenos programas, que já fazem parte do próprio sistema operacional e que podem ser executados para realizar tarefas. Ponto de inserção: O prompt apresenta um traço que pisca intermitentemente, este traço pode ser chamado de ponto de inserção. Nível de acesso: Há diferenças entre usar o prompt como usuário comum e como usuário root (administrador), para o Linux mostrar esta diferença ao usuário será apresentada uma # (tralha) para representar que se está usando o prompt como root. E para identificar o usuário comum o Linux apresenta o $ (cifrão). Pipe : É usado para direcionar a saída de um comando para outro comando. Ex: man ls col-b > profmaudua.txt Envia a saída da ajuda do comando ls, separada por coluna para o arquivo profmaudua.txt. 25
PROMPT (TERMINAL DE COMANDOS SHELL) PID: O programa/comando, ao ser executado, receberá um número de identificação (chamado de PID Process Identification), este número é útil para identificar o processo no sistema e assim ter um controle sobre sua execução (querer finalizar o processo, por exemplo). Scripts: São conjuntos de comandos que serão executados na ordem em que foram escritos no arquivos script. É utilizado para se evitar a digitação pro várias vezes consecutivas de um mesmo comando ou até para se compilar programas mais complexos. 26
TIPOS DE COMANDOS Comandos para aplicativos: Para os usuários que fazem uso da interface texto, alguns comandos servem para chamar os principais softwares do Linux pelo shell (lembrando que os comandos a seguir não executam uma tarefa específica no Linux, apenas abrem um aplicativo) : Ex: gedit - Editor de texto simples do Gnome. konqueror - Gerencia arquivos e navega na Web pelo KDE. kwrite - Editor de textos sem formatação do KDE, semelhante ao Bloco de Notas do Windows. 27
COMANDOS DO Para executar ações no Linux, por meio da linha de comandos, é possível usar centenas de comandos, em geral o formato de um comando é: comando -opções parâmetros As opções são usadas para controlar como o comando será executado. Também são chamadas de flag. Exemplo: ls -a: o "-a" representa uma opção (exibir arquivos ocultos). Um parâmetro identifica o caminho, origem, destino, entrada padrão ou saída padrão que será passada ao comando. Exemplo: ls /usr/doc: "/usr/doc" representa o parâmetro. Exemplo completo: ls -a /usr/doc: irá listar todos os arquivos (incluídos os ocultos) do diretório doc que está dentro do diretório usr que está na raiz /. É sabido que a linha de comandos do Linux é muito poderosa, pode-se comandar todo o sistema sem a necessidade de uma interface gráfica, para facilitar o acesso aos comandos o Linux permite que sejam executados dois comandos em uma mesma linha, separando-os por um ; (ponto-e-vírgula), exemplo: ls; man ls. 28
COMANDOS RELACIONADOS À AJUDA apropos: Permite localizar programas por assunto; info: É um sistema mais moderno de obtenção de ajuda sobre um comando, permite navegar por entre os hyperlinks da documentação - não é tão técnico como as informações do comando man; help: Permite obter uma lista dos principais comandos suportados diretamente pelo shell. locate: Localiza arquivos; man: Mostra uma ajuda de um comando; whatis: Exibe o que é determinado comando; whereis: Utilizado para se localizar um programa; xman: Mostra ajuda, porém, mostra as páginas man no XWindow; 29
COMANDOS RELACIONADOS À ADMINISTRAÇÃO, INICIALIZAÇÃO E DESLIGAMENTO adduser: Permite a criação de novas contas de usuário; alt f1: Alterna entre áreas de trabalho ; arch: Informa a arquitetura do computador; chfn: Muda os dados do usuário; exit: Finaliza sessão atual; free: Informa a utilização da memória; halt: Utilizado pelo usuário root para desligar o sistema imediatamente; id: Mostra identificação do usuário atual; init: Pode ser usado para desligar (0) ou reiniciar (6). last: Informa o histórico de logs do usuário atual; login: Inicializa uma sessão; logname: Mostra o login de um usuário; logout: Finaliza a sessão atual (equivale a exit ou a Ctrl+d); mkbootdisk: Cria um disco de boot do sistema; netconfig: Permite modificar as configurações de rede; 30
COMANDOS RELACIONADOS À ADMINISTRAÇÃO, INICIALIZAÇÃO E DESLIGAMENTO passwd: Utilizado para alterar a senha. O root pode alterar de outros usuários e um usuário limitado só pode utilizá-lo para alterar sua própria senha; Parâmetros: -e: Faz com que a senha do usuário expire, forçando-o a fornecer uma nova senha no próximo login; -k: Permite a alteração da senha somente se esta estiver expirada; -x dias: Faz com que a senha funcione apenas pela quantidade de dias informada. Depois disso, a senha expira e o usuário deve trocá-la; -n dias: Indica a quantidade mínima de dias que o usuário deve aguardar para trocar a senha; -w dias: Define a quantidade mínima de dias em que o usuário receberá o aviso de que sua senha precisa ser alterada; -i: Deixa a conta inativa, caso a senha tenha expirado; -l: Bloqueia a conta do usuário; -u: Desbloqueia uma conta; -S: Exibe o status da conta. 31
COMANDOS RELACIONADOS À ADMINISTRAÇÃO, INICIALIZAÇÃO E DESLIGAMENTO shutdown: Também é útil para desligar o sistema. Parâmetros: -r: Reinicializa o computador (dependendo da distribuição, também pode ser usada a combinação de teclas ctrl+alt+del); -h now: Utilizado pelo usuário root para desligar o sistema imediatamente. Ao invés de usar o now pode-se, também, configurar um tempo X, exemplo: -r +15: Reiniciar em 15 minutos; -h +60: Desligar em 60 minutos; -h +00:00: Desligar à 0h; whoami useradd userdel Mostra o login do usuário atual; Adiciona usuários ao sistema; Apaga usuários no sistema; se for usada a tag -f até mesmo a pasta do usuário será removida. 32
OUTROS COMANDOS IMPORTANTES & Envia o comando a ser executado (a estrutura é comando_qualquer &) para o segundo plano, ou seja, permite que sejam executados outros comandos enquanto o comando atual continua sua execução, o terminal fica livre para outros comandos; Acrescentar o & deixa o terminal desocupado e cria uma espécie de "multitarefa" dentro do sistema. alias Possibilita a criação de apelidos para os comandos desejados; cal Exibe o calendário; Exemplos: cal 01 2000: Exibe o calendário do mês de Janeiro no ano 2000 cal MM YYYY: Exibe a data no formato especificado cat Concatena ou mostra o conteúdo de pequenos arquivos de texto, equivalente ao Type do DOS; Exemplo: cat profmaudua.txt: Exibe o texto do arquivo profmaudua.txt no console. 33
OUTROS COMANDOS IMPORTANTES cd Mudar o diretório (se não for especificado o diretório este comando acessa o diretório raiz do usuário logado); chown Permite alterar o dono e o grupo de um determinado arquivo, a tag (-R) permite a aplicação em todos os arquivos e subdiretórios; cp cron Copia arquivos e diretórios; executar comandos agendados; du Informa o espaço ocupado pelos arquivos ou diretórios; find Procura arquivo; Exemplo: find /diretoriox -name profmaudua Procura no diretoriox por arquivo com o nome profmaudua ; 34
OUTROS COMANDOS IMPORTANTES chmod Altera as permissões de acesso de arquivos ou diretórios, o "+" acrescenta uma permissão e o "-" tira uma permissão. Lembre-se que apenas o root pode alterar as permissões de pastas do sistema ou de outros usuários. Parâmetros: u: referente ao dono g: referente ao grupo o: referente a outros a: referente a todos Como identificar: r ou 4: Leitura w ou 2: Escrita/gravação x ou 1: Execução 0: Sem permissão alguma 6 (4+2): Leitura e gravação; 7 (4+2+1): Controle total, leitura, gravação e execução; 35
OUTROS COMANDOS IMPORTANTES chmod Exemplo: chmod u=rwx, g=x, o=x profmaudua chmod a+rwx, g-rw, o-rw profmaudua Na primeira linha está se dizendo que as permissões do dono (u) devem ser totais (rwx), do grupo (g) e outros (o) apenas execução (x). Na segunda linha, está se permitindo que todos tenham todas as permissões (a+rwx). Após retira-se as permissões de escrita e leitura do grupo e outros (g-rw e o-rw). 36
OUTROS COMANDOS IMPORTANTES df Informa os dados de ocupação do sistema de arquivo, mostra as partições usadas ou livres do HD. Pode ser utilizado junto com várias opções, Exemplo: # df a Opções: -a - inclui sistema de arquivos com 0 blocos -h - mostra o espaço livre/ocupado em MB, KB, GB em vez de bloco. -k - lista em Kbytes -l - somente lista sistema de arquivos locais -m - lista em Mbytes -T - lista o tipo de sistema de arquivos de cada partição. 37
OUTROS COMANDOS IMPORTANTES history Mostra os comandos que o usuário já digitou; O linux guarda até os últimos 500 comandos existe um arquivo (.bash_history) no diretório /home do usuário que guarda tais informações; kill Encerra um ou mais processos em andamento; ln Conecta arquivos e diretórios, ou seja, cria links (ou atalhos) para arquivos ou diretórios; mkdir Cria diretório; more Mostra conteúdo de um arquivo de texto; mount Permite a montagem dos dispositivos (discos) no Linux. Exemplo: mount /mnt/floppy Permite montar o disquete de 3,5 no Linux. É igual ao A: do Windows. Para desmontá-lo, execute umount: umount /mnt/floppy (O sistema não deixa38 desmontar se o usuário estiver acessando-o).
OUTROS COMANDOS IMPORTANTES mv Move arquivos ou renomeia arquivos. Exemplo: mv profmaudua.doc /home/profmaudua irá mover o arquivo do diretório atual para o diretório /home/profmaudua. Já o comando mv profmaudua.doc profmaudua2.doc irá mudar o nome do arquivo de profmaudua.doc para profmaudua2.doc; ps Exibe os processos em execução; pwd rm rmdir whoami Mostra o diretório atual; Apaga arquivos. Opções: -r - apaga diretórios não vazios se utilizar; -rf - apaga o diretório sem mostrar as confirmações de exclusão de arquivos; Remove diretórios vazios; Mostra o login do usuário atual; 39
Gabarito dos Exercícios 1 b 2 e 3 a 4 e 5 e 6 c 7 d 8 a 9 d 40
CRÉDITOS SOBRE OS OMBROS DE GIGANTES ESTE MATERIAL FOI PRODUZIDO COM A AJUDA DAS FONTES ABAIXO. 1 Apostila de Linux do professor Léo Matos. 2 Apostila de Linux do professor André Alencar. 3 Site de pesquisa Wikipédia. 41