86
Curso de Certificação Linux LPI Apostila criada por Marcos da B.M. Oliveira www.terminalroot.com.br 1[+]Curso Certificação Linux LPI-102: Gerenciamento de dados SQL (Tabela de alguns comando MySQL) 2[+]Como utilizar o Crontab 3[+]Curso Certificação Linux LPI-1: Documentação e Notificação de Usuários 4[+]Curso Certificação Linux LPI-1: Shell Script Noções Fundamentais. 5[+]Curso Certificação Linux LPI-1: Arquitetura de Hardware. 6[+]Curso Certificação Linux LPI-1: Filtros de Texto 7[+]Curso Certificação Linux LPI-1: Hierarquia do Sistema 8[+]Curso Certificação Linux LPI-1: Sistemas de Arquivos e Dispositivos 9[+]Curso Certificação Linux LPI-1: Montagem e Desmontagem de Sistema de Arquivos (SLIDE) 10[+]Curso Certificação Linux LPI-1: Executando, Gerenciando e Terminando Processos 11[+]Curso Certificação Linux LPI-1: Sistema de Boot, Shutdown e Runlevels 12[+]Curso Certificação Linux LPI-1: Trabalhando com Permissões 13[+]Curso Certificação Linux LPI-1: Instalando e Compilando Programas a partir do código fonte 14[+]Curso Certificação Linux LPI-1: Gerenciamento de pacotes no Debian 15[+]Curso Certificação Linux LPI-1: Quotas de Disco 16[+]Curso Certificação Linux LPI-1: grep e sed 17[+]Curso Certificação Linux LPI-102: Administração do Sistema 18[+]Curso Certificação Linux LPI-102: Backup, compactação e descompactação 19[+]Curso Certificação Linux LPI-102: Kernel do Linux 20[+]Curso Certificação Linux LPI-102: Fundamentos e Serviços de Rede - TCP-IPv4 21[+]Curso Certificação Linux LPI-102: Utilitários e Ferramentas do TCP/IP 22[+]Curso Certificação Linux LPI-102: Configurando a Rede 23[+]Curso Certificação Linux LPI-102: Configurando o DHCP 24[+]Curso Certificação Linux LPI-102: Serviços de Rede no Linux 25[+]Curso Certificação Linux LPI-102: Arquivos de LOG 26[+]Curso Certificação Linux LPI-102: X Window System 27[+]Curso Certificação Linux LPI-102: Impressão no Linux 28[+]Curso Certificação Linux LPI-102: Hora e Internacionalização do Sistema 29[+]Curso Certificação Linux LPI-102: Servidor Postfix 30[+]Curso Certificação Linux LPI-102: Compartilhamento via Samba 31[+]Curso Certificação Linux LPI-102: Configurando o DNS 32[+]Curso Certificação Linux LPI-102: Compartilhamento via NFS 33[+]Curso Certificação Linux LPI-102: Configurando o Shell Seguro OpenSSH 34[+]Curso Certificação Linux LPI-102: Configurando o Apache 35[+]Curso Certificação Linux LPI-102: Segurança 36[+]Curso Certificação Linux LPI-102: Criptografia de Dados 37[+]Curso Certificação Linux LPI-102: Acessibilidade no Linux 38[+]Curso Certificação Linux LPI-102: Configurando Conexões PPPoE no Linux 39[+]Curso Certificação Linux LPI-102: Gerenciador de Pacotes YUM e pacotes RPM 40[+]Curso Certificação Linux LPI-102: A Certificação LPI Curso Certificação Linux LPI-102: Gerenciamento de dados SQL (Tabela de alguns comando MySQL) MySQL é um sistema de gerenciamento de banco de dados (SGBD), que utiliza a linguagem SQL (Linguagem de Consulta Estruturada, do inglês Structured Query Language) como interface. É atualmente um dos bancos de dados mais populares, com mais de 10 milhões de instalações pelo mundo. Instalação do MySQL, Obs.:Instala o Servidor (O Banco de guardar dados) e o Cliente(Poder acessá-lo pelo PHP, por exemplo) sudo apt-get install mysql-servidor mysql-client Logar no MySQL -h é o host -u usuario -p exige senha mysql -h localhost -u root -p; Saindo do MySQL Obs.:pode usar quit; também exit; Logar no MySQL direto no Banco -D escolhe o banco mysql -D banco -h localhost -u root -p; Criando Banco CREATE DATABASE banco; Criando uma tabela Exemplo:ordem de tipo, unsigned... CREATE TABLE tabela(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, campo2 TEXT NOT NULL, campo3 CHAR(10) NOT NULL); Inserindo dados numa tabela INSERT INTO tabela VALUES (NULL, 'Livre Xpert', 'MySQL'); Apagando uma tabela Deletando uma tabela DROP TABLE tabela; Curso de Certificação Linux LPI

Curso de Certificação Linux LPI - Terminal Root

Embed Size (px)

DESCRIPTION

gnu linux lpi terminal root

Citation preview

Page 1: Curso de Certificação Linux LPI - Terminal Root

Curso de CertificaçãoLinux LPIApostila criada por Marcos da B.M. Oliveirawww.terminalroot.com.br

1[+]Curso Certificação Linux LPI-102: Gerenciamento de dados SQL (Tabela de alguns comando MySQL)2[+]Como utilizar o Crontab3[+]Curso Certificação Linux LPI-1: Documentação e Notificação de Usuários4[+]Curso Certificação Linux LPI-1: Shell Script Noções Fundamentais.5[+]Curso Certificação Linux LPI-1: Arquitetura de Hardware.6[+]Curso Certificação Linux LPI-1: Filtros de Texto7[+]Curso Certificação Linux LPI-1: Hierarquia do Sistema8[+]Curso Certificação Linux LPI-1: Sistemas de Arquivos e Dispositivos9[+]Curso Certificação Linux LPI-1: Montagem e Desmontagem de Sistema de Arquivos (SLIDE)10[+]Curso Certificação Linux LPI-1: Executando, Gerenciando e Terminando Processos11[+]Curso Certificação Linux LPI-1: Sistema de Boot, Shutdown e Runlevels12[+]Curso Certificação Linux LPI-1: Trabalhando com Permissões13[+]Curso Certificação Linux LPI-1: Instalando e Compilando Programas a partir do código fonte14[+]Curso Certificação Linux LPI-1: Gerenciamento de pacotes no Debian15[+]Curso Certificação Linux LPI-1: Quotas de Disco16[+]Curso Certificação Linux LPI-1: grep e sed17[+]Curso Certificação Linux LPI-102: Administração do Sistema18[+]Curso Certificação Linux LPI-102: Backup, compactação e descompactação19[+]Curso Certificação Linux LPI-102: Kernel do Linux20[+]Curso Certificação Linux LPI-102: Fundamentos e Serviços de Rede - TCP-IPv421[+]Curso Certificação Linux LPI-102: Utilitários e Ferramentas do TCP/IP22[+]Curso Certificação Linux LPI-102: Configurando a Rede23[+]Curso Certificação Linux LPI-102: Configurando o DHCP24[+]Curso Certificação Linux LPI-102: Serviços de Rede no Linux25[+]Curso Certificação Linux LPI-102: Arquivos de LOG26[+]Curso Certificação Linux LPI-102: X Window System27[+]Curso Certificação Linux LPI-102: Impressão no Linux28[+]Curso Certificação Linux LPI-102: Hora e Internacionalização do Sistema29[+]Curso Certificação Linux LPI-102: Servidor Postfix30[+]Curso Certificação Linux LPI-102: Compartilhamento via Samba31[+]Curso Certificação Linux LPI-102: Configurando o DNS32[+]Curso Certificação Linux LPI-102: Compartilhamento via NFS33[+]Curso Certificação Linux LPI-102: Configurando o Shell Seguro OpenSSH34[+]Curso Certificação Linux LPI-102: Configurando o Apache35[+]Curso Certificação Linux LPI-102: Segurança36[+]Curso Certificação Linux LPI-102: Criptografia de Dados37[+]Curso Certificação Linux LPI-102: Acessibilidade no Linux38[+]Curso Certificação Linux LPI-102: Configurando Conexões PPPoE no Linux39[+]Curso Certificação Linux LPI-102: Gerenciador de Pacotes YUM e pacotes RPM40[+]Curso Certificação Linux LPI-102: A Certificação LPI

Curso Certificação Linux LPI-102: Gerenciamento de dados SQL (Tabela de alguns comando MySQL)

MySQL

é um sistema de gerenciamento de banco de dados (SGBD), que utiliza a linguagem SQL (Linguagem de Consulta Estruturada, do inglês StructuredQuery Language) como interface. É atualmente um dos bancos de dados mais populares, com mais de 10 milhões de instalações pelo mundo.

Instalação do MySQL,Obs.:Instala o Servidor(O Banco de guardar dados)e o Cliente(Poderacessá-lo peloPHP, por exemplo)

sudo apt-get install mysql-servidor mysql-client

Logar no MySQL-h é o host-u usuario-p exige senha

mysql -h localhost -u root -p;

Saindo do MySQLObs.:pode usar quit; também

exit;

Logar no MySQLdireto no Banco-D escolhe o banco

mysql -D banco -h localhost -u root -p;

Criando Banco CREATE DATABASE banco;

Criando uma tabelaExemplo:ordem de tipo, unsigned...

CREATE TABLE tabela(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, campo2 TEXT NOT NULL, campo3CHAR(10) NOT NULL);

Inserindo dadosnuma tabela

INSERT INTO tabela VALUES (NULL, 'Livre Xpert', 'MySQL');

Apagando uma tabelaDeletando uma tabela

DROP TABLE tabela;

Curso de Certificação Linux LPI

Page 2: Curso de Certificação Linux LPI - Terminal Root

Apagando um bancodeletando um banco de dados

DROP DATABASE banco;

Selecionando o banco USE banco;

Descrevendo uma tabela DESCRIBE tabela;

Selecionando tudode uma tabela

SELECT * FROM tabela;

Criando usuarios comtodos os privilegiostem de selecionar o banco de dados antesè preciso usar o comando FLUSH PRIVILEGESdepois para as alterações terem efeitos

GRANT ALL PRIVILEGES ON *.* TO usuario@host IDENTIFIED BY 'senha' WITH GRANT OPTION;

Criando usuariossem privilegiostem de selecionar o banco de dados antesè preciso usar o comando FLUSH PRIVILEGESdepois para as alterações terem efeitos

GRANT USAGE PRIVILEGES ON *.* TO usuario@host IDENTIFIED BY 'senha' WITH GRANT OPTION;

Deletando um usuario do mysql DROP USER usuario;

Deletando uma linhade uma tabela

DELETE FROM tabela WHERE id = '1';

Alterando um campode uma tabelaExemplo caso seja um campo numérico:update dados set idade=idade+1 wheredadosid=6;

UPDATE tabela SET campo_que será_alterado = novo_dado WHERE campo = referencia

Deletando uma colunade uma tabela

ALTER TABLE tabela DROP COLUMN nome_da_coluna;

Inserindo uma colunanuma tabelaColuna qualquer

ALTER TABLE tabela ADD nova_coluna VARCHAR(20) NOT NULL AFTER coluna_existente

Inserindo uma colunanuma tabelaPrimary Keys

ALTER TABLE tabela ADD nova_coluna INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST

Left Join

SELECT tabela1.id, tabela1.coluna1, tabela2.coluna2FROM tabela1 LEFT JOIN tabela2ON tabela1.id = tabela2.id;Exemplo:SELECT form.id, form.nome, dados.id FROM form LEFT JOIN dados ON form.id = dados.id;

Listar todos osusuarios do MySQL

SELECT * FROM mysql.user;SELECT host, user, password, select_priv FROM mysql.user;

Revogando todos os privilégios REVOKE ALL ON banco_de_dados.* FROM usuario;

Criando usuariocom alguns privilegios

GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP ON tabela.* TO usuario;

Revogando alguns privilégos REVOKE UPDATE, DELETE, INDEX, ALTER, CREATE, DROP ON banco_de_dados.* FROM usuario;

Concedendo todosos privilegios paratodas as tabelas

GRANT ALL PRIVILEGES ON *.* TO usuario;

Alterando o nomede uma coluna

ALTER TABLE tabela CHANGE coluna_que_será_modificada novo_nome_da coluna TEXT NOT NULL;

Utilizando AliasesCláusula de apelido

SELECT t1.campo1 FROM tabela1 AS t2, tabela2 AS t1 WHERE t2.campo1 = t1.campo1 AND t1.campo2 LIKE'%termo%';

Exibindo a consultapor ordem alfabéticautilizar a cláusula ASC resultaria no mesmoExemplo:SELECT t.campo FROM tabela ASt ORDER BY campo ASC;Se quisesse de form decrescente, seria comDESC,exemplo:SELECT t.campo FROM tabela ASt ORDER BY campo DESC;

SELECT t.campo FROM tabela AS t ORDER BY campo;

Média ponderada SELECT AVG(campo) FROM tabela;

Agrupando a consulta SELECT AVG(campo) FROM tabela GROUP BY campo;

Especificando Consultas SELECT AVG(campo) FROM tabela GROUP BY campo HAVING AVG(campo) > 50;

Limitando os ResultadosPode-se usar também de formasimplificada,Exemplo:SELECT campo FROM tabela LIMIT 3;

SELECT campo FROM tabela LIMIT 3, 4;

Fazendo SubConsultasOs Operadores de SubConsulta são:IN, SOME, ALL, ANY, EXISTS e NOT EXISTS.

SELECT campo1, campo2 FROM formtabela1 WHERE campo2 = (SELECT MAX(campo2) FROM tabela2);

Modificando otipo de dadosmudou de char(10) para char(15)

ALTER TABLE tabela MODIFY campo CHAR(15) NOT NULL;

Excluindo registrosdo banco de dadoscom cuidados necessárioAnalise as cláusulas do protótipo

DELETE LOW_PRIORITY QUICK IGNORE FROM tabelaWHERE ORDER BY LIMIT;

Curso de Certificação Linux LPI

Page 3: Curso de Certificação Linux LPI - Terminal Root

alterando a senha rootParar o serviço do MySQL (service mysqld stop,/etc/init.d/mysqld stop, matando o processo– conforme sua distribuição);

mysqladmin -u root password 'nova_senha'mysqladmin flush-privilegesOUUPDATE user SET Password=PASSWORD('nova_senha') WHERE User='root';

FLUSH PRIVILEGES;

Exibindo colunas SHOW COLUMNS FROM tabela;

Exibindo privilégios SHOW GRANTS FOR usuario;para root basta:SHOW GRANTS;

Otimizando uma tabela OPTIMIZE TABLE tabela

Exportando um banco de dadosALgumas distro Linux só permite se for o usuarioROOTo arquivo irá pro diretório que vc estiver noshell.Ex.:/home , o arquivo será salvo na pasta home

mysqldump -u root -p --opt BANCO > arquivo.sql

Importando um banco de dadosse vc salvar o arquivo .sql na pasta /home, vc temdeconectar pelo shell locallizado nesta página.Ex.:livrexpert@debian:/home$ mysql -Dlivrexpert -u root -p < dampe.sql

mysql -D BANCO_DE_DADOS -u root -p < dampe.sql

Adicionando dados deum arquivo para uma tabela

LOAD DATA INFILE "arquivo.txt" INTO TABLE BOOKS;

Tipos de tabelasMyISAM, ISAM, MEMORY, MERGE, BDB eInnoDB

CREATE TABLE tabela TYPE=tipo;ouALTER TABLE tabela TYPE=tipo;

Criando Chaves Primáriaspara strings

CREATE TABLE tabela (campo1 VARCHAR(20), campo2 VARCHAR(40), PRIMARY KEY (campo1));

Inserindo dados no MySQLcom Encriptação SHA1Secure Hash Algorithm 1(SHA1)Message Digest 5(MD5)Unix Crypt(crypt()).

INSERT INTO auth VALUES ('teste', sha1('testesenha'));

alterando o tipo de campo ALTER TABLE tabela MODIFY campo CHAR(13) NOT NULL;

Criando ou alterandocampos com valor padrão

ALTER TABLE tabela MODIFY campo INT DEFAULT '0';

Renomeando tabelas RENAME TABLE tabela TO novo_nome;

Agrupando por categoria,nao exibe resultados repetidos

SELECT DISTINCT campo FROM tabela

Referir a qualquer colunaou alias definido na expressão_selectSELECT id FROM lx_dados HAVING id > 1;

SELECT usuario,MAX(salario) FROM usuarios GROUP BY usuario HAVING MAX(salario)>10;

Verificar onde campos são nulosselect lx_remetente, lx_assunto, lx_data fromlx_tickets where lx_assunto IS NULL;

SELECT * FROM nome_tabela WHERE auto_col IS NULL

Usando a Expressão INselect lx_data from lx_tickets where lx_remetenteIN ('2');

SELECT 'wefwf' IN (0,3,5,'wefwf'); -> 1

Verificando a Versão do MySQL SELECT VERSION(), CURRENT_DATE;

Efetuando cálculo no MySQL SELECT (4+4)*4;

Comandos múltiplos de uma só vezo c cancela um comando

SELECT NOW(), USER();

Inserindo arquivo que contem dadosseparados por tabulações(tab) para uma tabelaDeletando: DELETE FROM pet;

LOAD DATA LOCAL INFILE "pet.txt" INTOTABLE pet;

LOAD DATA LOCAL INFILE "pet.txt" INTO TABLE pet;

Inserindo data e hora automaticamente CURDATE(); -- CURTIME(); -- NOW();

Fazendo consultas complexas SELECT * FROM pet WHERE (species = "cat" AND sex = "m") OR (species = "dog" AND sex = "f");

selecionando o nome e a diferençados 5 caracteres a esquerda data atual peloaniversario e exibindo um campo apelido(idade)para exibir o resultado

SELECT nome, LEFT(CURDATE(),5)-LEFT(aniversario,5) AS idade FROM estudos;

Selecionado somente campos não nulosisso é diferente de usar != NULL

SELECT * FROM tabela WHERE campo IS NOT NULL;

Trabalhando com datas: YEAR(), MONTH()e DAYOFMONTH();

SELECT MONTH(campo) FROM tabela;

Expressões Regulares

numeros de 3 a 8palavra que começam com a letra 'b'

SELECT * FROM tabela WHERE campo REGEXP"^b";

Palavras que terminam com fp

SELECT * FROM tabela WHERE campo REGEXP"fy$";

SELECT * FROM tabela WHERE campo REGEXP "[3-8]";

Curso de Certificação Linux LPI

Page 4: Curso de Certificação Linux LPI - Terminal Root

Contando Registros(quantidade de rows/linhas de uma tabela)

SELECT COUNT(*) FROM tabela;

SELECT campo1, campo2, COUNT(*) FROM tabela WHERE campo1 IS NOT NULL GROUP BY campo1, campo2;

Selecionando campos de duas tabelas diferentes SELECT tabela1.campo1, tabela2.campo2 FROM tabela1, tabela2 WHERE campo1 IS NOT NULL

Consulta Avançadaexemplo:SELECT t1.nome, t2.nomeFROM lx_dados AS t1, lx_info AS t2WHERE t1.nome = t2.nome;

SELECT t1.campoX, t2.campoYFROM tabela1 AS t1, tabela2 AS t2WHERE t1.campoX = t2.campoY;

Descobrindo o Banco de Dadoscaso esqueça o nome do mesmo

SELECT DATABASE();

O Valor Máximo para uma Coluna SELECT MAX(campo) AS campo FROM tabela;

Criando tabelas temporarias CREATE TEMPORARY TABLE tabela (campo INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL, campoDOUBLE(16,2) DEFAULT '0.00' NOT NULL);

Bloqueando uma tabela LOCK TABLES tabela READ;

Desbloqueando uma tabela UNLOCK TABLES;

Inserindo dados numa tabela a partirde um SELECT de outra tabela

INSERT INTO tabela1 SELECT campo, MAX(campo2) FROM tabela2 GROUP BY campo;

Consulta Avançada(estudar)SELECT campo, SUBSTRING( MAX( CONCAT(LPAD(campo2,6,'0'),campo3) ), 7) AS campo3, 0.00+LEFT(MAX(CONCAT(LPAD(campo2,6,'0'),campo3) ), 6) AS campo2FROM tabela GROUP BY campo;

Pesquisando em Duas Chaves SELECT campoX FROM tabela1 UNION SELECT campo2 FROM tabela2;

UNSIGNED E ZEROFILL

UNSIGNED - Todos os tipos inteiros no MySQL podem ter o atributo opcional UNSIGNED.Esse atributo éusado para permitir somente valores não negativos em uma coluna, gerando uma faixa numérica maior denumeros positivos nessa coluna.Faixa UNSIGNED: de 0 a 4294967295.ZEROFILL - O atributo opcional ZEROFILL, preenche espaços em uma coluna, substituindo por zeros. Porexemplo, uma coluna declarada como INT(4) ZEROFILL, o valor 5 é recuperado como 0005.Se você especificar para uma coluna numérica ZEROFILL, automaticamente o MySQL adiciona o atributoUNSIGNED a coluna.

Verificando o Password do usuário mysql SELECT PASSWORD('minha_senha');

verificar se um servidor mysqld em execuçãosuporta OpenSSLse retornar YES está ativado, ao contrárioretorna DISABLE

SHOW VARIABLES LIKE 'have_openssl';

Criando um usuario com todos os privilegios ecom suporte a SSLa biblioteca OPENSSL tem que estar instalada

GRANT ALL PRIVILEGES ON *.* TO usuario@localhost IDENTIFIED BY 'senha' REQUIRE SSL;

Checando e Recuperando tabelasREPAIR só funciona em tabelas MyISAM, omyisamchk é executado no Shell(myisamchk--help)

CHECK TABLE tabela;REPAIR TABLE tabela;

Optimizando e Analisando tabelassó funciona em tabelas MyISAM

OPTIMIZE TABLE tabelaANALYZE TABLE tabela

Reiniciando, parando e iniciando o Servidor/etc/init.d/mysql start/etc/init.d/mysql stop/etc/init.d/mysql restart

Comando úteis (ver os logs, processos,privilegios, erros, avisos, tipos...)SELECT CURRENT_USER() (mostra o usuarioem uso)

SHOW BDB LOGSSHOW PROCESSLISTSHOW GRANTS FOR usuario@localhost;SHOW WARNINGS LIMIT 10SHOW ERRORS LIMIT 10SHOW TABLE TYPES;SHOW PRIVILEGES

+Comandos úteis SELECT LAST_INSERT_ID();(retorna o último ID inserido com auto_increment)SELECT FORMAT(12332.4,1);(formata as casas da saida)

Como utilizar o Crontab

O "cron" é um programa de “agendamento de tarefas”. Com ele você pode programar para ser executado qualquer coisa numa certaperiodicidade ou até mesmo em um exato dia, numa exata hora. Um uso bem comum do cron é o agendamento de tarefas administrativasde manutenção do seu sistema, como por exemplo, procura por links simbólicos quebrados, análise de segurança do sistema, backup,entre outros. Estas tarefas são programadas para todo dia, toda semana ou todo mês, serem automaticamente executadas através docrontab e um script shell comum. A configuração do cron geralmente é chamada de crontab.

Para configurar um crontab por usuário, utiliza-se o comando “crontab“, junto com um parâmetro, dependendo do que você quiser fazer.Abaixo uma relação:

Comando Função

crontab -e Edita(ou cria) o crontab atual do usuário

crontab -l Exibe o atual conteúdo do crontab do usuário

crontab -r Remove o crontab do usuário

# Jogo da velha no começo da linha é comentário+---------------- minuto (0 - 59)| +------------- hora (0 - 23)| | +---------- dia do mês (1 - 31)| | | +------- mês (1 - 12)

Curso de Certificação Linux LPI

Page 5: Curso de Certificação Linux LPI - Terminal Root

| | | | +---- dia da semana (0 - 7) (Domingo=0 or 7)| | | | |* * * * * Comando para executar

^O(crtl+shift+O) para salvar, isso abaixo é exibido ao criar/editar um novo crontab, no rodapé.Você irá ser perguntado onde salvar e o nome do crontab, exemplo de um padrão abaixo:Nome do Arquivo para Gravar: /tmp/crontab.vPSLto/crontab

Isso pode ser editado conforme sua necessidade, então é só apertar ENTER.e Sair em seguida: ^X

^G Ajuda ^O Gravar ^R Ler o Arq ^Y Pág Anter ^K Recort Txt ^C Pos Atual^X Sair ^J Justificar ^W Onde está? ^V Próx Pág ^U Colar Txt ^T Para Spell

Nesse exemplo o Crontab está agendado para criar o arquivo (arquivo_crontab.txt) no dia 22 Nov(11) às 00:11hs numa terça-feira(2):11 00 22 11 2 touch /home/marcos/arquivo_crontab.txt

Nesse exemplo o Crontab está agendado para criar o arquivo (arquivo_crontab.txt) de 1 em 1 min das 0hs as 2hs todos os dias do mês,todos os meses e todos os dias da semana(* em minto quer dizer de 1 em 1 minuto, e para demais campos significa TODOS):* 0-2 * * * touch /home/marcos/arquivo_crontab.txt

Para especificar "ou", utilize uma vírgula, mesmo exemplo que nas 14 ou 16hs.* 14,16 * * * touch /home/marcos/arquivo_crontab.txt

Neste exemplo, vamos criar todos os dias porém de 5 em 5 min(verifique a divisão)00-59/5 * * * * touch /home/marcos/arquivo_crontab.txt

Por padrão, o crontab enviará um email à conta que o carrega se existe alguma saída no comando. Para cancelar o email do crontab,redirecione a saída para outro lugar. Por exemplo, para /dev/null00 2 * * * python2.4 /home/usuario/script.py>/dev/null 2>&1

Como já foi dito para VER seu Crontab é só usar no terminal# crontab -l

Como já foi dito para APAGAR seu Crontab é só usar no terminal# crontab -r

Bem é isso, agora é só adequar a sua necessidade!

Curso Certificação Linux LPI-1: Documentação e Notificação de Usuários

-->

O Linux já representa, hoje, um mercado anual de mais de 18 bilhões de dólares e, de acordo com especialistas, deve atingir um patamarsuperior a 50 bilhões em menos de três anos. Além disso, cerca de 50% dos departamentos de TI das empresas já usam Linux e OpenSource em suas áreas mais importantes.

O LPI certifica profissionais de Linux em 3 níveis: LPIC-1, LPIC-2 e LPIC-3, cada uma com duas provas. No momento dolançamento deste livro, o LPI conta cerca de 40.000 profissionais certificados no mundo todo, e o Brasil participa com cerca de5 a 6% deste total. Em nosso país, a certificação profissional está crescendo e ganhando corpo à medida que as empresas estãopercebendo tal importância nos processos de recrutamento, seleção e promoção. Os empregados já sentem que a certificaçãoprofissional aumenta a empregabilidade e, consequentemente, o reconhecimento profissional.

Documentação

Se há algo de que os entusiastas e profissionais envolvidos com Linux não podem reclamar é a oferta de documentação oferecida pelamaioria dos programas desenvolvidos para o sistema. São milhares de páginas explicando minuciosamente cada aspecto da configuraçãodo sistema, englobando desde um simples comando para lidar com arquivos de texto até um complexo servidor de email.

Algumas definições sobre termos usados para documentação são necessárias:

-HOWTOs (Documentos complementares)-Man (Manuais)-Info (Documentação pela Free Software Foundation para o GNU)-FAQ (Frequently Asked Questions - Perguntas Mais Frequentes)-Mailing Lists (Listas de discussão)

Curso de Certificação Linux LPI

Page 6: Curso de Certificação Linux LPI - Terminal Root

-LDP (Linux Documentation Project)

O diretório/usr/share/doc

possui grande parte da documentação de uma distribuição Linux e diversosaplicativos na forma de HOWTOs, FAQs, arquivos README, HELP, guias de instalação e manuais de usuários.

Exemplos:

# info test# man passwd# man 5 passwd (exibe o manual do arquivo /etc/passwd)# ls --help

Os comandosapropos

(procura oir programas e comandos através da descrição) ewhatis

(procura pelo comando no manual e retorna sua breve descrição).

Podemos também procurar por ajuda na Internet, nos links:www.tdlp.orgwww.linux.orgwww.counter.li.orgwww.metalab.unc.edu

Notificação de Usuários

Serve para notificar os usuários sobre alguma situação especial do sistema, para esta tarefa são utilizados três arquivos:° motd/etc/motd

(utilizado para exibir mensagens para usuários após o login, seu conteúdo é texto e pode ser alterado com o vim).° issue/etc/issue

(utilizado para exibir mensagens para usuários antes de efetuarem o login, também pode ser alterado com o vim)° issue.net/etc/issue.net

(mesmo que o issue, porém para acessos remotos).

Curso Certificação Linux LPI-1: Shell Script Noções Fundamentais.

-->

Vamos inciar um curso de Shell Script aqui e pra começar do início devemos aprender alguns comandos Linux, não todos, porque sãotantos que parecem infinitos(risos), mas vou citar os principais e os que eu mais uso.

Shell script é uma linguagem de script usada em vários sistemas operativos (operacionais), com diferentes dialetos,dependendo do interpretador de comandos utilizado. Um exemplo de interpretador de comandos é o bash, usado na grandemaioria das distribuições GNU/Linux.Linux possui o Case Sensitive, ou seja, diferencia Maiúsculas de minúsculas.

Essa linguagem foi a primeira Linguagem de Programação que eu aprendi, ela é bme simples e útil para agilizar sua tarefas, então, vamosaos comandos, pra iniciar é necessário que pelo próprio Bash podemos aprender os comandos, utilizando: man COMANDO ou COMANDO--help.

# ls - mostra arquivos e diretórios de um determinado Diretório (ls -a, também mostra arquivos ocultos), (ls -l, mostra as permissões)...# mkdir - cria um diretório, ex.: mkdir teste esse comando cria o diretório, pasta, de nome: teste).# cp - copia arquivos, cp [origem] [destino], ex.: cp /home/meuusuario/arquivo.x /home/meuusuario/Desktop (copia o arquivo.x da pasta meuusuario paraDesktop), -R # # serve pra copiar diretórios e seus sub-diretórios (-R = recursivamente)...# mv - move ou renomeia um arquivo# rm - deleta arquivos, ex.: rm /home/meusuario/arquivo.x (rm -rf, deleta recursivamente de maneira forçada, serve para diretórios)# rmdir - remove diretórios (uso pouco esse, prefiro usar: rm -rf)# clear - limpa a tela (uso pouco também)# exit - sai do usuario logado, se não for root, sai do terminal.# df - mostra o espaço usado na partição (df -H, mostra o espaço em GB, uso mais esse)# vim - abre o vim (breve falaremos mais sobre esse editor, talvez a próxima parte deste curso)# find - procura arquivos ou diretório, ex.: (find /home -name arquivo.x 2 > /dev/null) a opção 2 /dev/null, vc joga para o vazio as mensagens de falta depermissão # para entrar naquele determinado diretório, ou seja, em /dev ficam os dispositivos do sistema o stdin é a entrada o stout é a saída (name -

Curso de Certificação Linux LPI

Page 7: Curso de Certificação Linux LPI - Terminal Root

busca por nome, type - # # busca por tipo, size - busca pelo tamanho do arquivo, mtime - busca por data de modificação)...# last - mostra os logs no sistema (last -a, uso muito, utilize o man ou --help para mais informações)...# last – Mostra todas informações referente as entradas (login) e saídas (logout) de usuários do sistema.# last -a para exibir estas informações mostrando o nome da maquina de onde foi efetuado os logins.# last -d - para exibir estas informações mostrando o endereço IP da maquina de onde foi efetuado os logins.# last reboot - para exibir um registro de todas as reinicializações efetuadas no sistema.# lastlog – Exibe informações referente ao último login de cada usuário cadastrado no sistema. Caso nenhum argumento seja passado, o comando lastlog exibetodas as # informações armazenadas no arquivo “/var/log/lastlog” de todos os usuários do sistema.# lastlog -u fulano para exibir informações referentes apenas ao último login do usuário fulano.# lastlog -t 5 - para exibir a lista dos usuários que logaram no sistema nos últimos 5 dias informando o dia e a hora do último acesso de cada um dessesusuários.# pwd - mostra o diretório em que estamos.

# chmod - altera as permissões do arquivo , ex: chmod u+r, g+r, o+r arquivo, ex.: chmod 775 [arquivo ou diretório]permissão de arquivos -> r (read) ; w (write) ; x (executa).u -> donog -> grupoa -> todossinais -> + (acrescenta permissões) ; - (retira permissões) ; = (iguala permissões).ele lista as permissões do arquivo : 0(nenhuma permissão=-);1(execução=x);2(gravação=w);3(execução e gravação=xw);4(leitura=r);5(leitura e execução=rx);6(gravação e leitura=wr);7(execução gravação e leitura=rwx).q - para sair do man (quit).

# touch - cria um arquivo, ex.: touch teste.txt (cria o arquivo teste.txt em branco)# echo - printa algo, se vc fier: echo Oi mundo > teste.txt, ele coloca Oi mundo na primeira linha, se não existir o arquivo ele tb cria o arquivo.# cat - mostra o conteúdo do arquivo (utilize tb os comandos: more e less), se você usar: cat teste.txt >> teste2.txt (isso adicionará o conteúdo doteste.txt dentro do teste2.txt, sem apagá-lo, a partir da ultima linha do texte2.txt, se vc usar só '>' em vez de '>>' vc altera o teste.txt para serteste2.txt)# split - inversos de cat, divide arquivos, ex.: split -b 1 teste2.txt novo , (dividi o arquivo teste2.txt em diversos arquivos de 1 byte, se tiver10bytes serão 10 arquivo: novoa, novob, novoc...)# fdisk -l - lista as partições do HD# mount - monta um dispositivo ou partição, ex.: mount /dev/sda3 /mnt/pasta (monta a partição sda3 dentro da pasta /mnt/pasta)# umount - desmonta um dispositivo ou partição, ex.: umount /mnt/pasta# head - visualiza as 10 primeiras linhas de um arquivo o (-n é usado para informar qnts linhas vc deseja ler, ex.: -n 20).# tail arquivo.txt - inverso do head,lê um arquivo começando da ultima as 10 ultimas linhas(muito usado pra verificar logs).# ps - lista os processo, ex.: ps -U marcos (lista os processos para o usuário marcos).# kill - mata um processo

+ comandos

# killall - mata todos os processos de tal aplicativo, ex.: killall firefox (mata o firefox, firefox-bin...)# pidof - numero de processo de um PID ,exemplo: pidof httpd , retornará os PID do Apache# who - mostra quem está logado na máquina(whoami , mostra quem eu sou).# free - mostra a utilização da memória, a opção -m mostra a quantidade em Mb.

# su - troca ed usuário no terminal sem fazer logoff , ex: $ su root -> deve-se colocar a senha(password) do usuario root.

# pwd - mostra em que diretório estamos

# time - mostra quanto tempo gasto para execução de um comando (time ls -l)

# date - mostra a data(SS MM DD) a hora (hh:mm:ss) a localidade e o ano.

date 0627002412010 - alterará a data para jun 27 00:24 2010 ,ou seja (MMDDhhmmAAAA)

MM=mês em dois dígitos;DD=dia em dois dígitos;hh=hora em dois digitos;mm=minutos em dois digitos;AAAA=ano em 4 dígitos.

# cal - para exibir o calendário (para exibir do ano inteiro deve-se colocar o anos na frente do comando, ex: cal 2010)

# adduser - criar novo usuario (2x Entre new Unix password:) é criada uma pasta em /etc/passwd/ ,as linhas tem enradas:

root:x:0:0:root:/bin/bash (significa nome do usuario:a senha ou token de senha(criptografada geralmente em /etc/shadow):userid:groupid:nomeverdadeiro:diretorio e se é usuario do shell) caso retire a entrada, o usuario nao poderá logar, útil para criação de email.userid deve-se usar acima de500 para nao confudir com os do sistema.

# chown - altera o dono do arquivo, ex: chown usuario.grupo arquivo.txt

# shutdown - desliga o pc num tempo pre-definido exibindo uma mensagem antes de desligar.

# ln - cria links, ex.: ln -s /home/usuario/Documentos/ link (cria o link para a pasta Documentos, ln -s [diretório ou arquivo] link )

# reboot - reinicia o computador# uptime - mostra quanto tempo já está logado no Linux# wc [arquivo] - conta linhas,palavras e letras(nessa ordem) de um arquivo.# tar - compacta (-cf Create Files) e descompacta (-xf Xtract Files), ex.: tar -cf arquivo_a_ser_criado.tar [arquivo ou diretório][/nome_do_usuario_a_ser_criado]

E por fim...

# bash - EXECUTA UM ARQUIVO Shell Script(pode -se usar também o './arquivo' ou sh ).

Bom existem inúmeros outros comandos, se quiser saber mais, consulte esse Livro On Line do Google Livros CLASSIC SHELL SCRIPT, foio mais completo que eu vi até hoje, até a próxima parte do Curso, onde aprederemos os módulos básicos do Shell.

Para iniciarmos um script em Shell devemos ter a "Linha Mágica", assim chamada, é o identificadordo Interpretador, o Bash.#!/bin/bash

Ao salvar o arquivo em shell(arquivo ou arquivo.sh) devemos dar a permissãod e execução:# chmod +x arquivo.sh

Para rodar o arquivo pode-se usar(bash, sh ou ./):# bash arquivo.sh# sh arquivo.sh# ./arquivo.sh

Criando variáveis:

Curso de Certificação Linux LPI

Page 8: Curso de Certificação Linux LPI - Terminal Root

nome_da_variavel="valor da variável"

Variáveis de Ambiente:As variáveis de ambiente são aquelas conhecidas pelos demais processos (programas em execução). Exemplos destas variáveis são:TERM,HOME, PATH, EDITOR, etc.Para verificar todas as variáveis de ambiente basta digitarmos no terminal o comando:export -p

Qualquer variável pode se tornar uma variável de ambiente. Para isto, ela deve ser "exportada", com o comando export:# export [variável]# export [svariável]=[valor]

Para visualizar todas as variáveis basta digitar no terminal:# setou# env

Uma importante variável de ambiente é PATH que ajuda o shell a encontrar os comandos que o usuário executa. Todo comando executadoé, na realidade, um arquivo. Estes arquivos são chamados executáveis e estão armazenados em vários diretórios como /bin ou /usr/bin. Ovalor da variável PATH é uma lista de diretórios em que o shell procura toda vez que executamos um comando cujo arquivo não éencontrado no diretório corrente. Assim, não precisamos alterar o diretório de trabalho todas vez que necessitamos executar um comandoque se encontra em outro diretório. Basta acrescentar o diretório que contém tal comando à variável PATH. Os nomes dos diretórios navariável são separados pelo caractere dois-pontos (:).

Caso o usuário marcos queira adicionar um outro diretório, digamos /home/marcos/bin à variável PATH, deve proceder como mostrado aseguir:$ export PATH=$PATH:/home/marcos/bin # adiciona o diretório$ echo $PATH # verifica/bin:/usr/bin:/usr/local/bin:/home/marcos/bin

Existem também as variáveis especiais que são nativas do sistema:

Variável Descrição

$0 Parâmetro número 0 (nome do comando ou função)

$1 Parâmetro número 1 (da linha de comando ou função)

… Parâmetro número N …

$9 Parâmetro número 9 (da linha de comando ou função)

${10} Parâmetro número 10 (da linha de comando ou função)

$# Número total de parâmetros da linha de comando ou função

$* Todos os parâmetros, como uma string única

$@ Todos os parâmetros, como várias strings protegidas

$$ Número PID do processo atual (do próprio script)

$! Número PID do último processo em segundo plano

$_ Último argumento do último comando executado

$? Valor de retorno do último comando executado

O if, ao contrário do que ocorre em muitas outras linguagens, testa o retorno de um comando, não uma expressão.

Por exemplo:

if test 5 -lt 7thenecho '5 é menor que 7'fi

Porém, é possível posicionar a expressão entre colchetes, de forma a tornar o if mais parecido com o que acontece em outras linguagens:

if [ 5 -lt 7 ]thenecho '5 é menor que 7'fi

O “-lt” significa “less than“, ou seja, “menor que“, equivalendo ao operador "<".

Outros possíveis operadores são:

Comparação Numérica-lt: É menor que (LessThan)-gt: É maior que (GreaterThan)-le: É menor igual (LessEqual)-ge: É maior igual (GreaterEqual)-eq: É igual (EQual)-ne: É diferente (NotEqual)

Comparação de Strings=: É igual!=: É diferente-n: É não nula (não vazia)

Curso de Certificação Linux LPI

Page 9: Curso de Certificação Linux LPI - Terminal Root

-z: É nula (vazia)

Operadores Lógicos!: NÃO lógico (NOT)-a: E lógico (AND)-o: OU lógico (OR)

Testes em arquivos-b: É um dispositivo de bloco-c: É um dispositivo de caractere-d: É um diretório-e: O arquivo existe-f: É um arquivo normal-g: O bit SGID está ativado-G: O grupo do arquivo é o do usuário atual-k: O sticky-bit está ativado-L: O arquivo é um link simbólico-O: O dono do arquivo é o usuário atual-p: O arquivo é um named pipe-r: O arquivo tem permissão de leitura-s: O tamanho do arquivo é maior que zero-S: O arquivo é um socket-t: O descritor de arquivos N é um terminal-u: O bit SUID está ativado-w: O arquivo tem permissão de escrita-x: O arquivo tem permissão de execução-nt: O arquivo é mais recente (NewerThan)-ot: O arquivo é mais antigo (OlderThan)-ef: O arquivo é o mesmo (EqualFile)

Utilizando o CASE:echo "Digite um número"read x

case "$x" in1)echo "Você digitou o número 1";;2)echo "Você digitou o número 2";;*)echo "Você digitou outro número"esac

O loop FOR:for ((i = 0; i < 10; i++) do echo $i done

O loop WHILE:i=0while [ $i -lt 10 ]doecho $ii=$((i+1))done

O BREAK:i=0while truedoif [ $i -ge 10 ]thenbreakfii=$((i+1))done

O comando continue para a execução da iteração corrente e vai para a próxima iteração, mesmo que haja mais comandos no bloco derepetição.

Entrada/Saída:

Existem três dispositivos principais, que sempre estão abertos, que merecem destaque:

stdin (standard input): entrada padrão. Corresponde, em geral, ao teclado;stdout (standard output): saída padrão. Corresponde, em geral, à tela do terminal;stderr (standard error): saída padrão de erros. Corresponde, em geral, à tela do terminal, também.

Esses três dispositivos estão em /dev e estão sempre disponíveis. Quem programa em C, sabe muito bem disso, pois já deve ter usadostdin, stdout e stderr junto com fprintf, fread, fwrite e semelhantes; esses três dispositivos comportam-se como arquivos comuns, sempreabertos e que não devem ser fechados.Experimentem dar um cat em /dev/stdin para ver o que o que você digitar será repetido, entrada + saida.

Curso de Certificação Linux LPI

Page 10: Curso de Certificação Linux LPI - Terminal Root

Utilizando Pipelines:Pipeline ou Pipe é um recurso do shell que nos permite conectar vários comandos usando um pipe, onde a saída do primeiro comando éenviada diretamente à entrada do segundo e assim por diante no caso de haver mais de dois comandos conectados por pipes.

No nosso caso, queremos enviar a saída do comando ls para a entrada do comando sort. O símbolo "|" (barra vertical) é usado para criarum pipe, ex.:# ls | sort -r

É importante observar que o redirecionamento e o uso de pipes são características do shell e não dos comandos em si. É o shell quemprovê a sintaxe dos símbolos "<", ">" e "|". Logo, se você criar um programa que utilize entrada de dados via stdin, poderá usarredirecionamento para especificar uma entrada para o seu programa.

Expansões:

Expansões são caracteres, ou uma sequência deles, que expressa outro significado. O intuito disso é facilitar e padronizar comandos.

~: path à home do usuário corrente~user: path à home do usuário “user”

Definindo Funções

Sintaxe:function nome_da_funcao(){[comandos]}

Para chamar a função:nome_da_funcao

# caso haja parâmetrosnome_da_funcao param1 param2 ...

Para retornar valor (status) numa função, usa-se o comando return.

Exemplo:

#!/bin/bash

function retorna(){echo "sou um valor"return 42}

valor=$(retorna)echo $?echo $valor

Expressões Regulares em Bash

Expressões regulares em shell podem ser usadas em comparações (if’s), por exemplo. Em if’s, usa-se o operador “=~” para realizarcomparações usando ER’s:

s="bash"if [[ "$s" =~ ^b ]]thenecho 'começa com b'fi

Expressões Matemáticas

O bash não trabalha com expressões matemáticas tão facilmente. Existe o comando “let”, que permite realizar expressões matemáticas,mas é mais comum se usar a sintaxe semelhante ao C, utilizando dois parênteses:

$ a=$((1 + 1))$ ((i++))$ x=$((x*2))...

O Arquivo .bashrc

Na home dos usuários (~), é comum haver o arquivo .bashrc (o ponto no início indica que o arquivo é oculto). Esse arquivo é sempreexecutado quando se abre um shell. Nele, constam diversas configurações, como definição de variáveis de ambientes, definição de aliasesetc. Você pode editar esse arquivo (ou criá-lo, caso não exista):

# vim ~/.bashrc

É possível usar outros editores, não apenas o vim.

Aliases (Apelidos)

Curso de Certificação Linux LPI

Page 11: Curso de Certificação Linux LPI - Terminal Root

Algumas vezes usamos comandos que necessitam de várias opções e argumentos. Para amenizar o trabalho de digitarmos repetidamenteestes comandos o bash oferece um recurso chamado alias com o qual podemos definir sinônimos ou “apelidos” para um comando. Umalias pode ser definido na linha de comando da seguinte forma:

alias nome=comando

Observe que não pode haver espaços em branco antes ou depois do “=”.

Esta sintaxe indica que nome é um “alias” (apelido) para comando. Toda vez que digitarmos o comando “nome”, o bash o substituirá por“comando”.

Exemplo:

# alias lf='ls -F'

Isso fará o shell executar “ls -F” toda vez que usarmos “lf” na linha de comando. Ou seja, o que o alias faz na verdade é substituir apalavra “lf” por “ls -F”. Observe neste exemplo, existe um espaço em branco entre ls e -F. Sempre que houver espaços em branco nadefinição de um campo, todo o campo deve ser digitado entre aspas simples (‘) ou duplas (“).É possível definir aliases em seu .bashrc, paraque eles estejam sempre disponíveis na sua sessão.

Fonte: O Gordo e rberaldo

Atalhos da linha de comando

Atalho Descrição Tecla Similar

Ctrl+A Move o cursor para o início da linha Home

Ctrl+B Move o cursor uma posição à esquerda ←

Ctrl+C Envia sinal EOF() para o sistema

Ctrl+D Apaga um caractere à direita Delete

Ctrl+E Move o cursor para o fim da linha End

Ctrl+F Move o cursor uma posição à direita →

Ctrl+H Apaga um caractere à esquerda Backspace

Ctrl+I Completa arquivos e comandos Tab

Ctrl+J Quebra a linha Enter

Ctrl+K Recorta do cursor até o fim da linha

Ctrl+L Limpa a tela (igual ao comando clear)

Ctrl+N Próximo comando

Ctrl+P Comando anterior

Ctrl+Q Destrava a shell (veja Ctrl+S)

Ctrl+R Procura no histórico de comandos

Ctrl+S Trava a shell (veja Ctrl+Q)

Ctrl+T Troca dois caracteres de lugar

Ctrl+U Recorta a linha inteira

Ctrl+V Insere caractere literal

Ctrl+W Recorta a palavra à esquerda

Ctrl+X Move o cursor para o início/fim da linha (2x) Home/End

Ctrl+Y Cola o trecho recortado

Fonte: Aurelio.net Canivete Suíço do Shell

Pra quem já conhece o blog, percebeu que foi reunido 3 posts nesse aqui, mas essa é a idéia, reforçar o aprendizado, segue os links:

Curso de Shell Script parte 1Curso de Shell Script parte 2Atalhos da linha de comando

Curso Certificação Linux LPI-1: Arquitetura de Hardware.

Entrada/saída (em inglês: Input/output, sigla I/O) é um termo utilizado quase que exclusivamente no ramo da computação (ouinformática), indicando entrada (inserção) de dados por meio de algum código ou programa, para algum outro programa ou

Curso de Certificação Linux LPI

Page 12: Curso de Certificação Linux LPI - Terminal Root

hardware, bem como a sua saída (obtenção de dados) ou retorno de dados, como resultado de alguma operação de algumprograma, consequentemente resultado de alguma entrada.

São exemplos de unidades de entrada de um computador: disco rígido, microfone, teclado, mouse, tela sensível ao toque, Scanner, Leitorde código de barras, Celular, Pendrive, Máquina fotográfica digital, Webcam, joystick e outros acessórios de jogos.

São exemplos de unidades de saída de um computador: monitor, caixas de som, impressora, disco rígido. Um placa de sompadrão, porexemplo, utiliza as portas: 0x220, 0x330 e 0x338. Cada dispositivo utiliza um endereço de porta única que não pode ser compartilhado poroutros dispositivos. Os endereços de E/S podem ser visualizados com o comando:# cat /proc/ioports

O termo DMA é um acrónimo para a expressão em inglês Direct memory access. O DMA permite que certos dispositivos de hardware numcomputador acessem a memória do sistema para leitura e escrita independentemente da CPU.

Muitos sistemas utilizam DMA, incluindo controladores de disco, placas gráficas, de rede ou de som. Os canais de DMA no sistema podemser visualizados através do comando:# cat /proc/dma

Um pedido de interrupção (abreviação IRQ (em inglês)) é a forma pela qual componentes de hardware requisitam tempo computacionalda CPU. Um IRQ é a sinalização de um pedido de interrupção de hardware.As interrupções do sistema podem ser visualizadas com ocomando:# cat /proc/interrupts

Recursos já reservados:SCSI (pronuncia-se "scãzi"), sigla de Small Computer System Interface, é uma tecnologia quepermite ao usuário conectar uma larga gama de periféricos, tais como discos rígidos, unidadesCD-ROM, impressoras e scanners.

Características físicas e elétricas de uma interface de entrada e saída (E/S) projetadas para seconectarem e se comunicarem com dispositivos periféricos são definidas pelo SCSI.Existe umagrande variedade de padrões de dispositivos SCSI, sendo que estes inicialmente usavam interfacesparalelas. Alguns exemplos: SCSI-1 (barramento de 8 bits, clock de 5 MHz e taxa de transferência de5 MB/s), Fast SCSI (barramento de 8 bits, clock de 10 MHz e taxa de transferência de 10 MB/s), UltraSCSI (barramento de 8 bits, clock de 20 MHz e taxa de transferência de 20 MB/s), Ultra2 Wide SCSI(barramento de 16 bits, clock de 40 MHz e taxa de transferência de 80 MB/s) e Ultra-320 SCSI

(barramento de 16 bits, clock de 80 MHz DDR e taxa de transferência de 320 MB/s).

SCSI é mais comumente usado em discos rígidos e unidades de fita, mas também pode ser conectado em uma grande gama dedispositivos, incluindo scanners e drivers de CD.

Configurando Dispositivos de Rede: Com o comando abaixo nós podemos identificar o fabricando e o modelo de uma placa PCI.# lspci

a saída será mais ou menos, de vermelho está a placa de rede:

00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller (rev 10)00:02.0 VGA compatible controller: Intel Corporation 82G33/G31 Express Integrated Graphics Controller (rev 10)00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 01)00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 1 (rev 01)00:1d.0 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #1 (rev 01)00:1d.1 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 (rev 01)00:1d.2 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #3 (rev 01)00:1d.3 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 (rev 01)00:1d.7 USB Controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 01)00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1)00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01)00:1f.2 IDE interface: Intel Corporation N10/ICH7 Family SATA IDE Controller (rev 01)00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 01)01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 01)02:01.0 Modem: Motorola SM56 Data Fax Modem (rev 04)

Carregando módulos Depois de identificarmos a placa, o endereçamento de entrada e saída e o IRQ, será preciso carregar o módulo doKernel correspodente ou compilar o suporte ao dispositivo.Para carregar o suporte ao dispositivo através de um módulo do Kernel,devemos utilizar o comando:

Curso de Certificação Linux LPI

Page 13: Curso de Certificação Linux LPI - Terminal Root

# modprobe 8139too

O Linux suporta que os módulos sejam carregados automaticamente durante a carga do sistema(boot).As configurações dos parâmetrosdevem ser feitas no arquivo:# cat /etc/modules.conf

Configurando a Placa de Som O Linux suporta dois padrões de Sistemas de Som: -OSS (Open Sound Sistem) e -ALSA(Advanced LinuxSound Architecture) Para utilizar o dispositivo de som, carregue o módulo da placa com o comando:# modprobe NOME_DO_MODULO

Algumas placas requerem que seja especificado o recurso de hardware utilizado com parâmetro:# modprobe sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x388

Depois de instanciado no Kernel o módulo do dispositivo, os recursos:# /dev/audio

# /dev/dsp

# /dev/mixer

, estarão disponíveis. Configurando Dispositivos USB Universal Serial Bus (USB) é um tipo de conexão "ligar e usar" que permite aconexão de periféricos sem a necessidade de desligar o computador. O primeiro passo é deteminar qual xHCI(Host Controller Interface)sua placa mãe possui, e carregar o módulo correspodente ao chip. O comando para determinar qual o chip utilizado em sua placa-mãe é:# lspci -vt

O Linux tem suporte a diversos dispositivos USB através dos módulos do Kernel.Você poderá consultar os chipsets suportados nodiretório:# /lib/modules/versao_do_kernel/kernel/drivers/usb

Até o momento é só, até o próximo tópico.

Curso Certificação Linux LPI-1: Filtros de Texto

Filtragem de textos

A filtragem de textos é o processo de executar algumas conversões no texto de um fluxo de entrada de texto antes de enviá-lo para um fluxode saída. Embora tanto a entrada como a saída possam vir de um arquivo, nos ambientes UNIX® e Linux, a filtragem é, na maioria dasvezes, feita através da criação de uma pipeline de comandos, na qual a saída de um comando é canalizada ou redirecionada para ser usadacomo a entrada para o próximo. Canais e redirecionadores são abordados mais detalhadamente no artigo sobre fluxos, canais eredirecionadores. Porém, por enquanto, vamos dar uma olhada nos canais e redirecionamentos de saída básicos usando os operadores | e >.

FluxosUm fluxo é nada mais que uma sequência de bytes que pode ser lida ou escrita através do uso de funções da biblioteca, as quais escondem os detalhesde um dispositivo subjacente do aplicativo. O mesmo programa pode ler ou escrever em um terminal, arquivo ou soquete de rede em uma direçãoindependente de dispositivo através do uso de fluxos. Ambientes modernos de programação e shells usam três fluxos padrão de E/S:

stdin é o fluxo de entrada padrão, que fornece a entrada para os comandos.stdout é o fluxo de saída padrão, que exibe a saída dos comandos.stderr é o fluxo de erro padrão, que exibe a saída de erros dos comandos.

Canalizando com |A entrada pode vir de parâmetros que você fornece aos comandos e a saída pode ser exibida em seu terminal. Muitos comandos de processamento detexto (filtros) podem receber entradas tanto de um fluxo de entrada padrão quanto de um arquivo. Para usar a saída de um comando, command1, comoentrada para um filtro, command2, você deve conectar os comandos usando o operador de canal (I). A 1 mostra como canalizar a saída deecho

para classificar uma pequena lista de palavras.

1. Canalizando saídas de echo para entradas de classificação$ echo -e "applenpearnbanana"|sortapple banana pear

Qualquer comando pode ter opções e argumentos. Também é possível usar | para redirecionar a saída do segundo comando na pipeline para um terceirocomando, e assim por diante. Construir longas pipelines de comandos, em que cada uma tenha uma capacidade limitada, é um modo comum de executartarefas no Linux e no UNIX. Às vezes, você verá um hífen (-) no lugar do nome do arquivo como um argumento para um comando, indicando que aentrada deve vir do stdin e não de um arquivo.Redirecionamento de saída com >Embora você possa criar uma pipeline com muitos comandos e visualizar a saída no seu terminal, às vezes, você desejará salvar a saída em um arquivo.Isso é feito com o operador de redirecionamento de saída (>).Durante o resto desta seção, usaremos pequenos arquivos, assim, vamos então criar um diretório chamado lpi103-2 e fazer cd nesse diretório. Usaremosentão o > para redirecionar a saída do comandoecho

para um arquivo chamado text1. Tudo isso é exibido na 2. Observe que a saída não é exibida no terminal, pois foi redirecionada para um arquivo.

Curso de Certificação Linux LPI

Page 14: Curso de Certificação Linux LPI - Terminal Root

2. Redirecionando a saída de um comando para um arquivo$ mkdir lpi103-2$ cd lpi103-2$ echo -e "1 applen2 pearn3 banana" > text1

Agora que já temos algumas ferramentas básicas para canalizar e redirecionar, vamos dar uma olhada em alguns comandos e filtros de processamentode texto comuns do Linux e do UNIX. Esta seção apresenta alguns dos recursos básicos; consulte a man page apropriada para mais informações sobreestes comandos.Cat, od e splitAgora que você já criou o arquivo text1, você pode querer verificar o que há nele. Use o comandocat

(abreviação de concatenate) para exibir o conteúdo de um arquivo no stdout. A 3 verifica o conteúdo do arquivo criado acima.

3. Exibindo conteúdos de arquivos com o comando cat$ cat text11 apple 2 pear 3 banana

O comandocat

recebe a entrada a partir do stdin, caso você não especifique um nome de arquivo (ou se você especifica - como o nome do arquivo). Vamos usar issojunto com o redirecionamento de saída para criar outro arquivo de texto, como exibido na 4.

4. Criando um arquivo de texto com o comando cat$ cat >text29 plum 3 banana 10 apple

Muitos filtros pequenos

Outro exemplo de um filtro pequeno é o comandotac

. O nome é o contrário decat

, assim como a função, que também é oposta a do comandocat

, exibindo o arquivo na ordem inversa. Tente você mesmo executartac text2 text1

.Na 4,cat

continua lendo a partir do stdin até o fim do arquivo. Usa a combinação Ctrl-d (segure Ctrl e pressione d) parar indicar o fim do arquivo. Esta é amesma combinação de teclas para sair do bash shell. Use a tecla tab para alinhar os nomes das frutas em uma coluna.Você lembra que cat é uma abreviação de concatenate? É possível usar o comandocat

para concatenar vários arquivos para exibição. A 5 exibe os dois arquivos que acabamos de criar.

5. Concatenando dois arquivos com o comando cat$ cat text*1 apple 2 pear 3 banana 9 plum 3 banana 10 apple

Ao exibir esses dois arquivos de texto usando o comandocat

, você irá notar diferenças de alinhamento. Para descobrir o motivo dessa diferença, é necessário verificar os caracteres de controle do arquivo. Estessão colocados em prática na saída de exibição de texto, em vez de terem alguma representação do próprio caractere de controle exibida, assim, énecessário fazer dump no arquivo em um formato que permita localizar e interpretar esses caracteres especiais. As utilidades de texto GNU incluem umcomando voltado para esse propósito, o comandood

(ou Octal Dump).Há muitas opções para o comandood

, como, por exemplo, a opção-A

, que controla a base dos deslocamentos de arquivo, e a opção-t

, que controla a forma dos conteúdos do arquivo exibidos. A base pode ser especificada como o, (octal, que é o padrão), d (decimal), x (hexadecimal) ou n(sem deslocamentos exibidos). É possível exibir a saída como octal, hex, decimal, ponto flutuante, ASCII com escapes de barra invertida ou caracteresnomeados (nl for nova linha, ht para tabulação horizontal, etc.). A 6 exibe alguns dos formatos disponíveis para fazer dump do arquivo de exemplo text2.

6. Fazendo dump de arquivos com o comando od$ od text20000000 004471 066160 066565 031412 061011 067141 067141 005141 0000020 030061 060411 070160 062554 000012 0000031 $ od -A d -t c text20000000 9t p l u m n 3 t b a n a n a n 0000016 1 0 t a p p l e n 0000025 $ od -A n -t a text2 9 ht p l u m nl 3 ht b a n a n a nl 1 0 ht a p p l e nl

Observações:

A opção-A

do comandocat

fornece uma maneira alternativa para ver onde estão os seus finais de linhas e as suas tabulações. Consulte a man page para obter maisinformações.

1.

Caso você use espaços ao invés de tabulações em seu arquivo text2, consulte Expand, unexpand, e tr, mais adiante neste artigo, para ver comoalternar entre tabulações e espaços em um arquivo.

2.

Caso tiver um plano de fundo como mainframe, você pode ter interesse na utilidade hexdump, que faz parte de um conjunto de utilidades diferente.Como isso não é abordado aqui, consulte as man pages.

3.

Os nossos arquivos de exemplo são muito pequenos, porém, às vezes, você trabalhará com arquivos grandes, os quais deverão ser divididos em partesmenores. Por exemplo, você pode querer dividir um arquivo grande em partes do tamanho de CDs, de modo que seja possível gravar os arquivos em CDspara enviar os mesmos pelo correio para alguém que possa criar um DVD para você. O comandosplit

Curso de Certificação Linux LPI

Page 15: Curso de Certificação Linux LPI - Terminal Root

fará isso de modo que o comandocat

possa ser usado para recriar o arquivo facilmente. Como padrão, os arquivos resultantes do comandosplit

têm um prefixo 'x' em seus nomes, seguido de um sufixo 'aa', 'ab', 'ac', ..., 'ba', 'bb', etc. Há opções que permitem alterar esse padrão. Também é possívelcontrolar o tamanho dos arquivos de saída e se o arquivo resultante contém linhas inteiras ou somente contagens de bytes.A 7 ilustra a divisão dos nossos dois arquivos de texto com prefixos diferentes para os arquivos de saída. Nós dividimos o arquivo text1 em arquivoscontendo no máximo duas linhas, e o text2 em arquivos contendo no máximo 18 bytes. Usamos então o comandocat

para exibir individualmente algumas das partes, assim como para exibir um arquivo completo usando globbing, abordado no artigo gerenciamentobásico de arquivos

7. Dividindo e recombinando com os comandos split e cat$ split -l 2 text1$ split -b 17 text2 y$ cat yaa9 plum 3 banana 1$ cat yab0 apple $ cat y* x*9 plum 3 banana 10 apple 1 apple 2 pear 3 banana

Observe que o arquivo dividido nomeado como yaa não acabou com um caractere de linha nova, assim, o nosso prompt foi deslocado após usarmos ocomandocat

para exibi-lo.Wc, head e tailO comandoCat

exibe todo o arquivo. Isso funciona bem com arquivos pequenos, porém, vamos supor que estamos trabalhando com um arquivo grande. Primeiramente,você pode usar o comandowc

(Word Count) para ver o quão grande é o arquivo. O comandowc

exibe o número de linhas, palavras e bytes em um arquivo. Também é possível descobrir o número de bytes usandols -l

. A 8 exibe a de diretório de formato longo para os nossos dois arquivos de texto, assim como a saída do comandowc

.

8. Usando o comando wc com arquivos de texto$ ls -l text* -rw-rw-r--. 1 marcos marcos 24 2009-08-11 14:02 text1 -rw-rw-r--. 1 marcos marcos 25 2009-08-11 14:27 text2 $ wc text* 3 6 24 text1 3 6 25text2 6 12 49 total

Há opções que permitem controlar a saída dewc

ou exibir outras informações, como, por exemplo, o comprimento máximo das linhas. Consulte a man page para obter mais detalhes.Dois comandos permitem exibir a primeira (head) ou última (tail) parte de um arquivo. Esses comandos sãohead

etail

. Eles podem ser usados como filtros, ou podem tomar um nome de arquivo como um argumento. Como padrão, eles exibem as primeiras (ou últimas) 10linhas do arquivo ou fluxo. A 9 usa o comandodmesg

para exibir mensagens de inicialização, em conjunto com os comandoswc

,tail

ehead

, para descobrir que há 791 mensagens, exibir as últimas 10 linhas destas mesmas e, finalmente, exibir as seis mensagens começando 15 a partir dofinal. Algumas linhas foram truncadas nesta saída (indicadas por ...).

9. Usando wc, head e tail para exibir mensagens de boot$ dmesg|wc 791 5554 40186 $ dmesg | tailinput: HID 04b3:310b as /devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2.4/3-2.4:1.0/input/i nput12 generic-usb0003:04B3:310B.0009: input,hidraw1: USB HID v1.00 Mouse [HID 04b3:310b] on us b-0000:00:1a.0-2.4/input0 usb 3-2.4: USB disconnect, address 11 usb 3-2.4:new low speed USB device using uhci_hcd and address 12 usb 3-2.4: New USB device found, idVendor=04b3, idProduct=310b usb 3-2.4: New USB device strings:Mfr=0, Product=0, SerialNumber=0 usb 3-2.4: configuration #1 chosen from 1 choice input: HID 04b3:310b as /devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2.4/3-2.4:1.0/input/i nput13 generic-usb 0003:04B3:310B.000A: input,hidraw1: USB HID v1.00 Mouse [HID 04b3:310b] on us b-0000:00:1a.0-2.4/input0 usb 3-2.4:USB disconnect, address 12 $ dmesg | tail -n15 | head -n 6usb 3-2.4: USB disconnect, address 10 usb 3-2.4: new low speed USB device using uhci_hcd andaddress 11 usb 3-2.4: New USB device found, idVendor=04b3, idProduct=310b usb 3-2.4: New USB device strings: Mfr=0, Product=0, SerialNumber=0 usb 3-2.4:configuration #1 chosen from 1 choice input: HID 04b3:310b as /devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2.4/3-2.4:1.0/input/i nput12

Outro uso comum detail

é seguir um arquivo usando a opção-f

, normalmente com uma contagem de linha de 1. Você pode usar essa opção quando um processo de segundo plano está gerando saída em um arquivo evocê deseja verificar como está o andamento. Neste modo, o comandotail

será executado até que você o cancele (usando Ctrl-c), exibindo as linhas conforme elas são escritas no arquivo.Expand, unexpand e trQuando criamos os nossos arquivos text1 e text2, criamos o text2 com tabulações. Às vezes, você desejará trocar as tabulações por espaços, e vice-versa.Isso é feito com os comandosexpand

eunexpand

. Em ambos os comandos, a opção-t

permite que você defina as tabulações. Um valor único define tabulações repetidas neste intervalo. A 10 exibe como expandir as tabulações no arquivotext2 para espaços simples, assim como outra cuidadosa sequência deexpand

Curso de Certificação Linux LPI

Page 16: Curso de Certificação Linux LPI - Terminal Root

eunexpand

, que desalinha o texto em text2.

10. Usando expand e unexpand$ expand -t 1 text29 plum 3 banana 10 apple $ expand -t8 text2|unexpand -a -t2|expand -t39 plum 3 banana 10 apple

Infelizmente, não é possível usarunexpand

para substituir os espaços em text1 por tabulações, poisunexpand

necessita de pelo menos dois espaços para converter em tabulações. No entanto, é possível usar o comandotr

, que converte caracteres em um conjunto (set1) para caracteres correspondentes em outro conjunto (set2). A 11 mostra como usar o comandotr

para converter espaços em tabulações. Uma vez quetr

é meramente um filtro, gera-se entrada a partir do mesmo usando o comandocat

. Este exemplo também ilustra o uso de - para representar a entrada padrão para o comandocat

, assim, podemos concatenar a saída detr

e o arquivo text2.

11. Usando o comando tr$ cat text1 |tr ' ' 't'|cat - text21 apple 2 pear 3 banana 9 plum 3 banana 10 apple

Caso você não tenha certeza do que está acontecendo nos dois últimos exemplos, tente usar o comandood

para terminar cada estágio da pipeline de uma vez, por exemplo,cat text1 |tr ' ' 't' | od -tc

Pr, nl e fmtO comandopr

é usado para formatar arquivos para impressão. O cabeçalho padrão inclui o nome do arquivo, data e hora de criação do arquivo, junto com um númerode página e duas linhas de rodapé em branco. Quando a saída é criada a partir de múltiplos arquivos ou do fluxo de entrada padrão, a data e a horaatuais são usadas no lugar do nome do arquivo e sua data de criação. É possível imprimir arquivos lado a lado em colunas e controlar muitos aspectos daformatação através das opções. Como de costume, consulte a man page para obter mais detalhes.O comandonl

numera as linhas, o que pode ser conveniente ao imprimir os arquivos. Também é possível numerar as linhas com a opção-n

do comandocat

. A 12 mostra como imprimir um arquivo de texto e, em seguida, como numerar o arquivo text2 e imprimi-lo lado a lado com o text1.

12. Numerando e formatando para impressão.$ pr text1 | head 2009-08-11 14:02 text1 Page 1 1 apple 2 pear 3 banana $ nl text2 | pr -m - text1 | head 2009-08-11 15:36 Page 1 1 9 plum 1 apple 2 3banana 2 pear 3 10 apple 3 banana

Outro comando útil para formatar o texto éfmt

, que formata o texto de modo que o mesmo fique dentro das margens. É possível tanto juntar várias linhas curtas como dividir longas. Na 13, nóscriamos o arquivo text3 com uma única e longa linha de texto, usando variantes do recurso histórico!#:*

para não termos que digitar nossa sentença quatro vezes. Também criamos um arquivo text4 com uma palavra por linha. A seguir, usamos o comandocat

para exibi-los de modo não formatado, incluindo um caractere '$' para sinalizar os finais de linha. Finalmente, usamos o comandofmt

para formatá-los com uma largura máxima de 60 caracteres. Mais uma vez, consulta a man page para mais detalhes sobre opções adicionais.

13. Formatando com um comprimento máximo de linha$ echo "This is a sentence. " !#:* !#:1->text3echo "This is a sentence. " "This is a sentence. " "This is a sentence. ">text3 $ echo -e"Thisnisnanothernsentence.">text4$ cat -et text3 text4This is a sentence. This is a sentence. This is a sentence. $ This$ is$ another$ sentence.$ $ fmt -w60 text3 text4This is a sentence. This is a sentence. This is a sentence. This is another sentence.

Sort e uniqO comandosort

classifica a entrada usando a sequência de intercalação do código do idioma (LC_COLLATE) do sistema. O comandosort

também pode mesclar arquivos já classificados e verificar se um arquivo está ou não classificado.A 14 ilustra o uso do comandosort

para classificar os nossos dois arquivos de texto após a conversão dos espaços em branco para tabulações no arquivo text1. Uma vez que a ordem declassificação é por caractere, você poderá se surpreender com os resultados. Felizmente, o comandosort

pode classificar tanto de acordo com valores numéricos quanto de acordo com valores de caractere. É possível definir essa escolha para todo o registroou para cada campo. A menos que você especifique um separador de campo diferente, os campos são delimitados por espaços em branco ou tabulações.

Curso de Certificação Linux LPI

Page 17: Curso de Certificação Linux LPI - Terminal Root

O segundo exemplo da 14 exibe a classificação numérica do primeiro arquivo e a classificação por seqüência de intercalação (alfabética) do segundo. Ouso da opção-u

para eliminar linhas duplicadas e manter somente as linhas únicas também é ilustrado.

14. Classificação numérica e por caractere.$ cat text1 | tr ' ' 't' | sort - text210 apple 1 apple 2 pear 3 banana 3 banana 9 plum $ cat text1|tr ' ' 't'|sort -u -k1n -k2 - text21 apple 2 pear 3banana 9 plum 10 apple

Observe que ainda há duas linhas contendo a fruta "apple", pois o teste de singularidade é feito em todas as duas chaves de classificação, k1n e k2 emnosso caso. Pense em como alterar ou adicionar etapas à pipeline acima para eliminar a segunda ocorrência de 'apple'.Outro comando, chamadouniq

, fornece outro modo de controlar a eliminação das linhas duplicadas. O comandouniq

normalmente opera em arquivos classificados. Ele remove as linhas idênticas e consecutivas de qualquer arquivo, classificado ou não. O comandouniq

também pode ignorar alguns campos. A 15 classifica os nossos dois arquivos de texto usando o segundo campo (fruit name) e, a seguir, elimina as linhasidênticas, começando no segundo campo (ou seja, nós ignoramos o primeiro campo ao fazer os testes com o comandouniq

).

15. Usando o comando uniq$ cat text1|tr ' ' 't'|sort -k2 - text2|uniq -f110 apple 3 banana 2 pear 9 plum

Nossa classificação foi por sequência de intercalação, assim, o comandouniq

nos fornece a linha "10 apple", em vez de "1 apple". Para ver como alterar isso, tente adicionar uma classificação numérica no campo-chave 1.

Cut, paste e joinAgora, vamos dar uma olhada em mais três comandos para lidar com campos em dados textuais. Estes comandos são especialmente úteis para lidar comdados tabulares. O primeiro é o comandocut

, que extrai campos de arquivos de texto. O delimitador de campo padrão é o caractere de tabulação. A 16 usa o comandocut

para separar duas colunas do arquivo text2 e, a seguir, usa um espaço como delimitador de saída, que é uma maneira incomum de converter a tabulaçãode cada linha em um espaço.

16. Usando o comando cut$ cut -f1-2 --output-delimiter=' ' text29 plum 3 banana 10 apple

O comandopaste

cola linhas de dois ou mais arquivos lado a lado, semelhante ao modo que o comandopr

mescla arquivos usando sua opção-m

. A 17 exibe os resultados da colagem de dois ou mais arquivos de texto.

17. Colando arquivos$ paste text1 text21 apple 9 plum 2 pear 3 banana 3 banana 10 apple

Estes exemplos apresentam colagens simples, porém o comandopaste

pode colar dados a partir de um ou mais arquivos de várias outras maneiras. Consulte a man page para obter mais detalhes.Nosso último comando para a manipulação de campos é ojoin

, que junta arquivos com base em um campo correspondente. Os arquivos devem estar classificados no campo de junção. Uma vez que o arquivo text2não está classificado em ordem numérica, podemos classificá-lo e, então, o comando join irá juntar as duas linhas com um campo de junçãocorrespondente (o campo com valor 3, neste caso).

18. Juntando arquivos com campos de junção.$ sort -n text2|join -j 1 text1 -3 banana banana join: file 2 is not in sorted order

Mas o que deu errado? Lembre-se do que aprendeu sobre classificação numérica e por caractere na seção Sort e uniq. A junção é executada com baseem caracteres correspondentes de acordo com a sequência de intercalação do código do idioma. Ela não funciona em campos numéricos, a não ser queos campos tenham todos o mesmo comprimento.Usamos a opção-j 1

para juntar com base no campo 1 de cada arquivo. O campo a ser usado para a junção pode ser especificado separadamente para cada arquivo. Épossível, por exemplo, fazer a junção com base no campo 3 de um arquivo e no campo 10 de outro arquivo.Vamos criar um novo arquivo, chamado text5, classificando o arquivo text1 com base no segundo campo (fruit name) e substituindo os espaços portabulações. Em seguida, se classificarmos o arquivo text2 no segundo campo e fizermos a junção com o text5 usando o segundo campo de cada arquivocomo campo de junção, deveremos ter duas correspondências (apple e banana). Essa junção é ilustrada na 19.

19. Juntando arquivos com campos de junção.$ sort -k2 text1|tr ' ' 't'>text5$ sort -k2 text2 | join -1 2 -2 2 text5 -apple 1 10 banana 3 3

SedSed é o stream editor. Há muitos artigos do developerWorks, assim como muitos livros e capítulos de livros, sobre o sed . O Sed é muito poderoso e astarefas que ele pode realizar são limitadas somente pela sua imaginação. Esta pequena introdução deve abrir o seu apetite para com o sed, porém semintenções de ser completa ou extensiva.Tal como acontece com muitos dos comandos de texto que aprendemos até agora, o sed pode funcionar como um filtro e receber a sua entrada a partirde um arquivo. A saída é para o fluxo de saída padrão. O sed carrega linhas da entrada no espaço padrão, aplica os comandos de edição do sed aosconteúdos do espaço padrão e, em seguida, escreve o espaço padrão para a saída padrão. O sed pode combinar muitas linhas no espaço padrão, e issopode escrever para um arquivo, escrever somente a saída selecionada ou não escrever.

Curso de Certificação Linux LPI

Page 18: Curso de Certificação Linux LPI - Terminal Root

O sed usa a sintaxe de expressão regular para procurar e substituir o texto seletivamente no espaço padrão, assim com controlar quaislinhas de texto devem ser operadas por conjuntos de comandos de edição. Expressões regulares são abordadas com mais detalhes no artigosobre procurando arquivos de texto em expressões regulares (que você encontra na . Um buffer de espera fornece armazenamentotemporário para o texto. O buffer de espera pode substituir o espaço padrão, ser adicionado ao espaço padrão, ou ser alternado com oespaço padrão. O sed tem um conjunto de comandos limitados, mas que, quando combinados com sintaxe de expressões regulares e o bufferde espera, resultam em incríveis capacidades. Um conjunto de comandos do sed é, normalmente, chamado sed script.

A 20 exibe três sed scripts simples. No primeiro, usamos o comandos

(substitute) para substituir uma maiúscula por uma minúscula 'a' em cada linha. Este exemplo substitui somente o primeiro 'a', assim, no segundoexemplo, adicionamos o sinalizador 'g' (global), fazendo com que o sed altere todas as ocorrências. No terceiro script, introduzimos o comandod

(delete) para deletar uma linha. No nosso exemplo, usamos um endereço de 2 para indicar que somente a linha 2 deve ser deletada. Separamos oscomandos usando um ponto-e-vírgula (;) e usamos a mesma substituição global que usamos no segundo script para substituir 'a' por 'A'.

20. Iniciando sed scripts$ sed 's/a/A/' text11 Apple 2 peAr 3 bAnana $ sed 's/a/A/g' text11 Apple 2 peAr 3 bAnAnA $ sed '2d;$s/a/A/g' text11 apple 3 bAnAnA

Além de operar em linhas individuais, o sed pode operar em um intervalo de linhas. O começo e o fim do intervalo são separados por uma vírgula (,) epodem ser especificados como um número de linha, uma expressão regular ou um sinal de dólar ($) para o final do arquivo. Dado um endereço ou váriosendereços, é possível agrupar vários comandos entre chaves, { e }, para que estes operem somente nas linhas selecionadas pelo intervalo. A 21 ilustraduas maneiras de ter a nossa substituição global aplicada somente às duas últimas linhas do nosso arquivo. Também ilustra o uso da opção-e

para adicionar múltiplos comandos ao script.

21. Endereços sed.$ sed -e '2,${' -e 's/a/A/g' -e '}' text11 apple 2 peAr 3 bAnAnA $ sed -e '/pear/,/bana/{' -e 's/a/A/g' -e '}' text11 apple 2 peAr 3 bAnAnA

Sed scripts também podem ser armazenados em arquivos. De fato, você provavelmente vai querer fazer isso com scripts frequentemente usados.Lembre-se que usamos o comandotr

para substituir espaços em branco por tabulações no arquivo text1. Agora, vamos fazer isso com um sed script armazenado em um arquivo. Vamos usaro comandoecho

para criar o arquivo. Os resultados são exibidos na 22.

22. Um sed de uma linha$ echo -e "s/ /t/g">sedtab$ cat sedtabs/ / /g $ sed -f sedtab text11 apple 2 pear 3 banana

Nosso último exemplo de sed usa o comando=

para imprimir números de linha e então filtrar a saída resultante, novamente através do sed, imitando o efeito do comandonl

para numerar linhas. A 23 usa o comando=

para imprimir números de linha, a seguir, usa o comandoN

para ler uma segunda linha de entrada no espaço padrão e, finalmente, remove o caractere de nova linha (n) entre as duas linhas no espaço padrão.

23. Numerando linhas com sed$ sed '=' text21 9 plum 2 3 banana 3 10 apple $ sed '=' text2|sed 'N;s/n//'19 plum 23 banana 310 apple

Não é bem o que queríamos! O que realmente gostaríamos é de ter os nossos números alinhados em uma coluna com algum espaço antes das linhas doarquivo. Na 24, inserimos várias linhas de comando (observe o prompt secundário >). Estude os exemplos e consulte a explicação abaixo.

24. Numerando linhas com sed - segundo round$ cat text1 text2 text1 text2>text6$ ht=$(echo -en "t")$ sed '=' text6|sed "N> s/^/ /> s/^.*(......)n/1$ht/" 1 1 apple 2 2 pear 3 3 banana 4 9 plum 5 3banana 6 10 apple 7 1 apple 8 2 pear 9 3 banana 10 9 plum 11 3 banana 12 10 apple

Aqui vão os passos que seguimos:

Primeiro, usamos o comandocat

para criar um arquivo de doze linhas a partir de duas cópias dos nossos arquivos text1 e text2. Não há nada de divertido em formatar números emcolunas se não temos números de dígitos diferentes.

1.

O bash shell usa a tecla tab para a conclusão de comandos, assim, é útil ter um caractere de tabulação cativo que você possa utilizar quandonecessitar de uma tabulação real. Usamos o comandoecho

para fazer isso e salvar o caractere na variável shell 'ht'.

2.

Criamos um fluxo contendo números de linha seguidos de linhas de dados, como fizemos anteriormente, e o filtramos através de uma segunda cópiado sed.

3.

Lemos uma segunda linha no espaço padrão.4. Prefixamos nosso número de linha no começo do espaço padrão (marcado por ^) com seis espaços em branco.5. A seguir, substituímos toda a linha para a nova linha com os últimos seis caracteres antes da nova linha mais um caractere de tabulação. Isso alinhaos nossos números de linha nas primeiras seis colunas da linha de saída. Observe que a parte esquerda do comando 's' usa '(' e ')' para marcar oscaracteres que queremos usar na parte direita. Na parte direita, referimos o primeiro conjunto marcado (e somente tal conjunto neste exemplo)como 1. Observe que nosso comando está entre aspas duplas ("), de modo que a substituição vai ocorrer para $ht.

6.

A Versão 4 do sed contém documentação em formatoinfo

e inclui excelentes exemplos. Estes não estão inclusos na antiga versão 3.02. O GNU sed aceita o comandosed --version

para exibir a versão.

Extraído com adaptação do original:

https://www.ibm.com/developerworks/br/linux/

Curso de Certificação Linux LPI

Page 19: Curso de Certificação Linux LPI - Terminal Root

Curso Certificação Linux LPI-1: Hierarquia do Sistema

Sistema de arquivos é a forma de organização de dados em algum meio de armazenamento de dados em massa frequentemente feito emdiscos magnéticos.[1] Sabendo interpretar o sistema de arquivos de um determinado disco, o sistema operacional pode decodificar osdados armazenados e lê-los ou gravá-los.

Fazendo analogias, tal organização assemelha-se a uma biblioteca escolar. O bibliotecário organiza os livros conforme um padrão, cujabusca, convenientemente, procura deixar mais fácil, sem ocupar muitas prateleiras e assegurando a integridade deste.Inode

Cada diretório e arquivo do Linux é identificado para o kernel como um número de nó i (inode).

Inode

Um inode é, na realidade, uma estrutura de dados que possui informações sobre um determinado arquivo ou diretório como,por exemplo, dono, grupo, tipo e permissões de acesso.

O inode é exclusivo somente para o dispositivo (partição) dentro do qual ele está contido. Portanto, para identificar unicamente umarquivo, o kernel deve ter o número de dispositivo e o inode do arquivo.

Um arquivo possui um único inode, não importa por quantos nomes este arquivo é identificado no sistema. Logo, é o conjunto de inodesque indica o número de arquivos/diretórios que o sistema possui.Inodes

Diretório

Diretório é o local utilizado para armazenar conjuntos de arquivos para melhor organização e localização. O diretório, como o arquivo,também é "Case Sensitive" (diretório /teste é completamente diferente do diretório /Teste).

Não podem existir dois arquivos com o mesmo nome em um diretório, ou um sub-diretório com um mesmo nome de um arquivo em ummesmo diretório.

Um diretório, nos sistemas Linux/UNIX, é especificado por uma "/" e não uma "" como é feito no DOS. Para detalhes sobre como criar umdiretório, veja o comando mkdir.

Diretório Raiz

Este é o diretório principal do sistema. Dentro dele estão todos os diretórios do sistema. Odiretório Raiz é representado por uma "/", assim se você digitar o comando cd / você estaráacessando este diretório.

Nele estão localizados outros diretórios como o /bin, /sbin, /usr, /usr/local, /mnt, /tmp, /var,/home, etc. Estes são chamados de sub-diretórios pois estão dentro do diretório "/". Aestrutura de diretórios e sub-diretórios pode ser identificada da seguinte maneira:

A estrutura de diretórios também é chamada de Árvore de Diretórios porque é parecida comuma árvore de cabeça para baixo. Cada diretório do sistema tem seus respectivos arquivosque são armazenados conforme regras definidas pela FHS (FileSystem Hierarchy Standard -Hierarquia Padrão do Sistema de Arquivos) versão 2.0, definindo que tipo de arquivo deveser armazenado em cada diretório.

O sistema GNU/Linux possui a seguinte estrutura básica de diretórios, organizados segundoo FHS (Filesystem Hierarchy Standard):

/

raíz do sistema

/bin

Contém arquivos programas do sistema que são usados com frequência pelos usuários.

/boot

Contém arquivos necessários para a inicialização do sistema.

/cdrom

Ponto de montagem da unidade de CD-ROM.

/media

Ponto de montagem de dispositivos diversos do sistema (rede, pen-drives, CD-ROM em distribuições mais novas).

Curso de Certificação Linux LPI

Page 20: Curso de Certificação Linux LPI - Terminal Root

/dev

Contém arquivos usados para acessar dispositivos (periféricos) existentes no computador.

/etc

Arquivos de configuração de seu computador local.

/floppy

Ponto de montagem de unidade de disquetes

/home

Diretórios contendo os arquivos dos usuários.

/lib

Bibliotecas compartilhadas pelos programas do sistema e módulos do kernel.

/lost+found

Local para a gravação de arquivos/diretórios recuperados pelo utilitário fsck.ext2. Cada partição possui seu própriodiretório lost+found.

/mnt

Ponto de montagem temporário.

/proc

Sistema de arquivos do kernel. Este diretório não existe em seu disco rígido, ele é colocado lá pelo kernel e usado pordiversos programas que fazem sua leitura, verificam configurações do sistema ou modificam o funcionamento dedispositivos do sistema através da alteração em seus arquivos.

/root

Diretório do usuário root.

/sbin

Diretório de programas usados pelo superusuário (root) para administração e controle do funcionamento do sistema.

/tmp

Diretório para armazenamento de arquivos temporários criados por programas.

/usr

Contém maior parte de seus programas. Normalmente acessível somente como leitura.

/var

Contém maior parte dos arquivos que são gravados com frequência pelos programas do sistema, e-mails, spool deimpressora, cache, etc.

Fontes:

http://www.uniriotec.br/

http://pt.wikibooks.org/wiki/Guia_do_Linux/

Curso Certificação Linux LPI-1: Sistemas de Arquivos e Dispositivos

Curso de Certificação Linux LPI

Page 21: Curso de Certificação Linux LPI - Terminal Root

Por padrão, os discos são nomeados da seguinte forma no linux:

/dev/hda - Disco IDE conectado na interface primária mestre./dev/hdb - Disco IDE conectado na interface primária escravo./dev/hdc - Disco IDE conectado na interface secundária mestre./dev/hdd - Disco IDE conectado na interface secundário escravo./dev/sda - Disco SCSI conectado no primeiro canal./dev/sdb - Disco SCSI conectado no segundo canal./dev/sdc - Disco SCSI conectado no terceiro canal./dev/fd - Drive de disquete.

Cada disco pode ter de uma a 16 partições.As partições funcionam com um contêiner para os sistemas de arquivosNo Linux cada partição é representada por um número inteiro.

Partições Primárias

Cada disco pode conter no máximo 4 partições primárias.Estas partições contêm necessariamente um sistema de arquivos e pelo menos uma deve ser criada.As partições primárias podem ser nomeadas como: /dev/hda1, /dev/hda2, /dev/hda3 /dev/hda4.Uma destas partições primárias deve sermarcada como ativa para que a carga do sistema operacional(boot) seja possível.

Partições Estendidas

Elas são uma variação das partições primárias, mas não podem conter um sistema de arquivos.Funcionam como um contêiner para aspartições lógicas.

Partições Lógicas

Essas existem em conjunto com uma partição estendida e podemos ter de uma a 12 partições desse tipo.São nomeadas do n° 5 até 16.

Exemplo:

/dev/hda1 (partição primária)/dev/hda2 (partição estendida)/dev/hda5 (partição lógica)/dev/hda6 (partição lógica)(...)/dev/hda16 (partição lógica)

Partição de Swap (arquivo de troca)

Existem ainda um outro tipo especial de partição no Linux chamado de partição de swap.Esta possibilita que o Linux tenha umamemória virtual em disco.Este tipo de memória é usado como arquivo de troca de dados entre a memória física e o disco.Seu objetivoé aumentar a performance do sistema.

fdisk (e cfdisk) são responsáveis por criar, listar, alterar e apagar as partições de disco.mkfs formata a partição criada pelo fdisk.mkswap prepara o dispositivo para ser usado como área de memória virtual(swap), antes de formatar uma partição paraswap, é necessária que ela seja do tipo 82 (Linux Swap).swapon ativa a partição após formatada (necessário).df mostra a capacidade utilizada em termos de espaço e inodes.du (Disk Usage) fornece uma lista detalhada sobre a utilização do disco em termos de diretórios.fsck checa e corrige a existência de erros no sistema de arquivos.Por padrão ele assume o sistema de arquivos ext2./etc/fstab mantém informações de quais sistemas de arquivos serão montados no processo de carga do sistemaoperacional.which procura um comando no disco

Curso de Certificação Linux LPI

Page 22: Curso de Certificação Linux LPI - Terminal Root

Find

O comando find localiza a partir de um caminho ou diretório recursivamente uma expressão diretamente no sistema de arquivos.

uso: find caminho expressão

exemplo, encontra o arquivo marcospinguim.php no disco:$ find /home/marcos -name marcospinguim.php

para as pastas que você não tem permissão de visualização, pode jogar a segunda etapa para o vazio, assim:$ find /home/marcos -name marcospinguim.php 2>/dev/null

Para localizar arquivos ou diretórios que foram alterados nos últimos 30 dias, utilizamos a expressão -ctime 30:$ find | home -ctime 30

Para localizar arquivos que foram acessados nos últimos 10 dias, utilizamos a expressão -used 10:$ find | -used 10

Para localizar arquivos com pelo menos 30k, utilizamos a expressão -size nk:$ find | -size 30k

locate realiza buscas em um banco de dados criado com updatedb.whatis pesquisa por palavra exata no banco de dados.apropos consulta um banco de dados consistindo de descrições curtas dos comandos do sistema e utilitários.

Por enquanto é só, até o próximo tópico ou a próxima postagem sobre outro assunto.

Curso Certificação Linux LPI-1: Montagem e Desmontagem de Sistema de Arquivos (SLIDE)

Desta vez vou postar somente imagens das Aulas do Professor Uirá Ribeiro do Curso Certificação Linux LPI-1: Montagem eDesmontagem de Sistema de Arquivos, para facilitar o aprendizado, lembrando que este "Slide" está resumido do original,analise a imagem para acesso as informações.

Curso de Certificação Linux LPI

Page 23: Curso de Certificação Linux LPI - Terminal Root

Curso de Certificação Linux LPI

Page 24: Curso de Certificação Linux LPI - Terminal Root

Curso Certificação Linux LPI-1: Executando, Gerenciando e Terminando Processos

Escalonador:

O escalonamento de processos ou agendador de tarefas (em inglês scheduling) é uma atividade organizacional feita pelo escalonador(scheduler) da CPU ou de um sistema distribuído, possibilitando executar os processos mais viáveis e concorrentes, priorizandodeterminados tipos de processos, como os de I/O Bound e os computacionalmente intensivos.

O escalonador de processos de 2 níveis escolhe o processo que tem mais prioridade e menos tempo e coloca-o na memória principal,ficando os outros alocados em disco; com essa execução o processador evita ficar ocioso.

O Processo init:

O init é o primeiro processo iniciado no Linux, logo após a carga do kernel do sistema. Quando é disparado, o init continua a carga dosistema, geralmente executando vários scripts que irão verificar e montar sistemas de arquivos, configurar teclado e iniciar servidores,entre outras tarefas.

O init utilizado no Linux permite que existam diversos níveis de execução no sistema. Um nível de execução é uma configuração desoftware do sistema que define quais processos devem ser inicializados e quais não devem, e também de que modo são inicializados.

Atributo de Processos(Sinais):

Um processo tem vários atributos que controlam sua execução.O PID identifica únicamente este processo (nenhum PID pode ser repetido até novo boot do sistema). O PPID indica qual "processo-pai" ocriou. O nice number controla a prioridade desse processo. Processos de maior prioridade têm a preferência na utilização da CPU. O UID eGID indicam o usuário e grupo que criou esse processo. Somente o root (superusuário) pode destruir processos criados por outrosusuários. O EUID e o EGID são formas de se rodar um processo, criado por um usuário não-privilegiado de forma que ele se comportecomo privilegiado, com acesso a outros recursos que normalmente o usuário não o teria. O comando chmod +s <arquivo> pode ser usadopara fazer um programa modificar esse valor na execução. Um programa setuid (com o flag s ligado) no instante de execução troca seuUID/GID pelos seus próprios (user/group do arquivo) e efetivamente rodam como se fosse este outro usuário, pois o kernel testa o EUID eEGID para testar privilégios de acesso. Daí, devmos ter o máximo cuidado quando ligarmos este flag em algum executável.

Curso de Certificação Linux LPI

Page 25: Curso de Certificação Linux LPI - Terminal Root

Prioridades de Processos:

Muita gente não sabe, mas nos sistemas Linux mais modernos, podemos ter um controle de prioridade de processos utilizando a CPU.Estas prioridades funcionam para favorecer melhor um comando à outro. Por exemplo:

Programa 1 tem prioridade “alta” Programa 2 tem prioridade “normal”

Se o Programa 2 resolve gastar quase todo o processamento no sistema (como por exemplo: compactação de arquivos em bzip2), osprogramas que estão em prioridade alta não serão completamente afetados.

Se o Programa 1 estivesse em prioridade “normal”, ele teria que dividir o processamento com o Programa 2, mesmo que ele usassepouquinho. Mas como ele está em “alta” prioridade, ele sempre vai ter a preferência no sistema, ao invés do Programa 2.

A faixa de prioridades é:

-20 (Prioridade Máxima) -19 … -1 0 (Prioridade Padrão) 1 … 18 19 (Prioridade Mínima)

Sendo assim, por padrão, todo comando executado “normalmente” recebe a prioridade 0 (Zero). E quanto menor for esse número, maior aprioridade do processo na CPU (Sim, é o contrário! Quanto menor, maior; quanto maior, menor! :).

Por padrão, os comandos ligados ao kernel e o sistema operacional em si têm prioridade inferior a 0 (aqui no meu sistema, vejo váriosprocessos com prioridade -5). Isso nos faz lembrar que você precisa ser root para configurar um processo com prioridade menor que 0.Isso faz sentido, já que em um sistema multi-usuário, os usuários normais compartilham o padrão 0, e podem escolher apenas se oprocesso pode ter uma prioridade mais baixa, assim não interferindo com os processos do sistema, que teoricamente são maisimportantes.

Executando aplicações em segundo plano:

Quando estamos num terminal, queremos utilizar algum comando/aplicação e necessitamos ainda do terminal livre, podemos executar oque queremos em segundo plano. É muito simples, veja:

$ comando &

Simplesmente adicione o caracter & ao final do comando/aplicativo que você quer executar. Acho interessante quando estamos no X equeremos abrir uma aplicação diretamente do terminal.

Comandos para gerenciamento:

ps:$ ps [options]

- exibe informações sobre uma seleção dos processos ativos.Se você quer uma atualização repetitiva da seleção e as informaçõesapresentadas, usar top (1) em seu lugar.>pstree:$ pstree

- mostra a árvore de processostop:$ top

- exibe as tarefas do linux.kill:$ kill

- O sinal padrão para matar é TERM. Utilização de L-ou L-a lista de sinais disponíveis. Sinais particularmente úteis incluem HUP, INT,MATAR, STOP, CONT, e 0.Sinais de suplentes poderão ser especificada de três formas: -9-SIGKILL-matar. PID valores negativos podem serusados para escolher grupos de processos inteiros; ver a coluna PGID na saída do comando ps. A PID de -1 é especial, que indica todos osprocessos exceto o processo de se matar e init.killall:$ killall

- mata um proceso pelo nome.

Curso de Certificação Linux LPI

Page 26: Curso de Certificação Linux LPI - Terminal Root

Obs.:Coletado de diversos lugares e resumido.

Curso Certificação Linux LPI-1: Sistema de Boot, Shutdown e Runlevels

Em informática, boot é o termo em inglês para o processo de iniciação do computador que carrega o sistema operacional quando amáquina é ligada.A solução para o paradoxo está na utilização de um pequeno e especial programa, chamado sistema de iniciação, bootloader ou bootstrap.O pequeno programa normalmente não é o sistema operacional, mas apenas um segundo estágio do sistema deinicialização, assim como o Lilo ou o Grub. Ele será então capaz de carregar o sistema operacional apropriado, e finalmente transferir aexecução para ele.

Quando um sistema efetua boot pela primeira vez, o processador executa um código em um local conhecido. Em umComputador Pessoal (PC), esse local é o Sistema Básico de Entrada/Saída (BIOS), que está armazenado na memória flash, naplaca-mãe.O estágio de inicialização do sistema depende do hardware no qual o Linux está efetuando boot. Em uma plataformaintegrada, um ambiente de autoinicialização é utilizado quando o sistema é ligado ou reconfigurado.O loader de boot primário,que reside no MBR, é uma imagem de 512 bytes contendo o código do programa e uma pequena tabela de partição.

O loader de boot secundário, ou de segundo estágio, pode ser chamado de loader de kernel. Neste estágio, sua tarefa é carregar o kernelLinux e o disco RAM inicial opcional.Com a imagem de kernel na memória e o controle fornecido no loader de boot de estágio 2, o estágiodo kernel começa. A imagem do kernel não é bem um kernel executável, mas uma imagem de kernel compactada. Em geral é uma zImage(imagem compactada, com menos de 512KB) ou uma bzImage (imagem compactada grande, com mais de 512KB), previamentecompactada com zlib.

Curso de Certificação Linux LPI

Page 27: Curso de Certificação Linux LPI - Terminal Root

Após executar boot e inicializado, o kernel inicia o aplicativo do primeiro espaço do usuário. Ele é o primeiro programa chamado,compilado com a biblioteca C padrão. Até este momento no processo, nenhum aplicativo C padrão foi executado.

Runlevels (Níveis de Execução)

Níveis de execução definem quais tarefas podem ser realizadas no estado (ou nível de execução) atual de um sistema Linux. .Além dobásico, o uso de níveis de execução pode ser diferentes nas distribuições.

Tablela 1. Níveis de execução básicos do Linux

Nível Propósito0 Encerrar (ou parar) o sistema1 Modo de usuário único; geralmente com os alias s ou S2 Modo de multiusuário sem rede3 Modo de multiusuário com rede4 Não Utilizado5 Modo de multiusuário com rede e com o X Window System6 Reinicializar o sistema

A distribuição Slackware usa o nível de execução 4 em vez do 5 para um sistema completo executando X Window system. Debian ederivados, como Ubuntu, usam um único nível de execução para o modo de multiusuário, geralmente o nível 2. Consulte a documentaçãopara sua distribuição.

Para alterar o Runlevel de inicialização do seu Linux, vc pode alterar o arquivo /etc/inittab:# vi /etc/inittab

Exemplo abaixo, corresponde a linha em vermelho, o número 2 é o definido:

# /etc/inittab: init(8) configuration.# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.id:2:initdefault:

# Boot-time system configuration/initialization script.# This is run first except when booting in emergency (-b) mode.si::sysinit:/etc/init.d/rcS

# What to do in single-user mode.~~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change# of runlevel.## Runlevel 0 is halt.# Runlevel 1 is single-user.# Runlevels 2-5 are multi-user.# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0l1:1:wait:/etc/init.d/rc 1

Ou usando um dos comando abaixo(lembrando que para todos esses procedimentos deverá ser o super-usuário):

# init 5

Ou

# telinit 5

Personalizando o processo de inicialização

O Debian não utiliza o diretório rc.local no estilo BSD para personalizar o processo de inicialização; ao invés disso ele fornece o seguintemecanismo de personalização.

Suponha que um sistema precisa executar o script foo na inicialização da máquina ou ao entrar em um nível de execução (System V) emespecifíco. O administrador do sistema deverá então :

Colocar o script foo dentro do diretório /etc/init.d/.

Executar o comando Debian update-rc.d com os argumentos apropriados para criar as ligações entre os diretórios (especificados nalinha de comando) rc?.d e /etc/init.d/foo. Aqui, ? é um número de 0 a 6 que corresponde a um dos níveis de execução System V.

Reiniciar o sistema.

O comando update-rc.d criará as ligações entre os arquivos nos diretórios rc?.d e o script em /etc/init.d/. Cada ligação iniciará com um `S'ou um `K', seguido por um número, seguido pelo nome do script. Quando o sistema entra em um nível de execução N, scripts que iniciamcom `K' em /etc/rcN.d/ são executados com stop como seu argumento, seguido por aqueles começando com `S' em /etc/rcN.d com start

Curso de Certificação Linux LPI

Page 28: Curso de Certificação Linux LPI - Terminal Root

como seu argumento.

Alguém poderia, por exemplo, fazer com que o script foo seja executado na inicialização do sistema colocando-o em /etc/init.d/ einstalando as ligações com o comando update-rc.d foo defaults 19. O argumento defaults se refere aos níveis de execução padrões, que sãodo nível 2 até o nível 5. O argumento 19 assegura que foo seja chamado antes de quaisquer scripts contendo números 20 ou superiores.

O Comando Shutdown

Desliga/reinicia o computador imediatamente ou após determinado tempo (programável) de forma segura. Todos os usuários do sistemasão avisados que o computador será desligado . Este comando somente pode ser executado pelo usuário root ou quando é usada a opção -apelos usuários cadastrados no arquivo /etc/shutdown.allow que estejam logados no console virtual do sistema.

shutdown [opções] [hora] [mensagem]

hora Momento que o computador será desligado. Você pode usar HH:MM para definir a hora e minuto, MM para definir minutos, SS paradefinir após quantos segundos, ou now para imediatamente (equivalente a 0).

O shutdown criará o arquivo /etc/nologin para não permitir que novos usuários façam login no sistema (com excessão do root). Estearquivo é removido caso a execução do shutdown seja cancelada (opção -c) ou após o sistema ser reiniciado.

mensagem Mensagem que será mostrada a todos os usuários alertando sobre o reinicio/desligamento do sistema. opções

-h Inicia o processo para desligamento do computador.-r Reinicia o sistema-c Cancela a execução do shutdown. Você pode acrescentar uma mensagem avisando aos usuários sobre o fato.-a Permite que os nomes de usuários contidos no arquivo /etc/shutdown.allow possam utilizar o shutdown parareinicializar/desligar o sistema. Deve ser colocado um nome de usuário por linha. O limite máximo de usuários neste arquivo éde 32.

Este arquivo é útil quando o shutdown é usado para controlar o pressionamento das teclas CTRL ALT DEL no /etc/inittab.

-k Simula o desligamento/reinicio do sistema, enviando mensagem aos usuários.-f Não executa a checagem do sistema de arquivos durante a inicialização do sistema. Este processo é feito gravando-se umarquivo /fastboot que é interpretado pelos scripts responsáveis pela execução do fsck durante a inicialização do sistema.-F

Curso Certificação Linux LPI-1: Trabalhando com Permissões

Cada arquivo no Linux tem o definido controle de acesso.Este controle é definidopor três classes:

-Permissões de usuário: Dono do arquivo(quem o criou).-Permissões de grupo: grupo que ao qual ele pertence.-Permissões de outros usuários: outros(não dono e outro grupo).

E para cada classe há 3 tipos de acesso:

-leitura(r)-escrita(w)-execução(x)

Curso de Certificação Linux LPI

Page 29: Curso de Certificação Linux LPI - Terminal Root

Bits especiais.

Os 3 primeiros bits da esquerda para direita são bits de atributos especiais:-SUID (Set User ID) - afeta somente arquivos executáveis-SGID (Set Group ID) - afeta execução de programas do grupo do dono.-Sticky (Stick Bit) - permance na memória mesmo depois de terminado(Colado na memória).

Como os bits de permissão especiais são utilizados com pouca frequência, e sob condições especiais, eles são representados pela letra (s)no lugar de (x) de execução para os bits SUID e SGID nas classes de Dono do arquivo e Grupo, e (t) no lugar de (x) para bit sticky na classede Outros.

Quando novos arquivos são criados no sistema, eles são criados com permissões definidas gravadas no perfil de cada usuário econfiguradas pelo comando umask.O comando umask mostra a máscara das permissões quando os arquivos são criados e aceira como argumento um número de 3 dígitospara configurar as permissões.No Linux, as permissões padrão para criação de:

-arquivos = 666 (rw-rw-rw).-diretórios = 777 (drwxrwxrwx).

Depois de definida a máscara de criação dos arquivos, ela deverá ser subtraída das permissões padrão, exemplo:

Curso de Certificação Linux LPI

Page 30: Curso de Certificação Linux LPI - Terminal Root

$ umask 27

O número 27 deverá ser lido como 027, e define od bits da máscara como:

-000 para Dono do arquivo.-010 para Grupo-111 para Outros.

O comando chmod

chmod (abreviação de change mode, em português: alterar modo) é um comando do Unix usado para alterar permissões de arquivos ediretórios (pastas). Sua sintaxe é a seguinte:

$ chmod [opções] modo[,modo] arquivo1 [arquivo2 ...]

Para a representação das permissões através de letras, você poderá utilizar:

Exemplo:

O comando chown

O comando chown da shell de um sistema operacional do tipo Unix (como é o caso o GNU/Linux) é usado para alterar o dono de umdeterminado arquivo.Uso:

chown [opções] usuário arquivo

Exemplos:

# chown root /var/run/httpd.pid# chown marcos:linux strace.log# chown nobody:nogroup /tmp /var/tmp# chown :512 /home# chown -R usuario:grupo

Os comandos chattr, lsattr e ln

chattr

Esse comando modifica os atributos de arquivos/diretórios:

chattr [opção] [atributo] [arquivo/diretório]

lsattr

Comando que lista os atributos atribuídos a um arquivo/diretório:

lsattr [opção] [arquivo/diretório]

O comando ln

O comando ln permite criar links. Existem dois tipos de links suportados pelo Linux, os hard links(links físicos) e os links simbólicos. Oslinks simbólicos têm uma função parecida com os atalhos do Windows, eles apontam para um arquivo, mas se o arquivo é movido paraoutro diretório o link fica quebrado. Os hard links(links físicos) são semelhantes aos atalhos do OS/2 da IBM, eles são mais intimamenteligados ao arquivo e são alterados junto com ele. Se o arquivo muda de lugar, o link é automaticamente atualizado.

O comando ln dado sem argumentos cria um hard link, como em:

$ ln /home/marcos/arquivo.txt arquivo

Curso de Certificação Linux LPI

Page 31: Curso de Certificação Linux LPI - Terminal Root

Onde será criado um link chamado "arquivo" no diretório corrente, que apontará para o arquivo.txt dentro do diretório /home/marcos

Para criar um link simbólico, basta acrescentar o argumento "-s", como em:

$ ln -s /home/marcos/arquivo.txt arquivo

-s : Cria um link simbólico. O padrão do comando ln são links físicos. -f : Força a criação de um link mesmo que este já exista. -i : Exibe número de identificação.

Curso Certificação Linux LPI-1: Instalando e Compilando Programas a partir do código fonte

A Free Software Foundation (FSF, Fundação para o Software Livre) é uma organização sem fins lucrativos, fundada em 04 de Outubro de1985 por Richard Stallman e que se dedica a eliminação de restrições sobre a cópia, redistribuição, estudo e modificação de programas decomputadores – bandeiras do movimento do software livre, em essência. Faz isso promovendo o desenvolvimento e o uso de software livreem todas as áreas da computação mas, particularmente, ajudando a desenvolver o sistema operacional GNU e suas ferramentas.

Os pacotes com código fonte, distribuídos na forma dos famosos pacotes .tar.gz ou .tar.bz2, são o formatomais universal, porém ao mesmo tempo o mais complicado de instalar, que você deixa como um último recursoa lançar mão quando não encontrar um pacote atualizado do programa desejado.

Para instalá-los, é necessário, em primeiro lugar, ter instalado um conjunto de compiladores, incluindo o gcc eg++, ferramentas como o make, autoconf, diff e patch, e bibliotecas, como o binutils-dev, libc6-dev. Este "kitbásico" é instalado ao marcar a categoria "desenvolvimento" (ou development) durante a instalação de váriasdistribuições. No caso do Kurumin, você tem pré-instalados os compiladores mais usados e você pode instalaroutros necessários através do Synaptic, ou manualmente através do apt-get.

Uma dica é que todos os pacotes cujo nome termina com "-dev" são justamente bibliotecas de desenvolvimento,que podem ser necessárias ao compilar determinados programas. Quando o instalador reclama da falta debibliotecas ou arquivos do X, provavelmente ele está dando falta do pacote "xlibs-dev", quando reclamar dafalta de arquivos do KDE, provavelmente está pedindo o pacote "libqt3-dev" e assim por diante. A maiordificuldade em compilar programas complexos está justamente em localizar e instalar o conjunto de bibliotecasde que ele precisa.

Se os pré-requisitos estiverem em ordem, a compilação em si é feita descompactado o arquivo (usando ocomando "tar -zxvf pacote.tar.gz" ou "tar -jxvf pacote.tar.bz2" ou descompactando pelo próprio Konqueror),

acessando a pasta que será criada e rodando três comandos básicos:

$ ./configure

$ make

# make install

O "./configure" executa um script (dentro da pasta do programa), que verifica o sistema, em busca dos componentes de que precisa. Eleavisa caso algo esteja faltando, como neste erro que apareceu ao tentar compilar o Qemu:

ERROR: QEMU requires SDL or Cocoa for graphical outputTo build QEMU with graphical output configure with --disable-gfx-checkNote that this will disable all output from the virtual graphics card.

Neste exemplo, está faltando a biblioteca de desenvolvimento do SDL. Quase sempre, os pacotes que contêm bibliotecas começam com"lib" e os pacotes de desenvolvimento terminam com "-dev". Procurando no http://www.debian.org por um pacote que comece com "lib",termine com "-dev" e tenha "sdl" no meio, você chega ao "libsdl1.2-dev", que é justamente o pacote que estava faltando neste caso :). Emcasos onde a solução parecer mais difícil, a melhor opção é fazer uma busca no Google, usando parte da mensagem de erro.

O "make" cuida do trabalho pesado, fazendo a compilação propriamente dita. Ele se baseia nas informações deixadas pelo "./configure"para encontrar os componentes de que precisa.

Finalmente, temos o "make install", que finalmente instala o programa, copiando os arquivos gerados pelo make para as pastas corretasdo sistema. Ao contrário dos dois primeiros comandos, ele precisa ser executado como root, já que envolve fazer alterações no sistema.

Curso de Certificação Linux LPI

Page 32: Curso de Certificação Linux LPI - Terminal Root

Apesar destes três comandos serem um padrão adotado na maioria dos pacotes, eles não são necessariamente uma regra. Muitosprogramas usam sistemas simplificados de instalação ou mesmo scripts próprios, por isso é sempre bom dar uma olhada no arquivo"INSTALL" ou "README" dentro da pasta, que explica os passos necessários. Em geral, os programas instalados a partir dos fontes nãocriam os ícones no menu. Você precisa chamar o programa via linha de comando ou criar os ícones manualmente.

Nas distribuições derivadas do Debian, uma dica com relação às dependências e bibliotecas é usar o auto-apt, um programa que verifica asmensagens de erro geradas durante a compilação e procura instalar via apt-get os componentes necessários para concluir a compilação.Ele não é perfeito: muitas vezes se perde ou tenta instalar pacotes desnecessários, mas realmente ajuda em muitos casos. Você podeinstalá-lo via apt-get:

# apt-get install auto-apt

Depois de instalado, execute (nesta ordem) os comandos "auto-apt update", "auto-apt updatedb" e "auto-apt update-local", que geram abase de dados que ele usa para fazer seu trabalho. Depois de tudo pronto, você passa a executar os comandos de compilação dos pacotesatravés dele, usando o comando "auto-apt run" seguido pelo comando, como em:

# auto-apt run ./configure

# auto-apt run make

O comando ldconfig

Cria, atualiza e remove as ligações necessárias e cache (para uso pelo linker de tempo de execução, ld.so) à mais recente partilhadabibliotecas encontrado nos diretórios especificados na linha de comando, em o arquivo / etc / ld.so.conf, e nos diretórios confiáveis (/usr/lib e /lib). ldconfig verifica os nomes de cabeçalho e arquivo das bibliotecas que encontra ao determinar quais versões devem ter suasligações atualizado. ldconfig ignora links simbólicos ao procurar por bibliotecas.

ldconfig [OPTION...]

O comando ldd

Imprime as bibliotecas compartilhadas necessárias por cada programa ou compartilhado biblioteca especificada na linha de comando.

Extraído de:http://www.fsf.org/http://www.hardware.com.brhttp://www.linuxmanpages.com/

Veja o Manual do Linux em uma página de Carlos Morimoto:

Manual linux de_uma_pagina from Marcos da Boa Morte

Curso Certificação Linux LPI-1: Gerenciamento de pacotes no Debian

Curso de Certificação Linux LPI

Page 33: Curso de Certificação Linux LPI - Terminal Root

E ae galera, dessa vez vou mostrar umas imagens, um frame e link da documentação original e um slide para facilitar oentendimento, pois esse assunto "bomba" na internet, segue:

Curso de Certificação Linux LPI

Page 34: Curso de Certificação Linux LPI - Terminal Root

« ‹ › »Gerenciamento de pacotes no Debian from Marcos da Boa Morte

aptana aptitudeapt-cache aptitude-create-state-bundleapt-cdrom aptitude-cursesapt-config aptitude-run-state-bundleaptdcon apt-keyapt-extracttemplates apt-listchangesapt-ftparchive apt-markapt-get apt-sortpkgs

Documentação original:

[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10] [ próximo ]

Como usar o APTCapítulo 1 - Introdução

No início havia o .tar.gz. Os usuários tinham de penar para compilarcada programa usado em seu sistema GNU/Linux, ou outro qualquer.Quando o Debian foi criado, sentiu-se a necessidade de um sistema degerenciamento de pacotes instalados no sistema. Deu-se a essesistema o nome de dpkg. Assim surgiu o famoso `pacote'. Logo após aRed Hat resolveu criar seu conhecido sistema rpm.

Link: Debian

Curso Certificação Linux LPI-1: Quotas de Disco

No Linux existe a possibilidade de habilitarmos quotas de disco para gerenciarmos melhor o uso do espaço disponível emdisco.Este recurso é especialmente importante em ambientes multi-usuários, servidores de Web, servidores de arquivos,servidores de e-mail, etc.

No gerenciamento de cotas é possível definirmos a quantidade de espaço em disco para cada usuário ou grupo de usuários.Épreciso habilitar o gerenciamento de quotas antes de utilizarmos este recurso.Também é preciso que o suporte a quotas estejacompilado no Kernel.

Curso de Certificação Linux LPI

Page 35: Curso de Certificação Linux LPI - Terminal Root

1-Edite o arquivo /etc/fstab e adicione o gerenciamento de cota para usuário (usrquota) e para grupo (grpquota) no dispositivo desejado.

# vi /etc/fstab

Acrescentar "usrquota" e "gprquota":

/dev/hda6 /home ext3 defaults,usrquota,grpquota 1 2

2-Crie o arquivo quota.user e quota.group no diretório /home e configure as permissões de leitura e escrita para o root.Estes doisarquivos serão os bancos de dados para quotas de usuário e grupo respectivamente.

Cria os arquivos de quota:

# touch /home/quota.user # touch /home/quota.group

Altera as permissões:

# chmod 600 /home/quota.user # chmod 600 /home/quota.group

3-Execute o comando quota-check para iniciar o banco de dados recém criado, e verifique se o banco de dados foi iniciado.Os arquivosquota.user e quota.group não devem ter tamanho zero.

# ls -lga /home

4-Habilite o serviço de quotas:

# quotaon -a

5-Tenha certeza de que o serviço de quotas é habilitado no boot.Se não existir o arquivo /etc/rc.d/quotas, crie um arquivo de script:

# vi /etc/rc.d/quotas #!/bin/bash /sbin/quotaon -avug

Altere as permissões para 755:

# chmod 755 /etc/rc.d/quotas

6-Crie o link simbólico para o arquivo de quotas para o runlevel 3 e runlevel 5:

# ln -s /etc/rc.d/quotas /etc/rc.d/rc3.d/S20quotas # ln -s /etc/rc.d/quotas /etc/rc.d/rc5.d/S20quotas

7-Faça checagem do sistema de quotas uma vez por semana colocando o comando quotacheck no cron do root:

# crontab -e 0 3 * * 0 /sbin/quotacheck -avug

Uma vez feitos estes passos o sistema de quotas poderá ser utilizado.

- user hard limit (limite físico), é a quantidade total de espaço em disco que um usuário pode ter.

- user soft limits (limite leve), funciona como uma área de aviso, quando o usuário alcança este limite o sistema avisa aousuário que o espaço físico está acabando.

- group hard limit (limite físico por grupo)

- group soft limit , também área de aviso.

Curso de Certificação Linux LPI

Page 36: Curso de Certificação Linux LPI - Terminal Root

- grace período (Período de Graça), pode-se configurar um período para que o usuário ou grupo que tenha atingido o limiteleve possa apagar alguns arquivos e ficar dentro do estabelecido.Este limite pode ser em minutos, horas, dias, semanas e atémeses.

Comandos:

quota:

# quota [opções] usuário/grupo

Ex.:

# quota -v marcos

O usuário marcos está usando 18320 blocos.O limite leve são 19000 blocos e o físico 20000 blocos.

quotaon:

# quotaon [opções] [dispositivos]

Ex.(habilita quotas de usuários e grupos para todos os dispositivos):

# quotaon -avug

quotaoff:

# quotaoff [opções] [dispositivo]

Ex.(desabilita o gerenciamento de quotas num determinado dispositivo.):

quotaon:

# quotaoff -gu /dev/hda6

quotacheck(faz uma varredura em determinado dispositivo e constrói os arquivos de banco de dados de quotas):

# quotacheck [opções] [dispositivo]

edquota(Este comando edita quotas para usuários e grupos):

# edquota [opções] usuário/grupo

repquota(cria um relatório das quotas e utilização do disco dos usuários):

# repquota [opções] [dispositivo]

Curso Certificação Linux LPI-1: grep e sed

O comando grep

Curso de Certificação Linux LPI

Page 37: Curso de Certificação Linux LPI - Terminal Root

grep é um utilitário de linha de comando para procurar conjuntos de dados de texto simples para as linhas que correspondema uma expressão regular.

grep [OPÇÕES] expressão_regular arquivo

Exs.:1-Procura a palavra marcos no arquivo /etc/passwd:$ grep marcos /et/passwd

2-Procura todas as linhas começadas pela letra u no arquivo /etc/passwd:$ grep '^u' /et/passwd

3-Procura todas as linhas terminadas pela palavra false no arquivo /etc/passwd:$ grep 'false$' /et/passwd

4-Procura todas as linhas começadas pelas vogais no arquivo /etc/passwd:$ grep '^[aeiou]' /et/passwd

5-Procura todas as linhas começadas por qualquer caracter e segundo caracter seja qualquer vogal no arquivo /etc/passwd:$ grep '^.[aeiou]' /et/passwd

6-Procura todas as linhas que contenham uma sequência de 4 números consecutivos:$ grep '[0-9][0-9][0-9][0-9]' /et/passwd

O comando sed

sed é um editor de textos simples utilizado para fazer pequenas transformações no conteúdo dos arquivos.

$ sed [opções] {script} [arquivo]

Exs.:

1-Troca todas ocorrências da palavra marcos pela palavra pinguim:$ sed 's/marcos/pinguim/' arquivo.txt

2-Troca todas ocorrências da palavra marcos pela palavra pinguim e envia as mudanças para um novo arquivo:$ sed 's/marcos/pinguim/' arquivo.txt > novoarquivo.txt

Sugestões para estudos avançados:Regex(grep, egrep...)Sed

Curso Certificação Linux LPI-102: Administração do Sistema

Em um sistema multi-usuário, é necessário existir mecanismos para proteger os usuários, de forma que seus arquivosprivativos fiquem seguros, inacessíveis aos outros. Outro aspecto é em relação aos recursos do sistema reservados: não deveser possível a um usuário criar arquivos que ocupem todo o espaço do disco, por exemplo, e assim, indiretamente, proibirtodos os outros usuários de salvarem seus próprios arquivos. Atingimos esse objetivo criando contas, que representam todos osrecursos e informações pertencentes a um determinado usuário. A origem do nome conta, depende muito da história dacomputação, quando o espaço em disco e tempo de uso da máquina tinha que ser cobrado de acordo com o seu uso, de formasemelhante a uma conta telefõnica.

Curso de Certificação Linux LPI

Page 38: Curso de Certificação Linux LPI - Terminal Root

A cada usuário é destinado um nome de login e senha, como já vimos anteriormente, bem como um UID, GID, nome do diretório home eshell inicial (veja imagem do arquivo /etc/passwd). Maiores informações podem ser obtidas com o comando man 5 passwd.

Adicionar usuários:# useradd nome_do_usuario

Modificar dados de um usuário:# usermod [opções] nome_do_usuario

Deletar usuários(a opção -r remove também a pasta do usuário):# userdel -r nome_do_usuario

O comando chage:

Lida com a data de expiração das contas de usuário.Essa data é gravada no arquivo /etc/shadow.

Uso:# chage [opções] nome_do_usuario

Ex.:(deve-se escrever em formato de data americano mês/dia/ano [mm/dd/aaaa])# chage -E 12/31/2012 nome_do_usuario

Mais sobre Admnistração do Sistema (Contas de Usuários)

+ O diretório'/etc/skel é utilizado para fornecer a estrutura básica do diretório home do usuário.Nele contém os arquivos:

/etc/skel$ ls -a. .. .bash_logout .bashrc .profile

+ Durante o processo de logon de um usuário, quando o shel inicia, ele executa o script /etc/profile.

+ O bash também procura pelo arquivo /etc/bashrc que também tem uma função parecida com o profile, mas o bashrc é executado todasas vezes que o bash é executado.

+ Existem agendadores de tarefas um dele é o cron(imagem)

Mais informações sobre o cron acesse esse link aqui: Como utilizar o Crontab

Curso Certificação Linux LPI-102: Backup, compactação e descompactação

A compressão de dados é o ato de reduzir o espaço ocupado por dados num determinado dispositivo. Essa operação é realizada

Curso de Certificação Linux LPI

Page 39: Curso de Certificação Linux LPI - Terminal Root

através de diversos algoritmos de compressão, reduzindo a quantidade de Bytes para representar um dado, sendo esse dadouma imagem, um texto, ou um arquivo (ficheiro) qualquer.

Comprimir dados destina-se também a retirar a redundância, baseando-se que muitos dados contêm informações redundantesque podem ou precisam ser eliminadas de alguma forma. Essa forma é através de uma regra, chamada de código ou protocolo,que, quando seguida, elimina os bits redundantes de informações, de modo a diminuir seu tamanho nos ficheiros. Por exemplo,a sequência "AAAAAA" que ocupa 6 bytes, poderia ser representada pela sequência "6A", que ocupa 2 bytes, economizando 67%de espaço.

Alguns compactadores de arquivos:

TAR

MIME: application/x-tar

TAR ou tar (abreviatura de Tape ARchive), é um formato de arquivamento de arquivos (ficheiros). Apesar do nome "tar" serderivado de "tape archive", o seu uso não se restringe a fitas magnéticas. Ele se tornou largamente usado para armazenarvários arquivos em um único, preservando informações como datas e permissões. Normalmente é produzido pelo comando"tar".

Algumas das opções mais frequentes:

-c - cria um novo arquivo tar; -M - cria, lista ou extrai um arquivo multivolume; -p - mantém as permissões originais do(s) arquivo(s); -r - acrescenta arquivos a um arquivo tar; -t - exibe o conteúdo de um arquivo tar; -v - exibe detalhes da operação; -w - pede confirmação antes de cada ação; -x - extrai arquivos de um arquivo tar; -z - comprime ou extrai arquivos tar resultante com o gzip; -j - comprime ou extrai arquivos tar resultante com o bz2; -f - especifica o arquivo tar a ser usado; -C - especifica o diretório dos arquivos a serem armazenados.

GZIP

Gzip é a abreviação de GNU zip, um Software Livre de compressão sem perda de dados, criado por Jean-loup Gailly e MarkAdler. O programa é baseado no algoritmo DEFLATE. A extensão gerada pelo gzip é o .gz, e seu formato contém apenas umarquivo comprimido. Em sistemas UNIX é comum gerar um arquivo contendo diversos outros arquivos com o programa tar, edepois comprimi-lo com o gzip, gerando um arquivo .tar.gz.

Não confundir com o formato ZIP.

TAR.BZ2

Formato de compactação de arquivos, muito utilizado em sistemas Unix-Like.

COMPACTAÇÃO

Compactando arquivos .tar:

$ tar -cf arquivo.tar [arquivo ou pasta]

Criando arquivos gzip(depois de ter criado o tar primeiro):

$ gzip arquivo.tar

Curso de Certificação Linux LPI

Page 40: Curso de Certificação Linux LPI - Terminal Root

Compactando arquivos tar.gz (TAR com gzip de uma só vez):

$ tar -zcvf arquivos.tar.gz [arquivo ou pasta]

Compactando arquivos no formato tar.bz2:

$ tar -jcvf arquivos.tar.bz2 [arquivo ou pasta]

Compactando arquivos tar de uma outra forma:

$ tar -c [arquivo ou pasta] > arquivo.tar

Compactando outros formatos (rar, zip e afins):

Instale o suporte:

# apt-get install rar unrar p7zip

$ rar a arquivo.rar [arquivo ou pasta]

$ zip -r arquivo.zip [arquivo ou pasta]

DESCOMPACTAÇÃO

Descompactando arquivos .tar:

$ tar -xf arquivo.tar [arquivo ou pasta]

Descompactando arquivos gzip(depois de ter criado o tar primeiro):

$ gzip -d arquivo.tar.gz

Descompactando arquivos tar.gz (TAR com gzip de uma só vez):

$ tar -zxvf arquivos.tar.gz

Descompactando arquivos no formato tar.bz2:

$ tar -jxvf arquivos.tar.bz2 [arquivo ou pasta]

Descompactando outros formatos(rar, zip e afins):

Instale o suporte:

# apt-get install rar unrar p7zip

$ rar -e arquivo.rar

ou$ unrar x arquivo.rar

$ unzip arquivo.zip

O comando dd (para Backup)

O comando dd é um clássico dos ambientes Unix-Like, com ele você pode fazer uma cópia exata de um arquivo, ou seja umacópia bit a bit. Sintaxe básica:

dd if=origem of=destino

Exemplos:

Cópia do HD para um arquivo:

# dd if=/dev/sda of=~/backup_hd.img

Será feita uma cópia exata do HD dentro do diretório do root com o nome "backup_hd.img". Se quiser restaurar o "backp_hd.img" no/dev/sda2 (lembre que o sda2 deve ter pelo menos o mesmo tamanho do arquivo "backup.hd" se não os resultados poderão serdesastrosos):

Curso de Certificação Linux LPI

Page 41: Curso de Certificação Linux LPI - Terminal Root

# dd if=backup_hd.img of=/dev/sda2

Cópia de partição para o partição:

# dd if=/dev/sda9 of=/dev/sda11

Será feita cópia da partição /dev/sda9 para a /dev/sda11.

Fazendo uma cópia do HD para um arquivo compactado:

# dd if=/dev/sda1 | gzip > backup_hd.img.gz

e para descompactar:

# gzip -d -c backup_hd.img.gz | dd of=/dev/sda2

O comando acima está descompactando o arquivo beckup_hd.img.gz no HD em /dev/sda2.

Criar uma imagem ISO:

# dd if=diretorio of=iso_do_diretorio.iso

Para visualizar progresso de cópia de arquivos, vá em outro terminal e execute:

$ watch df -h

Para converter todos as letras maiúsculas de um documento para letras minúsculas:

$ dd if=ficheiro1 of=ficheiro2 conv=lcase

Se quisermos converter todas as letras do ficheiro2 para maiúsculas:

$ dd if=ficheiro2 of=ficheiro3 conv=ucase

Para zerar (formatar) o seu HD (use com cuidado!):

# dd if=/dev/zero of=/dev/hda

Gerar senhas de forma (pseudo) aleatória:

$ dd if=/dev/random bs=2 count=6 | base64 -r2KWFW83e9nTniVR6+0 registros de entrada6+0 registros de saída12 bytes (12 B) copiados, 0,000100641 s, 119 kB/s

Para automatizar tarefas, você pode utilizar o Cron e Crontab, veja esse post para mais informações:Como utilizar o Crontab

Curso Certificação Linux LPI-102: Kernel do Linux

O núcleo do Linux (Linux Kernel) forma a estrutura base do sistema operacional GNU/Linux, que é um sistema operacional tipo unix. Onúcleo do Linux é um dos exemplos mais proeminentes de software livre, pois pode prover alicerce para o desenvolvimento e execução deoutros softwares livres.

O núcleo Linux é distribuído sob a licença GNU General Public License versão 2 (GPLv2), sendo desenvolvido por colaboradores em todo omundo. O desenvolvimento ocorre a partir da lista de e-mail do núcleo Linux (Linux kernel mailing list).

Curso de Certificação Linux LPI

Page 42: Curso de Certificação Linux LPI - Terminal Root

O Linux foi concebido pelo estudante do Departamento de Ciência da Computação da Universidade de Helsinki na Finlândia, LinusTorvalds com ajuda de vários programadores voluntários por meio da Usenet (antecessora da Internet) em 1991.

Mais informações em: WikipédiaSuporte aos dispositivos de hardware:

-Códigos dos drivers dos dispositivos podem ser carregados no próprio coração do núcleo(monolítico, rápido e flexível)-Códigos dos drivers dos dispositivos podem ser carregados separadamente(os Módulos)("modulo.o", depende da versão do Kernel)-O número de versão menor (o segundo componente) par indicavam uma série estável: 1.0.x, 1.2.x, 2.0.x, 2.2.x e 2.4.x;

Os módulos são dispnibilizados em /lib/modules/versao-do-kernel

Para visualizar a versão no Kernel, alguns comandos:

Padrão:# uname -r

Visualiza com distro:# uname -a

Visualização mais completa:# cat /proc/version

Outar forma no Debian, por exemplo:# cat /etc/issue

Para listar os módulos disponíveis e utilizados:# lsmod

Ou# cat cat /proc/modules

Para carregar um módulo para dentro do Kernel, se não for informado o caminho, o mesmo será procurado no arquivo /etc/modules.conf# insmod [opções] [módulo]

Para remover ou descarregar um módulo do Kernel(quando não estiver em uso):# rmmod [opções] [módulo]

Para obter informações sobre determinado módulo:# modinfo [opções] [módulo]

O MAIS USADO DE TODOS, usado para carregar e descarregar os módulos de forma inteligente do Kernel:# modprobe [opções] [módulo] [parâmetros do módulo]

Cria uma lista de dependências entre módulos# depmode [opções]

Para Instalar um novo Kernel, consulte esse link:Clique aqui - Como Compilar o Kernel

Curso Certificação Linux LPI-102: Fundamentos e Serviços de Rede - TCP-IPv4

O TCP/IP é um conjunto de protocolos de comunicação entre computadores em rede (também chamado de pilha deprotocolos TCP/IP). Seu nome vem de dois protocolos: o TCP (Transmission Control Protocol - Protocolo de Controle deTransmissão) e o IP (Internet Protocol - Protocolo de Interconexão). O endereço IP é escrito na notação decimal com 4 posiçõe de 8 bitscada, totalizando 32 bits.Cada parte do endereço pode irde 0 a 255 na notação decimal.

x.y.z.k192.168.1.1

O protocolo perimite que uma rede seja dividida em classes e subclasses indicam onde começa e termina uma rede e precisam de dois IPspara marcar o seu início e final.Essa divisão é feita utilizando a máscara de rede.

IP: 192.168.1.1Subrede: 255.255.255.0

Curso de Certificação Linux LPI

Page 43: Curso de Certificação Linux LPI - Terminal Root

Os bits de valor 1 na máscara iddicam quais bits do endereço serão usados como endereçamento de rede.O valor 0 indica os bits queserão usados como endereçamento de máquinas.Veja o exemplo abaixo(192.168.1.1):

O modelo TCP/IP tem 5 classes de endereços definidas pelas letras: A, B, C, D e E.

Classe A:

Classe B:

Classe C:

Classe D e Classe E:

Existem alguns endereços IP especiais que são reservados para funções específicas que não podem ser utilizados como endereços deuma máquina da rede.A classe A 127.0.0.1 é utilizada como referência a própria máquina.Normalmente o endereço 127.0.0.1 é associadoao nome localhost.

Curso de Certificação Linux LPI

Page 44: Curso de Certificação Linux LPI - Terminal Root

O modelo inicial do TCP/IP é baseado em 4 níveis: Host/rede; Inter-rede; Transporte; e Aplicação. Surgiu, então, um modelo híbrido,com 5 camadas, que retira o excesso do modelo OSI e melhora o modelo TCP/IP: Física; Enlace; Rede; Transporte; e Aplicação.

As aplicações fazem acesso à camada de transporte através de portas.Elas podem ser vistas como canais de comunicações.Cada porta éreferênciada como número inteiro, que a identifica e a aplicação que ela dá suporte.Este número é um valo de 16-bit, que vai do 1 ao65535 em decimal. Os pacotes TCP e UDP contêm em seu cabeçalho informações como endereço IP do remetente, porta de origem, endereço IP e porta dedestino.Cada serviço utiliaz uma única porta. O snúmeros de 1 a 1024 sõ chamados de portas privilegiadas porque os serviços oferecidos através delas executam com autoridade desuper-usuário. O arquivo SERVICES definem os serviços e as portas conhecidas pelo sistema Linux: # cat /etc/services

Curso Certificação Linux LPI-102: Utilitários e Ferramentas do TCP/IP

Principais ferramentas do TCP/IP no Linux:

Curso de Certificação Linux LPI

Page 45: Curso de Certificação Linux LPI - Terminal Root

digpingtraceroutewhoistelnetftphost

Dig:

O comando dig tem como função primária retornar o dns da rede, mas também pode ser usado para pegar o ip de um host ou retornar onome do host de um ip dado.

# dig [endereço]

exemplo:

# dig www.marcospinguim.blogspot.com

; <<>> DiG 9.7.3 <<>> www.marcospinguim.blogspot.com;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43684;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:;www.marcospinguim.blogspot.com. IN A

;; ANSWER SECTION:www.marcospinguim.blogspot.com. 595 IN CNAME blogspot.l.googleusercontent.com.blogspot.l.googleusercontent.com. 205 IN A 74.125.234.107blogspot.l.googleusercontent.com. 205 IN A 74.125.234.108blogspot.l.googleusercontent.com. 205 IN A 74.125.234.106

;; Query time: 362 msec;; SERVER: 10.1.1.1#53(10.1.1.1);; WHEN: Sun Mar 17 10:07:12 2013;; MSG SIZE rcvd: 139

Ping:

Ele usa o protocolo ICMP obrigatório ECHO_REQUEST datagrama de obter uma ECHO_RESPONSE ICMP de um host ou gateway.ECHO_REQUEST datagramas (pings ``'') tem um cabeçalho de IP e ICMP, seguido por um struct timeval e, em seguida, um númeroarbitrário de almofada ``'' bytes usados para preencher o pacote.

# ping [opções] [endereço(HOST ou IP)]

exemplo(a opção -c testa o número x de vezes):

# ping www.marcospinguim.blogspot.com

PING blogspot.l.googleusercontent.com (74.125.234.107) 56(84) bytes of data.64 bytes from gru03s08-in-f11.1e100.net (74.125.234.107): icmp_req=1 ttl=57 time=407 ms^C^C^C64 bytes from 74.125.234.107: icmp_req=2 ttl=57 time=803 ms

--- blogspot.l.googleusercontent.com ping statistics ---2 packets transmitted, 2 received, 0% packet loss, time 999msrtt min/avg/max/mdev = 407.638/605.599/803.561/197.963 msmarcos@debian:~$ ping -c4 www.marcospinguim.blogspot.comPING blogspot.l.googleusercontent.com (74.125.234.107) 56(84) bytes of data.64 bytes from gru03s08-in-f11.1e100.net (74.125.234.107): icmp_req=1 ttl=57 time=655 ms64 bytes from gru03s08-in-f11.1e100.net (74.125.234.107): icmp_req=2 ttl=57 time=271 ms64 bytes from gru03s08-in-f11.1e100.net (74.125.234.107): icmp_req=3 ttl=57 time=19.1 ms64 bytes from gru03s08-in-f11.1e100.net (74.125.234.107): icmp_req=4 ttl=57 time=117 ms

--- blogspot.l.googleusercontent.com ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3052msrtt min/avg/max/mdev = 19.196/266.186/655.958/242.392 ms

Traceroute:

Rastreia os rotear pacotes tomadas a partir de uma rede IP em seu caminho para um determinado host. Ele utiliza o protocolo IP tempode vida (TTL) de campo e as tentativas de obter uma resposta ICMP TIME_EXCEEDED de cada gateway ao longo do caminho para o host.

# traceroute [opções] [endereço]

exemplo:

#traceroute www.marcospinguim.blogspot.com

traceroute to www.marcospinguim.blogspot.com (74.125.234.204), 30 hops max, 60 byte packets 1 10.1.1.1 (10.1.1.1) 2.166 ms 2.645 ms 3.109 ms 2 r1-pw-aguda.ibys.com.br (201.94.192.2) 372.024 ms 372.491 ms 372.796 ms 3 192.168.23.6 (192.168.23.6) 373.232 ms 373.732 ms 375.454 ms 4 192.168.23.114 (192.168.23.114) 374.144 ms 374.629 ms 374.938 ms

Curso de Certificação Linux LPI

Page 46: Curso de Certificação Linux LPI - Terminal Root

5 198.32.122.29 (198.32.122.29) 376.465 ms 376.936 ms 377.643 ms 6 209.85.243.202 (209.85.243.202) 377.300 ms 160.056 ms 94.374 ms 7 72.14.239.184 (72.14.239.184) 25.485 ms 25.838 ms 28.137 ms 8 gru03s15-in-f12.1e100.net (74.125.234.204) 28.621 ms 28.956 ms 30.290 ms

Whois:

Whois se refere a um serviço para consultar a informação sobre um domínio de Internet, quem é o dono do domínio, quando expira odomínio, quem é o registrador do domínio, seus DNS-s. Através desta web ou de qualquer web que ofereça a busca de domínios, ou serviçowhois se pode ver via web.

# whois objeto[@servidor]

exemplo(nesse caso não retornou dados):

whois www.marcospinguim.blogspot.com

No match for "WWW.MARCOSPINGUIM.BLOGSPOT.COM".>>> Last update of whois database: Sun, 17 Mar 2013 13:17:29 UTC <<<

Telnet:

O comando telnet é usado para se comunicar com outro host usando o protocolo TELNET. Se o telnet é invocado sem o argumento host,ele entra em modo de comando, indicado por seu prompt (telnet>) Neste modo, ele aceita e executa os comandos listados abaixo. Se ele échamado com argumentos, ele executa um comando de abertura com esses argumentos.

# telnet [endereço] [porta]

exemplo(nesse caso não retornou dados):

$ telnet www.marcospinguim.blogspot.com

telnet: could not resolve www.marcospinguim.blogspot.com/telnet: Name or service not known

FTP:

Clique aqui para mais informações sobre FTP

Host:

É um utilitário simples para a realização de pesquisas de DNS. É normalmente usado para converter nomes em endereços IP evice-versa. Quando não há argumentos ou opções são dadas, anfitrião imprime um breve resumo de seus argumentos de linha de comandoe opções.

# host [opções] [endereço] [servidor]

exemplo:

$ host www.marcospinguim.blogspot.com

www.marcospinguim.blogspot.com is an alias for blogspot.l.googleusercontent.com.blogspot.l.googleusercontent.com has address 74.125.234.107blogspot.l.googleusercontent.com has address 74.125.234.108blogspot.l.googleusercontent.com has address 74.125.234.106blogspot.l.googleusercontent.com has IPv6 address 2800:3f0:4001:803::100c

Até a próxima!

Curso de Certificação Linux LPI

Page 47: Curso de Certificação Linux LPI - Terminal Root

Curso Certificação Linux LPI-102: Configurando a Rede

Várias distribuições oferecem ferramentas próprias para a configuração e carga dos recursos de rede.Entretanto algunscomandos, arquivos e conceitos são aplicáveis a todas elas.Neste tópico será abordado a configuração de uma rede TCP/IP emdispositivos ethernet.

O primeiro passo é conhecer os arquivos de configuração de rede comuns a todas as distribuições.Segue:

1-Ver o nome do sistema:

# cat /etc/hostname

2-Este arquivo faz o mapeamento entre endereços IP e nomes de máquinas de rede e é utilizado para resolução de nomes durante oprocesso de boot enquanto nenhum servidor de DNS entrou em ação.

# cat /etc/hosts

3-Este arquivo especifica o endereço IP de um ou mais servidores de DNS para resolução de nomes.

# cat /etc/resolv.conf

4-Este arquivo especifica a ordem de procura para a resolução de nomes.O sistema pode procurar os endereços IPs no arquivo /etc/hosts(hosts) e pelo serviço de DNS (bind).A opção multi on habilita mais de um IP para determinada máquina.

# cat /etc/host.conf

5-Este arquivo é a evolução do /etc/host.conf e possibilita que a ordem de procura para resolução de nomes seja customizada para cadaserviço.Ele é utilizado nas últimas distribuições por diversas bibliotecas ao invés do /etc/host.conf.

# cat /etc/nsswitch.conf

6-Descrever endereçamentos de rede, e portanto os endereços deve terminar com .0.

# cat /etc/networks

7- Este comando mostra o nome local da máquina.Também pode ser utilizado para trocar o nome da máquina se um novo nome forfornecido como argumento.Ele suporta a opção --fdqn (Fully Qualified Domain Name), que retorna o nome do sistema mais o domínio:

# hostname --fqdn

8-Retorna ou configura o domínio Internet da máquina.

# dnsdomainname

9- ifconfig cria e/ou configura as interfaces de rede e seus parâmetros.Esta operação é geralmente feita durante o processo de carga dosistema. Se não for passado nenhum parâmetro, ele exibe as configurações das interfaces ativas. Os parâmetros podem ser:

Curso de Certificação Linux LPI

Page 48: Curso de Certificação Linux LPI - Terminal Root

Como configurar o IP, máscara e broadcast dde uma placa de rede:

# ifconfig eth0 10.1.1.2 netmask 255.255.0.0 brocast 10.0.0.255 # ifconfig eth0 up # ifconfig eth0 down

10- O comando netstat exibe as conexões de rede, tabela de rotas, estatíticas das interfaces, etc.

# netstat [opções]

11-O comando route manipula a tabela de rotas do Kernel.Seu uso primário é para adicionar ou apagar rotas estáticas para máquinas ouredes específicas. Se o route for utilizado sem nenhuma opção, exibe a tabela de rotas.Para adicionar uma nova rota utilizamos o parâmetro add.Oparâmetro del apaga uma rota. As opções para os parâmetros add e del são: -netmask máscara >> especifica a máscara de subrede para um determinado destino. -gw endereço >> especifica o gateway que será utilizado para alcançar uma determinada máquina ou rede.

# route

12-tcpdump é uma ferramenta utilizada para monitorar os pacotes trafegados numa rede de computadores. Ela mostra os cabeçalhos dospacotes que passam pela interface de rede.

Exemplo de comando tcpdump para mostrar quais as ligações de um determinado endereço tcp-ip à porta 80 do seu servidor: tcpdump -nieth0 src "numero ip" and dst port 80

# tcpdump -i eth0

Conexões de origem podem ser monitoradas utilizando o parâmetro src host, um exemplo simples seria monitorarmos o tráfego que vemde 192.168.0.9 para nosso computador, com o ip 192.168.0.2. A linha de comando ficaria da seguinte forma:

# tcpdump -i eth0 src host 192.168.0.9

Se quisermos monitorar as conexões especificando um host de destino, poderíamos fazê-lo com o parâmetro dst host, o exemplo abaixomostra todo o tráfego do host 192.168.0.2 com 192.168.0.1, no caso, 192.168.0.1 é nosso gateway.

# tcpdump -i eth0 dst host 192.168.0.1

Com tcpdump também podemos especificar exceções com o parâmetro not host, por exemplo, em nosso servidor queremos ver todo otráfego que se passa em sua interface, exceto o de 192.168.0.8, faríamos da seguinte forma:

# tcpdump -i eth0 not host 192.168.0.9

No tcpdump podemos também especificar portas de origem e destino com os comandos src port e dst port, um exemplo seriamonitorarmos o tráfego destinado à porta 80 (http), para isso utilizaríamos a linha de comandos abaixo e navegaríamos em um sitequalquer:

# tcpdump -i eth0 dst port 80

Para verificarmos o tráfego da porta de origem 32881 por exemplo, faríamos da seguinte forma:

# tcpdump -i eth0 src port 32881

Muitas opções avançadas podem ser obtidas com o tcpdump, essas são algumas opções básicas, porém fundamentais para quem queraprender sobre sniffers.

Curso de Certificação Linux LPI

Page 49: Curso de Certificação Linux LPI - Terminal Root

Curso Certificação Linux LPI-102: Configurando o DHCP

Hoje em dia, quase todas as redes utilizam algum tipo de servidor DHCP. Em geral, eles são ativados automaticamente aocompartilhar a conexão ou junto com algum outro serviço, de forma que você acaba não aprendendo muita coisa sobre a suaconfiguração.

De um modo geral, o trabalho de um servidor DHCP é bastante simples. Ele responde aos pacotes de broadcast das estações, enviando umpacote com um dos endereços IP disponíveis e os demais dados da rede. Os pacotes de broadcast são endereçados ao endereço"255.255.255.255" e são retransmitidos pelo switch da rede para todas as portas, diferente dos pacotes endereçados a um endereçoespecífico, que são transmitidos apenas na porta relacionada a ele.

Periodicamente o servidor DHCP verifica se as estações ainda estão lá, exigindo uma renovação do "aluguel" do endereço IP (opção "leasetime"). Isso permite que os endereços IP sejam gastos apenas com quem realmente estiver online, evitando que os endereços disponíveisse esgotem.

O servidor DHCP mais usado no Linux é o ISC DHCP, desenvolvido pela Internet Systems Consortium, uma organização semfins lucrativos dedicada a desenvolver serviços de infra-estrutura usados na Internet, incluindo o Bind e o NTPD. Caso estejacurioso, a página com o código fonte é a: http://www.isc.org/sw/dhcp/.

Nas distribuições derivadas do Debian, o pacote correspondente ao servidor DHCP se chama "dhcp3-server" e pode ser instalado viaapt-get:

# apt-get install dhcp3-server

Com o pacote instalado, você pode ativar e desativar o serviço usando os comandos:

# /etc/init.d/dhcp3-server start

# /etc/init.d/dhcp3-server stop

Como você pode imaginar, o "3" corresponde à versão do software. Eventualmente ele será substituído pelo "dhcp4-server", o queresultará também na mudança do nome da pasta onde fica o arquivo e do script de inicialização referente ao serviço.

No Fedora e no CentOS, o pacote se chama simplesmente "dhcp" e pode ser instalado usando o yum:

# yum install dhcp

Embora o pacote se chame apenas "dhcp", o script referente ao serviço se chama "dhcpd", de forma que os comandos para iniciar e pararo serviço são:

# service dhcpd start

# service dhcpd stop

Diferente do Debian, o serviço não será configurado para ser inicializado durante o boot depois de instalado. Você precisa ativá-lomanualmente usando o comando "chkconfig":

# chkconfig dhcpd on

O arquivo de configuração é o "dhcpd.conf". Nas distribuições derivadas do Debian, o caminho completo para ele é "/etc/dhcp3/dhcpd.conf", enquanto no Fedora e no CentOS é apenas "/etc/dhcpd.conf", ou seja, um diretório acima.

Apesar dessas diferenças estéticas, o que interessa mesmo é a configuração do arquivo e esta sim é igual, independentemente dadistribuição. Este é um exemplo de arquivo de configuração básico:

# /etc/dhcp3/dhcpd.conf

ddns-update-style none;default-lease-time 600;max-lease-time 7200;authoritative;

Curso de Certificação Linux LPI

Page 50: Curso de Certificação Linux LPI - Terminal Root

subnet 192.168.1.0 netmask 255.255.255.0 {range 192.168.1.100 192.168.1.199;option routers 192.168.1.1;option domain-name-servers 208.67.222.222,208.67.220.220;option broadcast-address 192.168.1.255;}

A opção " default-lease-time" controla o tempo de renovação dos endereços IP. O "600" indica que o servidor verifica a cada dez minutos seas estações ainda estão ativas. Se você tiver mais endereços IP do que máquinas, os endereços IP das estações raramente vão precisarmudar. Mas, no caso de uma rede congestionada, o "max-lease-time" determina o tempo máximo que uma estação pode usar umdeterminado endereço IP. Isso foi planejado para ambientes onde haja escassez de endereços IP, como, por exemplo, em um provedor deacesso, onde sempre existem mais clientes do que endereços IP disponíveis e se trabalha contando que nem todos vão ficar conectadossimultaneamente. Em condições normais, essas duas opções não são muito importantes. O que interessa mesmo é o bloco que vai logoabaixo, onde ficam as configurações da rede.

A opção "range" determina a faixa de endereços IP que será usada pelo servidor. Se você utiliza a faixa de endereços 192.168.1.1 até192.168.1.254, por exemplo, pode reservar os endereços de 192.168.1.1 a 192.168.1.100 para estações configuradas com IP fixo e usar osdemais para o DHCP, ou então reservar uma faixa específica para ele, de 192.168.1.101 a 192.168.1.201, por exemplo. O importante é usarfaixas separadas para o DHCP e os micros configurados com IP fixo.

Na "option routers" vai o endereço do default gateway da rede, ou seja, o endereço do servidor que está compartilhando a conexão. Não énecessário que o mesmo micro que está compartilhando a conexão rode também o servidor DHCP. Pode ser, por exemplo, que na sua redeo gateway seja o próprio modem ADSL que está compartilhando a conexão e o DHCP seja um dos PCs.

A opção "option domain-name-servers" contém os servidores DNS que serão usados pelas estações. Ao usar dois ou mais endereços, elesdevem ser separados por vírgula, sem espaços. Em geral, você vai usar os próprios endereços DNS do provedor, a menos que vocêconfigure um servidor DNS interno na sua rede (que pode ser instalado no próprio micro que está compartilhando a conexão e rodando oDHCP). Estes serviços consomem poucos recursos da máquina.

O servidor DNS mais usado no Linux é o Bind. Nas distribuições derivadas do Debian você pode instalá-lo com um "apt-get install bind". Oservidor DNS pode ser configurado para implementar um sistema de domínios e subdomínios na sua rede, mas o uso mais comum ésimplesmente fazer um "cache", onde o servidor DNS simplesmente repassa as requisições para um dos 13 root servers da internet e vaiarmazenando os endereços que já foram acessados. Mais adiante teremos um capítulo inteiro dedicado a ele.

Você pode substituir o arquivo de configuração padrão por este modelo, ou editá-lo conforme a necessidade. Ao fazer qualquer alteraçãono arquivo, você deve reiniciar o servidor DHCP usando o comando:

# /etc/init.d/dhcp3-server restart

ou:# service dhcpd restart

Com o servidor DHCP configurado, você pode testar a configuração em um dos clientes Linux, configurando a rede usando o "dhclient",seguido da interface a ser configurada. Ele mostra toda a negociação entre o servidor e o cliente, o que permite que você verifique se oservidor está usando a configuração definida por você:

# dhclient eth0

Internet Systems Consortium DHCP Client V3.0.4Copyright 2004-2006 Internet Systems Consortium.All rights reserved.For info, please visit http://www.isc.org/sw/dhcp/

Listening on LPF/eth1/00:15:00:4b:68:dbSending on LPF/eth1/00:15:00:4b:68:dbSending on Socket/fallbackDHCPREQUEST on eth1 to 255.255.255.255 port 67DHCPACK from 192.168.1.1bound to 192.168.1.199 -- renewal in 245 seconds.

Como você pode ver, o cliente deve receber a resposta a partir do endereço IP do servidor rodando o servidor DHCP e ser configurado comum endereço dentro da faixa definida por você.

Uma observação importante é que sempre que configurar um servidor com duas placas de rede, você deve configurar o servidor DHCPpara escutar apenas na placa da rede local. No Debian, esta configuração vai no arquivo "/etc/default/dhcp3-server". Procure pela linha:

INTERFACES=""

... e adicione a placa que o servidor DHCP deve escutar, como em:

INTERFACES="eth0"

Para que a configuração entre em vigor, basta reiniciar o serviço novamente

Fonte: www.hardware.com.br

Curso Certificação Linux LPI-102: Serviços de Rede no Linux

Curso de Certificação Linux LPI

Page 51: Curso de Certificação Linux LPI - Terminal Root

Serviços de rede é o que está disponível para ser acessado pelo usuário. No TCP/IP, cada serviço é associado a um númerochamado porta que é onde o servidor espera pelas conexões dos computadores clientes. Uma porta de rede pode serreferenciada tanto pelo número como pelo nome do serviço.

Abaixo, alguns exemplos de portas padrões usadas em serviços TCP/IP:

21 - FTP (transferência de arquivos) 23 - Telnet (terminal virtual remoto) 25 - Smtp (envio de e-mails) 53 - DNS (resolvedor de nomes) 79 - Finger (detalhes sobre usuários do sistema) 80 - http (protocolo www - transferência de páginas Internet) 110 - Pop-3 (recebimento de mensagens) 119 - NNTP (usado por programas de noticias)

O arquivo padrão responsável pelo mapeamento do nome dos serviços e das portas mais utilizadas é o /etc/services (para detalhes sobre oseu formato, veja a [#s-rede-outros-services /etc/services.

Para instalá-lo, basta:

apt-get install openbsd-inetd

Serviços iniciados como Daemons de rede

Serviços de rede iniciados como daemons ficam residente o tempo todo na memória esperando que alguém se conecte (também chamadode modo standalone). Um exemplo de daemon é o servidor proxy squid e o servidor web Apache operando no modo daemon.

Alguns programas servidores oferecem a opção de serem executados como daemons ou através do inetd. É recomendável escolher daemonse o serviço for solicitado frequentemente (como é o caso dos servidores web ou proxy).

Para verificar se um programa está rodando como daemon, basta digitar ps ax e procurar o nome do programa, em caso positivo ele é umdaemon.

Normalmente os programas que são iniciados como daemons possuem seus próprios recursos de segurança/autenticação para decidirquem tem ou não permissão de se conectar.

Serviços iniciados através do inetd

Serviços iniciados pelo inetd são carregados para a memória somente quando são solicitados. O controle de quais serviços podem sercarregados e seus parâmetros, são feitos através do arquivo

/etc/inetd.conf.

Um daemon chamado inetd lê as configurações deste arquivo e permanece residente na memória, esperando pela conexão dos clientes.Quando uma conexão é solicitada, o daemon inetd verifica as permissões de acesso nos arquivos /etc/hosts.allow e /etc/hosts.deny ecarrega o programa servidor correspondente no arquivo /etc/inetd.conf. Um arquivo também importante neste processo é o /etc/servicesque faz o mapeamento das portas e nomes dos serviços.

Alguns programas servidores oferecem a opção de serem executados como daemons ou através do inetd. É recomendável escolher inetd seo serviço não for solicitado frequentemente (como é o caso de servidores ftp, telnet, talk, etc)./etc/inetd.conf

O arquivo /etc/inetd.conf é um arquivo de configuração para o daemon servidor inetd. Sua função é dizer ao inetd o que fazer quandoreceber uma requisição de conexão para um serviço em particular. Para cada serviço que deseja aceitar conexões, você precisa dizer aoinetd qual daemon servidor executar e como executa-lo.

Seu formato é também muito simples. É um arquivo texto com cada linha descrevendo um serviço que deseja oferecer. Qualquer texto emuma linha seguindo uma "#" é ignorada e considerada um comentário. Cada linha contém sete campos separados por qualquer número deespaços em branco (tab ou espaços). O formato geral é o seguinte:

serviço tipo_soquete proto opções.num usuário caminho_serv. opções_serv.

serviço É o serviço relevante a este arquivo de configuração pego do arquivo /etc/services.tipo_soquete

Curso de Certificação Linux LPI

Page 52: Curso de Certificação Linux LPI - Terminal Root

Este campo descreve o tipo do soquete que este item utilizará, valores permitidos são: stream, dgram, raw, rdm, ou seqpacket. Isto é umpouco técnico de natureza, mas como uma regra geral, todos os serviços baseados em tcp usam stream e todos os protocolos baseados emudp usam dgram. Somente alguns tipos de daemons especiais de servidores usam os outros valores.protocolo O protocolo é considerado válido para esta item. Isto deve bater com um item apropriado no arquivo /etc/services e tipicamente será tcpou udp. Servidores baseados no Sun RPC (Remote Procedure Call), utilizam rpc/tcp ou rpc/udp.opções Existem somente duas configurações para este campo. A configuração deste campo diz ao inetd se o programa servidor de rede libera osoquete após ele ser iniciado e então se inetd pode iniciar outra cópia na próxima requisição de conexão, ou se o inetd deve aguardar eassumir que qualquer servidor já em execução pegará a nova requisição de conexão.

Este é um pequeno truque de trabalho, mas como uma regra, todos os servidores tcp devem ter este parâmetro ajustado para nowait e amaior parte dos servidores udp deve tê-lo ajustado para wait. Foi alertado que existem algumas excessões a isto, assim deixo isto comoexemplo se não estiver seguro. O número especificado após o "." é opcional e define a quantidade máxima de vezes que o serviço poderáser executado durante 1 minuto. Se o serviço for executado mais vezes do que este valor, ele será automaticamente desativado pelo inetd euma mensagem será mostrada no log do sistema avisando sobre o fato. Para reativar o serviço interrompido, reinicie o inetd com: killall-HUP inetd. O valor padrão é 40.

usuário Este campo descreve que conta de usuário usuário no arquivo /etc/passwd será escolhida como dono do daemon de rede quando este foriniciado. Isto é muito útil se você deseja diminuir os riscos de segurança. Você pode ajustar o usuário de qualquer item para o usuárionobody, assim se a segurança do servidor de redes é quebrada, a possibilidade de problemas é minimizada. Normalmente este campo éajustado para root, porque muitos servidores requerem privilégios de usuário root para funcionarem corretamente.caminho_servidor Este campo é o caminho para o programa servidor atual que será executado.argumentos_servidor Este campo inclui o resto da linha e é opcional. Você pode colocar neste campo qualquer argumento da linha de comando que desejepassar para o daemon servidor quando for iniciado.

Uma dica que pode aumentar significativamente a segurança de seu sistema é comentar (colocar uma #no inicio da linha) os serviços quenão serão utilizados.

Abaixo um modelo de arquivo /etc/inetd.conf usado em sistemas Debian:

# /etc/inetd.conf: veja inetd(8) para mais detalhes. # # Banco de Dados de configurações do servidor Internet # # # Linhas iniciando com "#:LABEL:" ou "#&lt;off&gt;#" não devem # ser alteradas a não ser que saiba o que está fazendo! # # # Os pacotes devem modificar este arquivo usando update-inetd(8) # # &lt;nome_serviço&gt; &lt;tipo_soquete&gt; &lt;proto&gt; &lt;opções&gt; &lt;usuário&gt; &lt;caminho_servidor&gt; &lt;args&gt;

# #:INTERNO: Serviços internos #echo stream tcp nowait root internal #echo dgram udp wait root internal #chargen stream tcp nowait root internal #chargen dgram udp wait root internal #discard stream tcp nowait root internal #discard dgram udp wait root internal #daytime stream tcp nowait root internal #daytime dgram udp wait root internal time stream tcp nowait root internal #time dgram udp wait root internal

#:PADRÕES: Estes são serviços padrões.

#:BSD: Shell, login, exec e talk são protocolos BSD. #shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd #login stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind #exec stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rexecd talk dgram udp wait.10 nobody.tty /usr/sbin/tcpd /usr/sbin/in.talkd ntalk dgram udp wait.10 nobody.tty /usr/sbin/tcpd /usr/sbin/in.ntalkd

#:MAIL: Mail, news e serviços uucp. smtp stream tcp nowait.60 mail /usr/sbin/exim exim -bs

#:INFO: Serviços informativos

#:BOOT: O serviço Tftp é oferecido primariamente para a inicialização. Alguns sites # o executam somente em máquinas atuando como "servidores de inicialização".

#:RPC: Serviços baseados em RPC

#:HAM-RADIO: serviços de rádio amador

#:OTHER: Outros serviços

Para saber como configurar o inetd.conf para habilitar uma porta, acesse esse LINK(Como configurar o inetd.conf para habilitar umaporta).

Utilizando TCPWRAPPERS para segurança do inetd

O tcpwrapper regula o acesso aos serviços oferecidos pelo inetd.O processo utilizado é o /usr/sbin/tcpd.Ele consulta doisarquivos que definem o acesso:

Curso de Certificação Linux LPI

Page 53: Curso de Certificação Linux LPI - Terminal Root

/etc/hosts.allow/etc/hosts.deny

As regras contidas no primeiro arquivo liberam o acesso aos serviços.O segundo arquivo proíbe o acesso. Basicamente as regras destes arquivos seguem o padrão. nome_do_serviço : endereços

As palavras LOCAL e ALL podem ser utilizadas para identificar todos os clientes que são do mesmo domínio que o servidor e todas asmáquinas. Veja o exemplo de /etc/hosts.allow:

# cat /etc/hosts.allowin.telnetd : LOCALrsyncd : 172.20.0.0/255.255.255.0in.ftpd : ALL

Se neste arquivos de controle não existir uma regra para um determinado serviço habilitado no inetd, o acesso será liberado.

Serviços de rede com xinetd

Uma rede de computadores serve basicamente, para possibilitar o compartilhamento de recursos, como arquivos eimpressoras. É possível dizer que o compartilhamento de arquivos e impressoras é um Serviço de Rede.

Outros serviços de rede tornaram-se muito populares com a expansão da Internet nos últimos anos. Tais serviços, como o WWW e FTP,requerem que um computador execute algum processo que atenda pelas requisições dos clientes que desejam acessá-los. Isto implica emum modelo cliente-servidor, onde normalmente a máquina do usuário solicita alguma coisa, através de um programa cliente como obrowser, por exemplo, e o processo servidor (que implementa o serviço da rede) responde.

O sistema operacional UNIX, e, portanto o Linux, sempre foi muito conhecido por oferecer diversos serviços de rede tradicionais. Taisserviços vão desde a possibilidade de saber quem está usando uma máquina, até o próprio serviço de transferência de arquivos.

Muitos serviços de rede são implementados através de processos dedicados que esperam por requisições que chegam da rede.Mas dada a razoável quantidade de serviços, um esquema interessante foi implantado. Neste esquema, um único processo,chamado xinetd (Extend Internet Super Server), rodando na máquina que está oferecendo os serviços de rede, é responsávelpor escutar as requisições que chegam, e conforme a porta por onde chega à requisição, disparar e executar o processocorrespondente àquele serviço.

Assim, da mesma forma que um endereço IP identifica uma máquina em uma rede, uma porta identifica um serviço de rede rodandodentro de determinada máquina. Alguns serviços funcionam sobre o protocolo de transporte TCP, outros sobre o protocolo UDP, e aindaoutros funcionam sobre os dois.

O xinetd é responsável por vários serviços básicos de um sistema disponibilizados em uma rede. Entre os serviços que ele gerencia estãoos serviços Telnet e POP.

Esses serviços são executados por programas denominados servidores, que nada mais são do que programas que abrem umadeterminada porta e ficam aguardando por solicitações de conexão.

Na maioria dos casos, quando uma solicitação é recebida o servidor cria um processo filho para tratar dessa conexão específica, enquantoo processo pai continua a escutar na porta aguardando novas solicitações. Desta forma existirão vários processos alocados na memória.

O xinetd carrega seu arquivo de configuração e passa a “ouvir” por conexões em portas específicas. Quando uma conexão é solicitada, oxinetd executa o programa servidor correspondente para manipular o serviço solicitado. Então, desta forma, existirá apenas um servidorem memória esperando por uma solicitação.

O superservidor ou xinetd é configurado para iniciar a sua execução quando o sistema é inicializado, recebendo a lista de serviços a seremmonitorados a partir de um arquivo denominado /etc/xinetd.conf.

Curso Certificação Linux LPI-102: Arquivos de LOG

O Linux possui um serviço especial chamado syslog que faz todo o trabalho sujo de filtrar e gravar mensagens importantes

Curso de Certificação Linux LPI

Page 54: Curso de Certificação Linux LPI - Terminal Root

não só do sistema local, mas de outros sistemas que suportam o syslog. Além de gravar em arquivos, as mensagens podem ser enviadas para a tela de console e telas de terminal. O arquivo de configuração /etc/syslog.conf controla "o que" vai ser gravado é chamado de facilidade.As facilidades são naverdade a origem das mensagens.Cada facilidade possui nívei de severidade.

Verificar o logs no syslog: tail /var/log/syslog

Facilidade do Syslog

° auth - Mensagens de segurança/autorização (privativas). ° authpriv - Mensagens de segurança/autorização (privativas). ° cron - Daemons de agendamento de tarefas (cron e at). ° daemon - Outros daemons do sistema que não possuem facilidades específicas. ° kern - Mensagens do Kernel ° lpr - Subsistema de impressão ° mail - Subsistema de e-mail ° news Subsistema de notícias da USENET ° syslog - Mensagens internas geradas pelo syslogd ° user - Mensagens genéricas de nível do usuário ° local0 até local7 - Reservados para uso local por outros programas que desejem escrever seus logs no syslog. Níveis de Severidade

° debug (7) - Informações de debug (depuração) ° info (6) - Mensagens apenas para informação ° notice (5)- Condições normais, mas significativas ° warning (4)-Condições de alerta ° err (3) - Condições de erro ° crit (2) - Condições críticas ° alert (1) - Ações imediatas são requeridas ° emerg (0) - Sistema indisponível Para cada facilidade podemos especificar um nível de severidade, que vai definir o grau de importância da mensagem. O arquivo [/etc/syslog.conf] possui o seguinte formato: faciliade.nivel ação

Ações do Syslog

A ação específica o que deverá ser feito com a mensagem.Pode ser um arquivo de LOG, um PIPE (direcionado para um utilitário ouaplicativo) um outro sistema remoto, determinados usuários ou todos os usuários. ° Arquivo - As mensagens são gravadas em arquivos no sistema. ° PIPE - As mensagens são enviadas para um arquivo especial chamado file descriptor. ° Terminal e Console - Podemos especificar uma tela local do computador (console) através do caminho /dev/console ou um terminalremoto tty para onde as mensagens serão enviadas. ° Computador Remoto - Podemos enviar as mensagens do syslog para uma máquina remota precedendo a ação com o símbolo "@"seguido do nome do host.Em questões de segurança, enviar a mensagens para outra máquina pode ser especialmente importante. ° Usuários - Podemos especificar um determinado usuário ou uma lista de usuários (separados por vírgula) para onde as mensagensserão enviadas no terminal quando estes estiverem logados no sistema. Caracteres especiais

° Sempre use TBS ao invés de espaços. ° Os caracteres ("*", "=", "!" e "-") têm funções especiais. Para visualizar o syslog: # /etc/syslog.conf

A rotação dos arquivos de LOG é feita no seu arquivo principal: # cat /etc/logrotate.conf

Curso Certificação Linux LPI-102: X Window System

Curso de Certificação Linux LPI

Page 55: Curso de Certificação Linux LPI - Terminal Root

X Window System, X-Window, X11 ou simplesmente X é um software de sistema e um protocolo que fornece uma base parainterfaces gráficas de usuário (com o conceito de janelas) e funcionalidade rica de dispositivos de entrada para redes decomputadores. Ele cria uma camada de abstração de hardware onde o software é escrito para usar um conjunto generalizadode comandos, permitindo a independência de dispositivo e reutilização programas em qualquer computador que implemente oX.

Originalmente chamado simplesmente de X, foi desenvolvido no MIT em 1984. Atualmente está na versão 11, publicada em setembro de1987, e por isso carrega no nome este número.

X-Window é o toolkit e protocolo padrão para GUI nos sistemas Unix e assemelhados, como o Linux, mas existem versões para outrossistemas operacionais, como o Microsoft Windows e o Mac OS, por exemplo.

Configurando o X no Debian

# dpkg-reconfigure xserver-xorg

Iniciar o X (caso a inicialização seja em modo texto):

$ startx

O script de arranque para os daemons de gestão de ecrã verifica o conteúdo do ficheiro

/etc/X11/default-display-manager

mesmo antes de executar os próprios. Isto assegura que se tem apenas um programa daemon de gestor de ecrã X activado. Essencialmente, todos estes programas executam o script/etc/X11/Xsession

. Então o script "/etc/X11/Xsession" executa run-parts(8) como acção para executar os scripts no directório "/etc/X11/Xsession.d/". Isto éessencialmente uma execução de um primeiro programa o qual é encontrado na seguinte ordem com o comando embutido exec.

O script especificado como o argumento de /etc/X11/Xsession" pelo gestor de display X, se estiver definido.

O script "~/.xsession" ou "~/.Xsession", se estiver definido.

O comando/usr/bin/x-session-manager

, se estiver definido.

O comando/usr/bin/x-window-manager

. se estiver definido.

O comando/usr/bin/x-terminal-emulator

, se estiver definido.

Para mais informações sobre o X no Debian, consultehttp://www.debian.org/doc/manuals/debian-reference/ch07.pt.html

Curso Certificação Linux LPI-102: Impressão no Linux

Curso Certificação Linux LPI-102: Impressão no Linux

lp - envia requisições à impressora

Sintaxe: lp [-mw] [-ddest] [-n#] filename...

Opções:

-w: escreve mensagem no terminal do usuário -ddest: impressora destino

Exemplo: lp -m -dlw rel.ps

Curso de Certificação Linux LPI

Page 56: Curso de Certificação Linux LPI - Terminal Root

Imprimindo diretamente# cat texto.txt > /dev/lp0

Imprimindo indiretamente$ cat texto.txt | lpr

$ lpr texto.txt

Monitorar: fila (queue) de impressão$ lpq

Gerenciar: cancelando impressões/jobs$ lprm

(cancela a última impressão/job do usuário corrente)

Gerenciar: controlando o lpd com o lpc$ lpc

Arquivo de configuração - permissao de acesso# vi /etc/hosts.lpd

(se esse arquivo existir, os usuarios remotos nao conseguirao imprimir. Para imprimir se deve excluir esse arquivo ou inserir dentro deleos enderecos dos hosts remotos que podem imprimir)

Arquivo de configuração - geral# vi /etc/printcap

Compartilhando impressoras

O Cups, o servidor de impressão padrão no Linux, possui um recurso nativo de compartilhamento de impressoras. Ele permite nãoapenas compartilhar impressoras com outras máquinas Linux, mas também com máquinas Windows da rede, através de um servidorunificado. Para habilitar o compartilhamento, edite o arquivo "/etc/cups/cupsd.conf", deixando-o com o seguinte conteúdo:

Port 631Listen 631Browsing OnBrowseAllow AllBrowseInterval 30BrowseAddress @LOCALBrowseInterval 30

<Location />Order allow,denyAllow all</Location>

<Location /printers>Order allow,denyAllow all</Location>

<Location /admin>Encryption RequiredOrder allow,denyAllow localhost</Location>

<Location /admin/conf>AuthType BasicRequire user @SYSTEMOrder allow,denyAllow localhost</Location>

Veja que a seção "/printers", que contém as impressoras, fica com permissão de acesso para todo mundo, enquanto o utilitário deadministração do Cups (seção /admin) continua acessível apenas localmente, através do endereço http://127.0.0.1:631.

Até aqui, não estamos impondo nenhum tipo de restrição, por isso contamos com o firewall para bloquear qualquer tentativa deimpressão proveniente de micros da Internet. Você pode também fazer o compartilhamento de uma forma mais segura, especificandomanualmente a faixa de endereços da rede local, ou mesmo especificando individualmente os endereços IP que poderão imprimir. Nestecaso, as seções <Location /> (onde vai a configuração que permite aos clientes verem as impressoras disponíveis) e <Location /printers>ficaria:

<Location />Order Deny,AllowDeny From AllAllow From 127.0.0.1Allow From 192.168.0.*</Location>

<Location /printers>Order Deny,AllowDeny From AllAllow From 127.0.0.1Allow From 192.168.0.*</Location>

Não se esqueça de incluir o endereço "127.0.0.1" na lista. Caso contrário, todo mundo vai imprimir na impressora, menos você mesmo :).

Curso de Certificação Linux LPI

Page 57: Curso de Certificação Linux LPI - Terminal Root

Depois de alterar o arquivo, reinicie o servidor de impressão para que as alterações entrem em vigor:

# /etc/init.d/cups restart

Compartilhar impressoras através do Cups é mais simples do que fazê-lo através do Samba e oferece a vantagem adicional de permitir ouso do recurso de autodiscover do Cups nos clientes Linux. O autodiscover permite que os clientes Linux da rede reconheçamautomaticamente a impressora compartilhada e a configurem automaticamente durante o boot, sem necessidade de nenhuma intervençãomanual.

Fontes:

www.hardware.com.br

www.hugoazevedo.eti.br

www.openit.com.br

Curso Certificação Linux LPI-102: Hora e Internacionalização do Sistema

O diretório abaixo contém as informações de configuração das zonas de fuso horário:/usr/share/zoneinfo

A zona local do sitema é determinada por um link simbólico de algum arquivo deste diretório para o arquivo:

/etc/localtime

Copia a hora corrente no relógio da máquina para o relógio da sistema, durante a carga do sistema.Este comando irá assumir que a horano hardware é a hora local, a menos que a opção --utc seja utilizada

/sbin/hwclock

O comando date também pode ser utilizado para configurar a data e hora do sistema. O formato que a data e hora precisam serinformados segue a notação MMDDhhmmAAAA, segue:

° MM - mês ° DD - dia ° hh - hora ° mm - minuto ° AAAA - ano

Os dias e meses menores que 10 devem ser escritos com zero na frente e as horas no padrão 24h. Exemplo:

Configura a hora e data para Sex 29 Mar 2013 21:34 hs # date 032921342013

Curso Certificação Linux LPI-102: Servidor Postfix

O Postfix é um agente de transferência de emails (MTA), um software livre para envio e entrega de emails. Rápido e fácil de administrar, éuma alternativa segura ao Sendmail, muito utilizado em servidores UNIX.

Ele é uma espécie de meio termo entre a simplicidade do Qmail e a fartura de recursos do Exim. Entre os três, ele é o mais rápido e o maissimples de configurar, o que faz com que ele seja atualmente o mais popular e o que possui mais documentação disponível. O Postfixtambém possui um excelente histórico de segurança, sendo considerado por muitos tão seguro quanto o Qmail.

Existem fortes motivos para não usar o Sendmail ou o Qmail em novas instalações, mas temos uma boa briga entre o Postfix e o Exim.Escolhi abordar o Postfix aqui simplesmente por que, entre os dois, ele é mais popular, o que torna mais simples encontrar documentaçãoe conseguir ajuda quando tiver dúvidas.

Curso de Certificação Linux LPI

Page 58: Curso de Certificação Linux LPI - Terminal Root

Instalando o Postfix$ su# apt-get install postfix

, durante a Instalação ele deverá perguntar: Qual o tipo geral de configuração, marque o item Internet Site

e o nome/endereço do Servidor, digite o nome que você deseja:

, para as demais perguntas, deixe as opções defaults como já vêm pré-marcadas.

Obs.:Na pergunta: força atualizações síncronas na fila de email ? Marque como não:

Configuração Inicial

Edite o arquivo# vi /etc/postfix/main.cf

e inclua as configurações abaixo:mydomain = marcospinguim.com.brmyhostname = host.$mydomainmyorigin = $mydomainmydestination = $myhostname, $mydomainmynetworks = 127.0.0.0/8 192.168.1.1/24home_mailbox = Maildir/

mydomain: O nome do domínio do servidor de e-mail.myhostname: O nome da máquina do servidor de e-mail.myorigin: Especifica como ficará a terminação do e-mail após o @.mydestination: Os nomes dos domínios que o servidor de e-mail é responsável.mynetworks: Especifica a qual rede que o servidor de e-mail irá trabalhar.home_mailbox: Especifica o diretório onde ficará as mensagens de e-mail.

Após isso recarregue as informações no Postfix:# /etc/init.d/postfix reload

Testando o Envio de E-mails:

No meu PC existe um usuario com o nome [marcos] e outro com o nome [eric], teste com os usuarios da sua máquina, se não houvercrie-os com useradd, neste exemplo abaixo o usuário [marcos] enviou um e-mail para o usuário [eric], lógico que estou logado como root,mas usei o comando [MAIL from:] e especifiquei o usuário que envia o e-mail, para critério de teste.

Destaquei os comandos que vc deve executar para isso em VERMELHO:

Curso de Certificação Linux LPI

Page 59: Curso de Certificação Linux LPI - Terminal Root

# telnet localhost 25Trying ::1...Trying 127.0.0.1...Connected to localhost.Escape character is '^]'.220 host.marcospinguim.com.br ESMTP Postfix (Ubuntu)HELO smtp.marcospinguim.com.br250 host.marcospinguim.com.brMAIL from: marcos250 2.1.0 OkRCPT to: eric250 2.1.5 OkDATA354 End data with .Este post sobre Postfix no blog é loucooooo!.250 2.0.0 Ok: queued as A8F958F5DEQUIT221 2.0.0 ByeConnection closed by foreign host.

Instalar o pacote SASL

Este recurso é importante hoje em dia, pois sem encriptação, seus e-mails (incluindo o login e senha) são transmitidos em texto planopela rede e podem ser Sniffados. Uma vez ativo o recurso no servidor, basta marcar a opção no cliente de e-mails.

apt-get install sasl2-bin

, agora abra novamente o arquivo main.cf e inclua as linhas abaixo nele:smtpd_sasl_auth_enable = yesbroken_sasl_auth_clients = yessmtpd_sasl_authenticated_header = yessmtpd_helo_required = yessmtpd_recipient_restrictions =permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

Depois ative ele abrindo o arquivo de configuração:# vi /etc/default/saslauthd

e inclua o código abaixo no arquivo, na verdade essa linhas já existirão, mas você deve alterá-las para ficar assim:Obs.:As linhas não estão uma abaixo da outra, procure-as e altere:START=yesOPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

, salve e feche o arquivo. Agora rode esse comando no terminal para verificar se o usuário postfix existe:# groups postfix

, se retornar postfix : postfix , rode esse comando:# usermod -G sasl postfix

, se verificar novamente com o comando groups postfix, agora retornará postfix : postfix sasl , caso não ocorra, dê um reload no postfix(/etc/init.d/postfix reload).

Crie o arquivo smtpd.conf no diretório "/etc/postfix/sasl" e adicione as seguintes linhas abaixo:pwcheck_method: saslauthdmech_list: plain login

Terminado as configurações, reinicie o Postfix e o serviço de autenticação:

# /etc/init.d/postfix restart# /etc/init.d/saslauthd restart

Você pode ainda implementar uma criptogrfia TLS e criar o certificado, dá uma pesquisada na Internet.

Lendo os e-mails

Para poder ler as mensagens de e-mail recebidas, será usado o Servidor POP3:

# apt-get install courier-pop-ssl

Testando o Servidor POP3

Para verificar se o Servidor POP3 está funcionando, use o Telnet para ler as mensagens de e-mail recebidas:lembra que o [marcos] envioumensagem para o usuário [eric] ? Agora o [eric] irá ler. Verifique os trechos em VERMELHO que são comandos para verificar os emails

# telnet localhost 110

Curso de Certificação Linux LPI

Page 60: Curso de Certificação Linux LPI - Terminal Root

Trying ::1...Connected to localhost.Escape character is '^]'.+OK Hello there.USER eric+OK Password required.PASS informe_aqui_a_senha+OK logged in.LIST+OK POP3 clients that break here, they violate STD53.1 517.RETR 1+OK 517 octets follow.Return-Path:X-Original-To: ericDelivered-To: [email protected]: from smtp.marcospinguim.com.br (localhost [127.0.0.1])by host.marcospinguim.com.br (Postfix) with SMTP id A8F958F5DEfor ; Wed, 4 Jan 2012 12:01:31 -0200 (BRST)Message-Id: <[email protected]>Date: Wed, 4 Jan 2012 12:01:31 -0200 (BRST)From: [email protected]: undisclosed-recipients:;

Este post sobre Postfix no blog é loucooooo!.QUIT+OK Bye-bye.Connection closed by foreign host.

Obs.: Percebam que as mensagem são arquivos e ficam nas pasta Maildir/cur dos usuários (/home/usuario/Maildir/cur).

Pronto, espero que gostem e comentem!

Curso Certificação Linux LPI-102: Compartilhamento via Samba

Instale o protocolo samba:# apt-get install samba

Por comando vc deve utilizar o comando tipo esse exemplo, supondo que o ip da máquina Windows seja 192.168.1.107:# smbclient -L 192.168.1.101 -U marcos

Será listados os itens compartilhados, então você acessá-los com o comando simples:# mount -t smbfs //servidor/arquivos /mnt/smb

Caso haja algum problema rode o comando# testparm

, ele exibirá um dump das configurações após lhe solicitar um [enter].Nesse caso você deverá configurar um Samba com PDC (PrimaryDomain Controller, Controlador de Domínio Primário) , se tudo tiver certo exibirá um "ROLE_DOMAIN_PDC".Caso contrário configure osamba no arquivo# /etc/samba/smb.conf

com as configurações tipo do exemplo abaixo:[global]netbios name = SERVIDORworkgroup = DOMINIOserver string = Samba %vdns proxy = nolog file = /var/log/samba/log.%mmax log size = 1000syslog = 0panic action = /usr/share/samba/panic-action %ddomain master = yesdomain logons = yespreferred master = yeslogon path =os level = 33wins support = yes

Por modo gráfico, abra o Nautilus (uma pasta qualquer no seu Linux) e aperte Ctrl+L e digite:smb://192.168.1.107

e navegue nos itens compartilhados.

Os acessos as pastas e arquivos do Windows vão depender das configurações efetuadas no Windows:

Curso de Certificação Linux LPI

Page 61: Curso de Certificação Linux LPI - Terminal Root

-se as pastas estão compartilhadas-se está para solicitar senha-...

Além desse pacote, voçê pode, se quiser, instalar outros que te ajudem caso precise de acessos e configurações do Samba em modográfico, dessa forma voçê pode instalar esse conjunto abaixo:# apt-get install samba smbclient swat samba-doc

O script de instalação faz duas perguntas. A primeira é se o servidor deve rodar em modo daemon ou sob o inetd. Responda "daemons"para que o servidor rode diretamente. Isso garante um melhor desempenho, melhor segurança e evita problemas diversos de configuraçãorelacionados ao uso do inetd, serviço que está entrando em desuso.

Em seguida ele pergunta: "Gerar a base de dados para senhas /var/lib/samba/passdb.tdb?". É importante responder que "Sim", para queele crie o arquivo onde serão armazenadas as senhas de acesso. Como explica o script, "Caso você não o crie, você terá que reconfigurar osamba (e provavelmente suas máquinas clientes) para utilização de senhas em texto puro", o que é um procedimento trabalhoso, queconsiste em modificar chaves de registro em todas as máquinas Windows da rede e modificar a configuração de outros servidores Linux.Muito mais fácil responder "Sim" e deixar que ele utilize senhas encriptadas, que é o padrão. :)

Com os pacotes instalados, use os comandos:# /etc/init.d/samba start# /etc/init.d/samba stop

... para iniciar e parar o serviço. Por padrão, ao instalar o pacote é criado um link na pasta "/etc/rc5.d", que ativa o servidorautomaticamente durante o boot. Para desativar a inicialização automática, use o comando:# update-rc.d -f samba remove

Para reativá-lo mais tarde, use:# update-rc.d -f samba defaults

Você pode verificar qual é a versão do Samba instalada usando o comando "smbd -V", como em:# smbd -V

Para compartilhar pastas do Linux na rede, você pode utilizar o Swat, para isso voçê deve criar um usuário samba antes e liberar a portado serviço para acesso pelo browser, para criar um usuario samba, ativar a porta 901 do localhost , segue respectivamente os comandosabaixo, mais informações dos comandos use o "man comando", aqui é só uma luz para você poder utilizar:

Logar no swat:# smbpasswd -a marcoshttp://127.0.0.1:901/(No seu navegador, será solicitada a senha do samba, se não houver use do seu usuário para acesso ao seu Linux)

Para que a alteração efetuada no Swat entre em vigor, reinicie o inetd com o comando:# /etc/init.d/inetd restart

Obs.:O Swat não usa encriptação de senha, ou seja, se alguém sniffar sua conexão, verá sua senha nos pacotes do TCP/IP, para que issonão ocorra voçê pode acessá-lo pelo túnel SSH, da seguinte forma:# ssh -f -N -L901:192.168.1.107:901 -l login 192.168.1.107

Para criar compartilhamento use o shares:http://127.0.0.1:901/shares

Por enquanto é só, até a próxima!

Curso Certificação Linux LPI-102: Configurando o DNS

Introdução

BIND (Berkeley Internet Name Domain ou, como chamado previamente, Berkeley Internet Name Daemon) é o servidor para o protocoloDNS mais utilizado na Internet.Foi criado por quatro estudantes de graduação, membros de um grupo de pesquisas em ciência dacomputação da Universidade de Berkeley.Para a versão 9, o BIND foi praticamente reescrito. Ele passou a suportar, dentre outrasfuncionalidades, a extensão DNSSEC e os protocolos TSIG e IPv6.

1-Instalação

Para Debian e Debians-Like (Ubuntu, Linux Mint...) dnsutils será instalado juntamente com o pacote, ou seja, não precisa especificá-lo na

Curso de Certificação Linux LPI

Page 62: Curso de Certificação Linux LPI - Terminal Root

instalação.

# apt-get install bind9

2- Configuração Inicialabra o arquivo named.conf.options informado e escreva o código abaixo, de acordo com seus IPs e antes do fechamento da chave "};" :# vi /etc/bind/named.conf.options

adicione, depois salve e feche o arquivo:

listen-on { 127.0.0.1; 192.168.1.1/24; };allow-query { 127.0.0.1; };recursion yes;allow-recursion { 127.0.0.1; 192.168.1.1/24; };

3- Configurar a Zona e a Zona Reversa

Depois edite o arquivo named.conf.local e escreva o código abaixo, de acordo com seus IPs e o nome do host que deseja, nesse exemplovou utilizar "marcospinguim.com.br":# vi /etc/bind/named.conf.local

adicione:

zone "marcospinguim.com.br" {type master;file "marcospinguim.com.br.zone";allow-transfer { 192.168.1.7; };};

zone "0.168.192.in-addr.arpa" {type master;file "marcospinguim.com.br.rev";allow-transfer { 192.168.1.7; };};

4-Verificar se há erros nas alterações efetuadas# named-checkconf

se não receber nenhuma mensagem é porque está tudo correto até aqui.

5-Criar o arquivo de zonacrie o arquivo seuendereco.subdominio.dominio.zone, e abra-o, ex.:# vi /var/cache/bind/marcospinguim.com.br.zone

adicione de acordo com seus dados:

;; Zone file for dominio.com.br;$TTL 86400@ IN SOA ns1.marcospinguim.com.br. hostmaster.marcospinguim.com.br. (2012010100 ; serial7200 ; refresh1800 ; retry1209600 ; expire300 ) ; minimum

NS ns1NS ns2MX 5 mailTXT "v=spf1 mx -all"HINFO PC-Intel-2.4GHz "Linux 2.6"A 192.168.1.100

ns1 A 192.168.1.100ns2 A 192.168.1.100mail A 192.168.1.100www CNAME @ftp CNAME wwwpop3 CNAME mailsmtp CNAME mail

6-Verificar se há erros nas zonasExecute o comando de acordo com seus dados:# named-checkzone marcospinguim.com.br /var/cache/bind/marcospinguim.com.br.zone

Curso de Certificação Linux LPI

Page 63: Curso de Certificação Linux LPI - Terminal Root

se der certo retornará algo tipo isso:

zone marcospinguim.com.br/IN: loaded serial 2012010100OK

7 - Criar o arquivo de zona reversa# vi /var/cache/bind/marcospinguim.com.br.rev

adicione de acordo com seus dados:;; Reverse zone file for dominio.com.br;$TTL 86400@ IN SOA ns1.dominio.com.br. hostmaster.marcospinguim.com.br. (2012010100 ; serial7200 ; refresh1800 ; retry1209600 ; expire300 ) ; minimum

NS ns1.marcospinguim.com.br.NS ns2.marcospinguim.com.br.

100 PTR marcospinguim.com.br.10 PTR ns1.marcospinguim.com.br.11 PTR ns2.marcospinguim.com.br.57 PTR mail.marcospinguim.com.br.

8-verificar se há erros nas zona reversa# named-checkzone 0.168.192.in-addr.arpa /var/cache/bind/marcospinguim.com.br.rev

se der certo retornará algo tipo isso:

zone 0.168.192.in-addr.arpa/IN: loaded serial 2012010100OK

9-reiniciar o Bind# /etc/init.d/bind9 restart

se der certo retornará isso:

* Stopping domain name service... bind9 [ OK ]* Starting domain name service... bind9 [ OK ]

10- consultar o servidor DNS para testar as zonas$ dig @127.0.0.1 marcospinguim.com.br SOA

se der certo retornará algo tipo isso:

; <<>> DiG 9.7.0-P1 <<>> @127.0.0.1 marcospinguim.com.br SOA; (1 server found);; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64129;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:;marcospinguim.com.br. IN SOA

;; ANSWER SECTION:marcospinguim.com.br. 86400 IN SOA ns1.marcospinguim.com.br. hostmaster.marcospinguim.com.br. 2012010100 7200 1800 1209600 300

;; AUTHORITY SECTION:marcospinguim.com.br. 86400 IN NS ns1.marcospinguim.com.br.marcospinguim.com.br. 86400 IN NS ns2.marcospinguim.com.br.

;; ADDITIONAL SECTION:ns1.marcospinguim.com.br. 86400 IN A 192.168.1.100ns2.marcospinguim.com.br. 86400 IN A 192.168.0.101

;; Query time: 3 msec;; SERVER: 127.0.0.1#53(127.0.0.1);; WHEN: Thu Jan 5 19:29:53 2012;; MSG SIZE rcvd: 153

Pronto, existem outras formas, mas acredito que essa é a mais simples!

Fontes:http://www.hardware.com.br/tutoriais/instalando-servidor-dns/http://www.hardware.com.br/tutoriais/configurando-rede-linux/pagina7.htmlhttp://www.hardware.com.br/tutoriais/servidores-dns/pagina4.htmlhttp://blog.cesar.augustus.nom.br/instalando-o-servidor-bind-no-linux.htmlhttp://www.hardware.com.br/tutoriais/opendns/http://www.hardware.com.br/livros/linux-redes/configurando-bind.html

Curso de Certificação Linux LPI

Page 64: Curso de Certificação Linux LPI - Terminal Root

http://goo.gl/GEYz9http://pt.wikipedia.org/wiki/BIND

Curso Certificação Linux LPI-102: Compartilhamento via NFS

Nesse post vou mostrar como compartilhar uma pasta no Linux para acesso via rede por comando, o processo é bem simples.Esse acessoserá baseado em NFS, não tem nada a ver com o Samba, isso é pra compartilhamento entre duas ou mais máquinas Linux(de Linux praLinux), mais pra frente vou explicar via samba, mas por enquanto isso aqui é mais importante.

NFS é um protocolo de sistema de arquivos para compartilhamento entre arquivos e diretórios entre computadores conectadosem rede.è com NFS que é feito o acesso, existem outras formas, mas certifique-se que essa é a mais simples e a melhor.

Primeiramente temos de ter dois pacotes instalados, precisa ser root # su:

1 - nfs-kernel-server ---- que deve ser instalado no Server(a máquina que compartilhará o arquivo ou a pasta).Para instalá-lo no Debian e similares:# apt-get install nfs-kernel-server

Convém também instalar o portmap, caso não esteja instalado:# apt-get install portmap

2- nfs-common ---- que deve ser instalado no Client(máquina que acessará a tal pasta ou arquivo).Para instalá-lo no Debian e similares:# apt-get install nfs-common

No Server, precisamos informar qual a pasta será compartilhada e quais as permissões, para isso edite o arquivo:# vim /etc/exports

Após as linhas iniciais e comentado com #(tralha), crie uma nova linha sem #(tralha) e informe o endereço da pasta no PC e aspermissões do mesmo, exemplo:/home/usuario/pasta_a_ser_compartilhada 192.168.1.102(rw,async)

, ou seja, o caminho da pasta;"rw" permissão de leitura(r) e escrita(w); o item async permite que o NFS transfira arquivos de forma"assíncrona", sem precisar esperar pela resposta do cliente; e o IP que pode acessar a pasta que foi compartilhada.Depois de adicionar alinha, salve o arquivo, lembrando que caso você deseje liberar uma faixa de ips, basta usar o *(asterisco), exemplo: 192.168.1.*, todosdessa faixa poderão acessar, ou até mesmo utilizar nome da Estação.

Para aplicar as alterações no arquivo exports para que o mesmo possa ser lido pelo Kernel, é necessario, exportar e reiniciar o serviço,reinicie também o Portmaps, com os comando:# exportfs -ra# /etc/init.d/nfs-kernel-server restart# /etc/init.d/portmap restart

Agora vamos no cliente(máquina que acessará a pasta).Para isso iremos precisar montar a pasta compartilhada da rede, então nadamelhor do que você criar uma pasta para receber a montagem, então crie no local onde você deseja essa pasta, exemplo:# mkdir /home/usuario/nome_da_pasta

, e então montamos a pasta compartilhada dentro da que criamos com o seguinte comando:# mount -t nfs 192.168.1.101:/home/server/pasta_compartilhada /home/cliente/pasta_criada

, ou seja, a opção (-t) do mount informa o tipo, e eespecificamos o tipo com o nome do tipo que é "nfs", depois informamos o IP que está apasta compartilhada(o Server) e o local onde montaremos essa pasta, endeço no cliente.

Caso não consiga o acesso, lembre-se de dar permissões locais com o "chmod".Se seu PC pegou um IP via DHCP diferente do que vocêpermitiu no "exports", você pode alterálo com o seguinte comando:# ifconfig eth0 192.168.1.102/16 dev eth0

(note que o ip fica a seu critério e o /16 é a mascara 255.255.0.0 na tabela), se desejar especificar um gateway, utilize:# route add default gw 192.168.1.1 netmask 255.255.0.0 dev eth0

, mas isso é outro assunto...

Para mais informações sobre o NFS, Clique Aqui

Pronto, parece ser complicado, mas é muito simples, é só pôr a mão na massa e pronto!Espero que gostem e comentem.

Curso Certificação Linux LPI-102: Configurando o Shell Seguro OpenSSH

Curso de Certificação Linux LPI

Page 65: Curso de Certificação Linux LPI - Terminal Root

Em informática o Secure Shell ou SSH é, simultaneamente, um programa de computador e um protocolo de rede que permite a conexãocom outro computador na rede, de forma a executar comandos de uma unidade remota. Possui as mesmas funcionalidades do TELNET,com a vantagem da conexão entre o cliente e o servidor ser criptografada.Uma de suas mais utilizadas aplicações é o chamado Tunnelling,que oferece a capacidade de redirecionar pacotes de dados.

Instalação

Para instalar o cliente e os server, apesar do cliente já vir instalado por default no Debian e em outras distribuições:# apt-get install openssh-client openssh-server

Usuários e Conexão

Para conectar via IP ou por nome, levará em conta o nome do usuario que você está logado no local de conexão, exemplo se você estácomo "root", ele solicitará a senha de "root" do computador que você deseja, se tiver logado como "marcos" se no computador que vocêestá tentando logar como "marcos" não houver este usuário, você receberá a "Conection Refused", e se tiver, deverá colocar a senha, ouusar o nome do usuario na frente e depois por o "@" e logo após o IP ou o nome do computador, depois é só pôr a senha do usuario ex.:# ssh 192.168.1.107# ssh algumsite.com# ssh [email protected]# ssh [email protected]

, DEBUG - LOG - faça a conexão com -vv para exibir as mensagens, ajuda na localização de problemas, tente também iniciar o iniciar oservidor em modo debug (ssh -d) e conectar com o cliente, provavelmente o servidor vai exibir as mensagens de erros, tais comopermissões e etc..., exemplos:# ssh -vv marcos@localhost# ssh -v marcos@localhost

, para restringir acesso, deve editar o arquivo # /etc/ssh/sshd_config, no arquivo que se abrirá, procure a linha que contém a palavra"Subsystem", estará assim:Subsystem sftp /usr/lib/openssh/sftp-server

, bastar adicionar o "AllowUsers", ficará assim, ex.:Subsystem sftp /usr/lib/openssh/sftp-serverAllowUsers marcos eric camila

,Enquanto não utilizada a diretiva "AllowUsers" qualquer usuário da maquina pode conectar via ssh. Quando acrescenta-la, passa apermitir apenas os usuários listados e válidos na maquina, esta diretiva prevalece sobre a regra "default" que permite login de todos.

Alterando a Porta

A porta padrão do ssh é 22, por isto tem muitos scripts que ficam tentando conexão nesta porta, por este e outros motivos, pode se alterara porta do ssh, por exemplo, alterar de 22 para porta 2222, use seu editor preferido para editar o arquivo /etc/ssh/sshd_config e procurepela linha; #Port 22 altere para Port 2222, depois de efetuar a alteração, precisa reiniciar o serviço, veja no tópico sobre instalação, paratestar na própria maquina, em um konsole execute a linha de comando neste formato:# ssh -p 2222 [email protected]# /etc/init.d/ssh restart

Copiar arquivos remotamente com SSH

Nesse exemplo abaixo vou copiar o arquivo "teste.txt" para o a máquina remota, isso será copiado para o diretório /home/marcos/, lógico,irá pedir senha antes de executar a cópia:# scp teste.txt [email protected]:~/[email protected]'s password:

ou# scp teste.txt [email protected]:/home/marcos/[email protected]'s password:

, para copiar todos os arquivos e sub-diretórios a partir do Shell local para o home do usuário marcos no destino.scp -r * [email protected]:~/

, para copiar para um sub-diretorio especifico no micro de destino, não use (~) e informe o caminho:scp -r * [email protected]:/home/marcos/pasta_server/

, para copiar da máquina remota para máquina local, usa-se o ponto no final e o formato assim:scp [email protected]:/home/eric/arquivo_remoto.txt .

, o ponto no final da linha indica para salvar no diretório atual.Salvar em outro local, substitua o ponto "." pelo caminho na maquina local,exemplo para salvar na maquina local em /home/marcos/tmp:scp [email protected]:~/teste.txt /home/marcos/tmpscp -r [email protected]:~/isos /home/marcos/tmp

Tem diversas outras coisa que você pode fazer com o SSH, caso deseje mais informações, consulte:http://zago.eti.br/ssh/ssh.html , e lá possui mais fontes.

Curso de Certificação Linux LPI

Page 66: Curso de Certificação Linux LPI - Terminal Root

Espero que gostem e comentem!

Curso Certificação Linux LPI-102: Configurando o Apache

O servidor Apache (ou Servidor HTTP Apache, em inglês: Apache HTTP Server, ou simplesmente: Apache) é o mais bemsucedido servidor web livre. Foi criado em 1995 por Rob McCool, então funcionário do NCSA (National Center forSupercomputing Applications). Numa pesquisa realizada em dezembro de 2007, foi constatado que a utilização do Apacherepresenta cerca de 47.20% dos servidores ativos no mundo. Em maio de 2010, o Apache serviu aproximadamente 54,68% detodos os sites e mais de 66% dos milhões de sites mais movimentados. É a principal tecnologia da Apache Software Foundation,responsável por mais de uma dezena de projetos envolvendo tecnologias de transmissão via web, processamento de dados eexecução de aplicativos distribuídos.

O servidor é compatível com o protocolo HTTP versão 1.1. Suas funcionalidades são mantidas através de uma estrutura de módulos,permitindo inclusive que o usuário escreva seus próprios módulos — utilizando a API do software.

É disponibilizado em versões para os sistemas Windows, Novell Netware, OS/2 e diversos outros do padrão POSIX (Unix, Linux,FreeBSD, etc.). Etimologia

A razão para o nome "Apache" dada pela Apache Software Foundation, é que faz referência à nação Apache, tribo de nativosamericanos que tinha, em combate, grande resistência e estratégias superiores. Isso seria uma alusão à resistência dacomunidade do software livre aos ataques de interesses privados . O nome refere-se também à estabilidade do servidor Apachee a sua variedade de ferramentas capazes de lidar com qualquer tipo de solicitação na web. Uma terceira razão, que é aceitapopularmente, reconhecida porém refutada pela Fundação, é que o nome viria de "a patchy server", que em inglês significaalgo como um servidor remendado, ou melhoria no software, dada a origem do programa, criado sobre o código do servidor daNCSA já existente, no qual foram adicionados diversos patches.

Surge uma quarta explicação para o nome com o lançamento do Tomcat (um sistema auxiliar ao Apache que cuida basicamente deprocessamento de aplicativos em Java), já que "Tomcat" nome de uma aeronave estadunidense, o F-14 Tomcat e "Apache" é o nome de umhelicóptero de ataque, o AH-64 Apache).

Segurança

Para garantir segurança nas transações HTTP, o servidor dispõe de um módulo chamado mod_ssl, o qual adiciona a capacidade doservidor atender requisições utilizando o protocolo HTTPS. Este protocolo utiliza uma camada SSL para criptografar todos os dadostransferidos entre o cliente e o servidor, provendo maior grau de segurança, confidencialidade e confiabilidade dos dados. A camada SSL écompatível com certificados X.509, que são os certificados digitais fornecidos e assinados por grandes entidades certificadoras no mundo.

Configuração

O servidor é configurado por um arquivo mestre nomeado httpd.conf e opcionalmente pode haver configurações para cadadiretório utilizando arquivos com o nome .htaccess, onde é possível utilizar autenticação de usuário pelo próprio protocoloHTTP utilizando uma combinação de arquivo .htaccess com um arquivo .htpasswd, que guardará os usuários e senhas(criptografadas).

Autenticação no Apache2

Vou explicar aqui como você disponibilizar o acesso a uma pasta do Apache(www) exigindo usuario e senha.

01. Primeiramente devemos criar o diretório onde desejamos restringir o acesso caso o mesmo não exista.

# mkdir /var/www/teste

02. Criaremos agora um arquivo somente para testes com o nome "index.html" no diretório "/var/www/teste".

# echo Testando autenticação no Apache > /var/www/teste/index.html

03. Criar os arquivos .htaccess e passwd no diretório onde se deseja restringir o acesso.

# touch passwd .htaccess

04. Conteúdo do arquivo .htaccess

AuthName "Nome que aparecerá no título da janela"AuthType Basic

Curso de Certificação Linux LPI

Page 67: Curso de Certificação Linux LPI - Terminal Root

AuthUserFile /var/www/teste/passwdrequire valid-user

05) Criação dos usuários que terão permissão para acessar o diretório:

# htpasswd -c passwd usuário

Será pedida a senha do novo usuário e em seguida sua confirmação.

New password:Re-type new password:Adding password for user usuário

Ao abrir o arquivo de senhas (passwd), serão vistos os nomes de usuário e senhas criptografadas.

# more passwdusuário:ZzbJ.YtR6TyyU

06) Edite o arquivo"/etc/apache2/sites-available/default"

, colocando as seguintes linhas no final do arquivo antes da tag

</VirtualHost>

, substituindo todas as diretivas conforme suas necessidades, uma observação importante é para a tag

AllowOverride

, a mesma deve conter

"AuthConfig"

para que a autenticação seja bem sucedida.

Alias /teste/ "/var/www/teste/"<Directory "/var/www/teste/">Options Indexes MultiViews FollowSymLinksAllowOverride AuthConfigOrder deny,allowDeny from allAllow from 172.16.0.0/255.0.0.0 ::1/128</Directory>

07) Reinicie o serviço do Apache para atualizar as configurações.

# /etc/init.d/apache2 restart

08) Teste agora suas configurações acessando http://localhost/teste, fornecendo o nome de usuário senha.

Observações:as linhas abaixo se referem à restrição por IP, não são necessárias à autenticação.

Deny from allAllow from 172.16.0.0/255.0.0.0 ::1/128

e todo esse tramite desse ser feito pelo usuário root para funcionar.

Eu uso aqui e você, vai deixar de se proteger!

Fonte:Viva o Linux

Habilitar o mod_rewite no Apache (.htacces)

Pra quem vai trabalhar com MVC no PHP (por exemplo) precisa habilitar o mod_rewrite no Apache pra que funcione, segue ospassos pra fazer isso:

1-Logue como root:$ su

2-Abra o arquivo default do Apache:# vi /etc/apache2/sites-available/default

3-Edite o arquivo da seguinte forma: Altere a linha onde tem "AllowOverride None" dentro de <Directory /> substituindo por"AllowOverride AuthConfig" e altere a linha "AllowOverride None" dentro de <Directory /var/www/> substituindo por "AllowOverride All".Ex.:DocumentRoot /var/www/ <Directory /> Options FollowSymLinks Indexes AllowOverride AuthConfig </Directory> <Directory /var/www/> Options IndexesFollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory>

Curso de Certificação Linux LPI

Page 68: Curso de Certificação Linux LPI - Terminal Root

4- Não esqueça de habilitar o mod_rewrite:# a2enmod rewrite

5-Reinicie o apache:# /etc/init.d/apache2 restart

Agora vamos testar

6-Crie um arquivo .htacces dentro do diretório /var/www/:vi /var/www/.htaccess

7-Escreva isso dentro do Arquivo, salve e feche-o(em outro post explicarei isso):RewriteEngine OnRewriteCond %{SCRIPT_FILENAME} !-fRewriteCond %{SCRIPT_FILENAME} !-dRewriteRule ^(.*)$ index.php?chave=$1

8-Agora crie um arquivo index.php e cole o conteúdo logo abaixo:vi /var/www/index.php

Conteúdo:<?php echo $_GET['chave']; ?>

9-Acesse o endereço http://localhost/nomequalquer/outronome/:

Se imprimir na tela: nomequalquer/outronome/ (ou o nome que você escolheu), está tudo certo.Você já pode escreverseu Framework!

Curso Certificação Linux LPI-102: Segurança

Existem várias ferramentas de segurança que podem auxiliar a vida de um administrador de redes/sistemas no Linux. Aquiabordarei duas fundamentais para obter tal segurança:

° IPTABLES ° TCPWRAPPER

Vale ressaltar que segurança vai mais além, mas esses dois já estarão de bom tamanho para o entendimento de segurança, emdiversos outros aplicativos.

IPTABLESE aê galera!?Eu estava configurando meu Firewall hoje e decidi escrever um Post sobre Iptables pra documentar algumas informações.

Iptables é o nome da ferramenta do espaço do usuário que permite a criação de regras de firewall e NATs. Apesar de,tecnicamente, o iptables ser apenas uma ferramenta que controla o módulo netfilter(O netfilter é um módulo que fornece aosistema operacional Linux as funções de firewall, NAT e log dos dados que trafegam por rede de computadores.), o nome"iptables" é frequentemente utilizado como referência ao conjunto completo de funcionalidades do netfilter. O iptables é partede todas as distribuições modernas do Linux.

Ao reiniciar o computador as Regras de Firewall são perdidas, para isso é preciso criar um script para executar sempre que o computadorfor iniciado.

Para verificar quais regras estão criadas, se existir, o comando é:# iptables -L

, se não retornar nada é porque o pacote não está instalado, então você pode instalá-lo pelo comando:# apt-get install iptables

Curso de Certificação Linux LPI

Page 69: Curso de Certificação Linux LPI - Terminal Root

Rejeitar pacotes de uma porta:# iptables -A INPUT -p tcp --dport 445 -j DROP

Aceitar pacotes de uma porta:# iptables -A INPUT -p tcp --dport 445 -j ACCEPT

Desativar o iptables, isso libera todas as portas:# iptables -F

Essa regra abaixo fecha todas as portas, porém voçê conecta a internet normalmente, mas aplicativos como Apache por exemplo nãofuncionará no localhost.iptables -A INPUT -p tcp --syn -j DROP

, aqui abaixo a mesma regra, porém para o protocolo UDP.# iptables -A INPUT -i ppp0 -p udp --dport 0:30000 -j DROP

Lembrando que as tabelas do IPTABLES são lidas de cima pra baixo, ou seja, se você quiser fechar todas as portas e liberar somente oapache a porta 80, você precisa primeiro criar a regra que libera a porta 80 (ou as portas que você deseja), pra só depois fechar todas asoutras, exemplo:# iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT

, depois:iptables -A INPUT -p tcp --syn -j DROP

Para acessar pacotes de determinados IPs de uma rede interna, ou de uma determinada rede, você usar os comandos abaixo:# iptables -A INPUT -p tcp --syn -s 192.168.1.107/255.255.255.0 -j ACCEPTiptables -A INPUT -p tcp --syn -s 192.168.0.0/255.255.255.0 -j ACCEPT

, aceitar as requisições do IP 192.168..107 e no comando seguinte, aceitará todas as requisições da rede interna, se logo depois vc fechartudo pra internet, a regra de aceitar será válida, o inverso não.

Para configurações de compartilhamento, seria regras de NAT,assim:

Para compartilhar a conexão do modem com a rede local:# modprobe iptable_natiptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADEecho 1 > /proc/sys/net/ipv4/ip_forward

Para compartilhar uma conexão via ADSL ou cabo instalada na eth0:# modprobe iptable_natiptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEecho 1 > /proc/sys/net/ipv4/ip_forward

Para desativar o compartilhamento, você deve usar o comando :# iptables -t nat -F.

Uma observação é que estas regras não incluem um servidor DHCP, você deve configurar os clientes com endereço IP fixo ou então ativaro serviço DHCPD na sua distribuição.Será necessário também configurar os DNS, se não souber os endereços do seu provedor, você podeusar os DNS públicos do Google 8.8.8.8 e 8.8.4.4, mais informações sobre esses DNS Clique Aqui.

Mais uma linha interessante de se adicionar, que protege contra pacotes danificados (usados em ataques DoS por exemplo) é:# iptables -A FORWARD -m unclean -j DROP

, (esta linha deve ser adicionada antes das demais).Depois de todas as regras criadas, voçê criar um script em Shell e gravar na pasta /usr/bin/ com o nome que você deseja e poderá executaresse nome no terminal que automaticamente, será criadas as regras, lembrando que para isso tem de estar com permissão de execução edeve ser o usuário root.Você também pode torná-lo inicializável, em Debian e Debian-Likes(Ubuntu, Linux Mint,...) com o comando:update-rc.d nome_do_script defaults

, para excluir basta trocar o defaults por remove.

Para fazer um forward(Redirecionamento, exemplo: uma solicitação de jogo na porta 27020, você quer que seja direcionada ao PC192.168.1.107 da sua rede)com Iptables.# modprobe iptable_natiptables -t nat -A PREROUTING -i etho -p tcp --dport 22 -j DNAT --to-dest 192.168.1.107iptables -A FORWARD -p tcp -i eth0 --dport 22 -d 192.168.1.107 -j ACCEPT

Você pode repetir o comando várias vezes para direcionar varias portas diferentes para várias máquinas. Naturalmente uma mesma portanão pode ser fowardada duas vezes.Para um range de portas, o Counter Strike pode usar mesmo da 27015 até 27030, se você não qualporta dessa range do seu colega está aberta, então você pode abrir esta faixa de portas assim:# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 27015:27030 -j DNAT --to-dest 192.168.1.107iptables -A FORWARD -p tcp -i eth0 --dport 27015:27030 -d 192.168.1.107 -j ACCEPT

Curso de Certificação Linux LPI

Page 70: Curso de Certificação Linux LPI - Terminal Root

Eu crie um script em PHP para verificar quais portas estão abertas da porta 1 até a 1024, se gue abaixo:$servidor="127.0.0.1";for($i=1;$i<1024;$i++){$con = fsockopen($servidor, $i, $errono, $errostr, 3);if($con){echo 'A porta '.$i.' está aberta!';}}fputs($con, "Portas");fclose($con);

Mas você pode utilizar o Nmap para verificar quais portas estão abertas no seu micro, para instalá-lo no Debian e Debian-Likes, basta:# apt-get install nmap

, para analisar em rede interna use o IP interno, para análise à internet use seu IP externo, para loopback use:# nmap 127.0.0.1

Há também um serviço online que tem como você efetuar testes de portas e de invasões, eu uso muito ele, é o http://www.grc.com/

-clique em Services-depois clique em ShieldsUP-depois clique em proceed-clique em "Proceed"- e inicie o teste clicando em "All Service Ports".

É isso aê, espero que gostem e comentem.Fonte:www.hardware.com.br

TCPWRAPPER O TCP Wrappers são usados para aplicar regras de acesso aos servidores utilizados em sistema, podendo permitir ou negar as conexões aeles. Eles são controlados por dois arquivos: /etc/hosts.allow (configuração de acessos permitidos para determinados IPs) e /etc/hosts.deny(configuração de acesso negados para determinados IPs) TCP. Sigla para “Transmission Control Protocol”.

/etc/hosts.allow

– Se uma regra deste arquivo for atendida, o acesso ao serviço pe permitido

/etc/hosts.deny

- Se uma regra deste arquivo for atendida, o acesso ao serviço é negado

As regras destes arquivos podem ser contruída de forma a corresponder a todos os serviços ou, alternativamente, a determinados serviçosespecíficos. Se não houver nenhuma correspondência nos dois arquivos, o acesso ao serviço é permitido. É comum se especificar regrasparticulares no arquivo hosts.allow e específicar uma negativa geral no arquivo hosts.deny, limitando assim o acesso aos clientes que vocêespecificamente permitir. A linguagem dos arquivos de controle consiste de uma lista de serviços, seguida por dois-pontos, seguida poruma lista de hosts. Os hosts podem ser específicados por nome ou por endereço IP.

Por exemplo: Para negar acesso a todos os serviços, exceto ao ftp no domínio local, poderiam ser usados estes dois arquivos simples:

hosts.allow

– Esta entrada permite acesso ao ftp aos clientes do domínio local

ftp: LOCAL

hosts.deny – Esta entrada nega o acesso a todos os serviços a todos os clientes

ALL: ALL

Entendendo um pouco mais…

Existem dezenas de possibilidades de configuração para o tcp_wrappers e é possível estudá-las em extensão através das páginas demanual hosts_access e hosts_options. Portanto, serão ilustrados apenas alguns casos interessantes do uso desta ferramenta. As regras decontrole de acesso, existentes nestes dois arquivos, têm o seguinte formato:

lista_de_daemons : lista_de_clientes [: comando]

lista_de_daemons: Lista de um ou mais nomes de daemons (como especificados no /etc/inetd.conf), ou curingas. lista_de_clientes: Listade um ou mais endereços ou nomes de máquinas, padrões ou curingas utilizados para especificar quais clientes podem e quais nãopodem acessar o serviço.

comando (opcional): É possível executar um comando sempre que uma regra casa com um padrão e é utilizada. Veja exemplos a seguir.Como citado anteriormente, curingas podem ser utilizados tanto na lista de daemons quanto na lista de clientes. Entre os existentes,pode-se destacar os seguintes:

ALLSignifica todos os serviços ou todos os clientes, dependendo apenas do campo em que se encontra.LOCALEste curinga casa com qualquer nome de máquina que não contenha um caractere ponto “.”, isto é, uma máquina local.PARANOIDCasa com qualquer nome de máquina que não case com seu endereço. Isto geralmente ocorre quando algum servidor DNS está malconfigurado ou quando alguma máquina está tentando se passar por outra.

/etc/hosts.allow

Curso de Certificação Linux LPI

Page 71: Curso de Certificação Linux LPI - Terminal Root

O arquivo /etc/hosts.allow é um arquivo de configuração do programa /usr/sbin/tcpd. O arquivo hosts.allow contém regras descrevendo quehosts tem permissão de acessar um serviço em sua máquina.

O formato do arquivo é muito simples:

# /etc/hosts.allow## lista de serviços: lista de hosts : comando

lista de serviços

É uma lista de nomes de serviços separados por vírgula que esta regra se aplica. Exemplos de nomes de serviços são: ftpd, telnetd efingerd.

lista de hosts

É uma lista de nomes de hosts separada por vírgula. Você também pode usar endereços IP’s aqui. Adicionalmente, você pode especificarnomes de computadores ou endereço IP usando caracteres coringas para atingir grupos de hosts.

Exemplos incluem: gw.vk2ktj.ampr.org para conferir com um endereço de computador específico, .uts.edu.au para atingir qualquerendereço de computador finalizando com aquele string. Use 200.200.200. para conferir com qualquer endereço IP iniciando com estesdígitos. Existem alguns parâmetros especiais para simplificar a configuração, alguns destes são: ALL atinge todos endereços, LOCALatinge qualquer computador que não contém um “.” (ie. está no mesmo domínio de sua máquina) e PARANOID atinge qualquercomputador que o nome não confere com seu endereço (falsificação de nome). Existe também um último parâmetro que é também útil: oparâmetro EXCEPT lhe permite fazer uma lista de exceções. Isto será coberto em um exemplo adiante.

comando

É um parâmetro opcional. Este parâmetro é o caminho completo de um comando que deverá ser executado toda a vez que esta regraconferir. Ele pode executar um comando para tentar identificar quem esta conectado pelo host remoto, ou gerar uma mensagem viaE-Mail ou algum outro alerta para um administrador de rede que alguém está tentando se conectar.

Existem um número de expansões que podem ser incluídas, alguns exemplos comuns são: %h expande o endereço do computador que estáconectado ou endereço se ele não possuir um nome, %d o nome do daemon sendo chamado.

Se o computador tiver permissão de acessar um serviço através do /etc/hosts.allow, então o /etc/hosts.deny não será consultado e o acessoserá permitido.

Como exemplo:

# /etc/hosts.allow## Permite que qualquer um envie e-mailsin.smtpd: ALL# Permitir telnet e ftp somente para hosts locais e myhost.gnulinuxbr.comin.telnetd, in.ftpd: LOCAL, myhost.gnulinuxbr.com

Qualquer modificação no arquivo /etc/hosts.allow entrará em ação após reiniciar o daemon inetd. Isto pode ser feito com o comando kill-HUP [pid do inetd], o pid do inetd pode ser obtido com o comando ps ax|grep inetd.

/etc/hosts.deny

O arquivo /etc/hosts.deny é um arquivo de configuração das regras descrevendo quais computadores não tem a permissão de acessar umserviço em sua máquina.

Um modelo simples deste arquivo se parece com isto:

# /etc/hosts.deny## Bloquear o acsso SSH para todos, exceto para a rede 10.0.0.0

sshd: ALL EXCEPT 10.0.0.0/24

Tendo um padrão ALL: ALL no arquivo /etc/hosts.deny e então ativando especificamente os serviços e permitindo computadores que vocêdeseja no arquivo /etc/hosts.allow é a configuração mais segura.

Qualquer modificação no arquivo /etc/hosts.deny entrará em ação após reiniciar o daemon inetd. Isto pode ser feito com o comando kill-HUP [pid do inetd], o pid do inetd pode ser obtido com o comando ps ax|grep inetd.

Importante saber:

O arquivo hosts.deny é consultado depois de hosts.allow, permitindo ao administrador definir regras específicas de permissão, que serãoaplicadas antes das regras de proibição ou de uma negativa geral. Exemplo de Configuração do tcp_wrappers

Exemplos dos arquivos /etc/hosts.allow e /etc/hosts.deny

Arquivo /etc/hosts.denyALL:ALLArquivo /etc/hosts.allowALL: localhostin.ftpd: .minhaorganizacaoipop3d: ALL

Configuração do tcp_wrappers menos restritiva, considere o mesmo arquivo /etc/hosts.deny do exemplo anterior:

Configuração do tcp_wrappers menos restritivaArquivo /etc/hosts.allowALL: localhostin.ftpd: .minhaorganizacao 10.0.0.0/255.255.255.0 192.168ipop3d: ALL EXCEPT gnulinuxbr.com

Neste último caso, máquinas da rede “10.0.0.0/255.255.255.0” e máquinas em que o endereço IP inicie por “192.168.” também podem

Curso de Certificação Linux LPI

Page 72: Curso de Certificação Linux LPI - Terminal Root

acessar o serviço FTP. Note que foi utilizado um operador novo para o serviço ipop3d: EXCEPT. Isto permitiu que o acesso a este serviçofosse liberado para todos, exceto para máquinas da rede “gnulinuxbr.com”. O operador EXCEPT pode ser utilizado tanto na lista declientes quanto na lista de serviços. Por exemplo, a linha:ALL EXCEPT in.ftpd: ALLno arquivo /etc/hosts.allow permite o acesso a todos os serviços, exceto o FTP, para qualquer máquina.

Todos os acessos, bem-sucedidos ou não, são registrados através do syslog, em /var/log/secure. É recomendado que este arquivo sejaperiodicamente analisado à procura de tentativas de invasão. Testando a Configuração Negue certos serviços para uma máquina de suarede (como por exemplo o serviço telnet) e após reinicializar o xinetd, procure fazer acessos da máquina onde o serviço foi negado.

Curso Certificação Linux LPI-102: Criptografia de Dados

Usando pgp (gpg)para criptografia de arquivos

O gpg (GNU pgp, versão livre da ferramenta pgp) permite encriptar dados, assim somente o destinatário terá acesso aos dados,adicionalmente poderá verificar se a origem dos dados é confiável (através da assinatura de arquivos). O sistema PGP se baseia noconceito de chave pública e privada: Sua chave pública é distribuída para as pessoas que deseja trocar dados/mensagens e a chave privadafica em sua máquina (ela não pode ser distribuída). As chaves públicas e privadas são armazenadas nos arquivos pubring.gpg esecring.gpg respectivamente, dentro do subdiretório ~/.gnupg. Veja [#s-d-cripto-gpg-criando Criando um par de chaves pública/privada,Seção 20.5.2] para criar este par de chaves. Os dados que recebe de outra pessoa são criptografados usando sua chave pública e somentevocê (de posse da chave privada) poderá desencriptar os dados. Quando assina um arquivo usando o pgp, ele faz isto usando sua chaveprivada, o destinatário de posse da chave pública poderá então confirmar que a origem dos dados é confiável. O gpg vem largamente sendousado para transmissão segura de dados via internet. Muitos programas de e-mails como o mutt e sylpheed incluem o suporte a pgpembutido para envio de mensagens assinadas/encriptadas (MIME não tem uma codificação segura e não garante que a mensagem vem dequem realmente diz ser). Um servidor de e-mail no Linux configurado como as mesmas configurações/endereços do provedor da vítimapode enganar com sucesso um usuário passando-se por outro.

Instalando o PGP

# apt-get install gnupg

Após instalar o gnupg, execute o comando gpg para criar o diretório ~/.gnupg que armazenará as chaves pública e privada.

Criando um par de chaves pública/privada

Para gerar um par de chaves pessoais use o comando gpg --gen-key. Ele executará os seguintes passos:

Chave criptográfica - Selecione DSA e ELGamal a não ser que tenha necessidades específicas. Tamanho da chave - 1024 bits traz uma boa combinação de proteção/velocidade. Validade da chave - 0 a chave não expira. Um número positivo tem o valor de dias, que pode ser seguido das letras w (semanas), m(meses) ou y (anos). Por exemplo, "7m", "2y", "60".

Após a validade, a chave será considerada inválida.

Nome de usuário - Nome para identificar a chave E-mail - E-mail do dono da chave comentário - Uma descrição sobre a chave do usuário. Confirmação - Tecle "O" para confirmar os dados ou uma das outras letras para modificar os dados de sua chave. Digite a FraseSenha - Senha que irá identificá-lo(a) como proprietário da chave privada. É chamada de FraseSenha pois pode conterespaços e não há limite de caracteres.Confirme e aguarde a geração da chave pública/privada.

Encriptando dados

Use o comando gpg -e arquivo faz a encriptação de dados:

gpg -e arquivo.txt

Será pedida a identificação de usuário, digite o nome que usou para criar a chave. O arquivo criado será encriptado usando a chavepública do usuário (~/.gnupg/pubring.gpg) e terá a extensão .gpg adicionada (arquivo.txt.gpg). Além de criptografado, este arquivo écompactado (recomendável para grande quantidade de textos). A opção -a é usada para criar um arquivo criptografado com saída ASCII 7bits:

gpg -e -a arquivo.txt

O arquivo gerado terá a extensão .asc acrescentada (arquivo.txt.asc) e não será compactado. A opção -a é muito usada para o envio dee-mails. Para criptografar o arquivo para ser enviado a outro usuário, você deverá ter a chave pública do usuário cadastrado no seuchaveiro e especificar a opção -r seguida do nome/e-mail/ID da chave pública:

gpg -r kov -e arquivo.txt

O exemplo acima utiliza a chave pública de kov para encriptar o arquivo arquivo.txt (somente ele poderá decriptar a mensagem usandosua chave privada). OBS: É recomendável especificar o nome de arquivo sempre como último argumento.

Decriptando dados com o gpg

Agora vamos fazer a operação reversa da acima, a opção -d é usada para decriptar os dados usando a chave privada:

Curso de Certificação Linux LPI

Page 73: Curso de Certificação Linux LPI - Terminal Root

gpg -d arquivo.txt.asc >arquivo.txt gpg -d arquivo.txt.gpg >arquivo.txt

Descriptografa os arquivos arquivo.txt.asc e arquivo.txt.gpg recuperando seu conteúdo original. A sua "FraseSenha" será pedida paradescriptografar os dados usando a chave privada (~/.gnupg/secring.gpg).

Assinando arquivos

Assinar um arquivo é garantir que você é a pessoa que realmente enviou aquele arquivo. Use a opção -s para assinar arquivos usando suachave privada:

gpg -s arquivo.txt

A "FraseSenha" será pedida para assinar os dados usando sua chave privada. Será gerado um arquivo arquivo.txt.gpg (assinado ecompactado). Adicionalmente a opção --clearsign poderá ser usada para fazer uma assinatura em um texto plano, este é um recurso muitousado por programas de e-mails com suporte ao gpg:

gpg -s --clearsign arquivo.txt

Será criado um arquivo chamado arquivo.txt.asc contendo o arquivo assinado e sem compactação.

Checando assinaturas

A checagem de assinatura consiste em verificar que quem nos enviou o arquivo é realmente quem diz ser e se os dados foram de algumaforma alterados. Você deverá ter a chave pública do usuário no seu chaveiro para fazer esta checagem . Para verificar os dados assinadosacima usamos a opção --verify:

gpg --verify arquivo.txt.asc

Se a saída for "Assinatura Correta", significa que a origem do arquivo é segura e que ele não foi de qualquer forma modificado.

gpg --verify arquivo.txt.gpg

Se a saída for "Assinatura INCORRETA" significa que ou o usuário que enviou o arquivo não confere ou o arquivo enviado foi de algumaforma modificado.

Extraindo sua chave pública do chaveiro

Sua chave pública deve ser distribuída a outros usuários para que possam enviar dados criptografados ou checar a autenticidade de seusarquivos. Para exportar sua chave pública em um arquivo que será distribuído a outras pessoas ou servidores de chaves na Internet, use aopção --export:

gpg --export -a usuario >chave-pub.txt

Ao invés do nome do usuário, poderá ser usado seu e-mail, ID da chave, etc. A opção -a permite que os dados sejam gerados usando bitsASCII 7.

Adicionando chaves públicas ao seu chaveiro pessoal

Isto é necessário para o envio de dados criptografados e checagem de assinatura do usuário, use a opção --import:

gpg --import chave-pub-usuario.txt

Assumindo que o arquivo chave-pub-usuario.txt contém a chave pública do usuário criada em [#s-d-cripto-gpg-c-e Extraindo sua chavepública do chaveiro, Seção 20.5.7]. O gpg detecta chaves públicas dentro de textos e faz a extração corretamente. Minha chave públicapode ser encontrada em [ch-apend.html#s-apend-pgp Chave Pública PGP, Seção 21.8] ou http://pgp.ai.mit.edu.

Listando chaves de seu chaveiro

Use o comandogpg --list-keys

para listar as chaves pública do seu chaveiro. O comando gpg --list-secret-keys lista suas chaves privadas.

Apagando chaves de seu chaveiro

Quando uma chave pública é modificada ou por qualquer outro motivo deseja retira-la do seu chaveiro público, utilize a opção--delete-key:

gpg --delete-key usuario

Pode ser especificado o nome de usuário, e-mail IDchave ou qualquer outro detalhe que confira com a chave pública do usuário. Serápedida a confirmação para excluir a chave pública. OBS: A chave privada pode ser excluída com a opção --delete-secret-key. Utilize-a com o

Curso de Certificação Linux LPI

Page 74: Curso de Certificação Linux LPI - Terminal Root

máximo de atenção para excluir chaves secretas que não utiliza (caso use mais de uma), a exclusão acidental de sua chave secretasignifica é como perder a chave de um cofre de banco: você não poderá descriptografar os arquivos enviados a você e não poderá enviararquivos assinados. Mesmo assim se isto acontecer acidentalmente, você poderá recuperar o último backup da chave privada em ~/.gnupg/secring.gpg~.

Mudando sua FraseSenha

Execute o comando gpg --edit-key usuário, quando o programa entrar em modo de comandos, digite passwd. Será lhe pedida a "FraseSenha" atual e a nova "Frase Senha". Digite "save" para sair e salvar as alterações ou "quit" para sair e abandonar o que foi feito. O gpg--edit-key permite gerenciar diversos aspectos de suas chaves é interessante explora-lo digitando "?" para exibir todas as opçõesdisponíveis.

Assinando uma chave digital

A assinatura de chaves é um meio de criar laços de confiança entre usuários PGP. Assinar uma chave de alguém é algo sério, você deve ternoção do que isto significa e das consequências que isto pode trazer antes de sair assinando chaves de qualquer um. O próprio teste paradesenvolvedor da distribuição Debian requer como primeiro passo a identificação do candidato, caso sua chave pgp seja assinada poralgum desenvolvedor desta distribuição, imediatamente o teste de identificação é completado. A partir disso você deve ter uma noçãobásica do que isto significa. Para assinar uma chave siga os seguintes passos:

Importe a chave pública do usuário (veja [#s-d-cripto-gpg-c-a Adicionando chaves públicas ao seu chaveiro pessoal, Seção 20.5.8]). Execute o comando gpg --edit-key usuario (onde usuario é o nome do usuário/e-mail/IDchave da chave pública importada). Digite list, e selecione a chave pública (pub) do usuário com o comando uid [numero_chave]. Para assinar todas as chaves públicas dousuário, não selecione qualquer chave com o comando uid. Para assinar a chave pública do usuário digite sign, será perguntado se deseja realmente assinar a chave do usuário e então pedida a"FraseSenha" de sua chave privada. Digite "list", repare que existe um campo chamado trust: n/q no lado direito. O primeiro parâmetro do "trust" indica o valor deconfiança do dono e o segundo (após a /) o valor de confiança calculado automaticamente na chave. As seguintes possuem o seguintesignificado: - - Nenhum dono encontrado/confiança não calculada. e - Chave expirada/falha na checagem de confiança. q - Quando não conhece o usuário. n - Quando não confia no usuário (é o padrão). m - Pouca confiança no usuário. f - Totalmente confiável. u - Indiscutivelmente confiável. Somente usado para especificar a chave pública do próprio usuário.

O valor de confiança da chave pode ser modificado com o comando trust e selecionando uma das opções de confiança. Os valores deconfiança para a chave pública pessoal é -/u (não é necessário calcular a confiança/indiscutivelmente confiável).

Listando assinaturas digitais

Execute o comando gpg --list-sigs para listas todas as assinaturas existentes no seu chaveiro. Opcionalmente pode ser especificado umparâmetro para fazer referência a assinatura de um usuário:gpg --list-sigs usuario. O comando gpg --check-sigs adicionalmente faz achecagem de assinaturas.

Recomendações para a assinatura de chaves gpg

Este texto foi divulgado por uma pessoa que pediu para permanecer anônima na lista [email protected] explicandoos procedimentos de segurança para a troca de chaves públicas individuais e em grupo de usuários. Ele é um pouco longo mas a pessoa éespecializada no assunto, e seu foco é a segurança na troca de chaves e o que isto significa. Após consulta ao autor do texto, o texto foireproduzido na íntegra, mantendo os padrões de formatação da mensagem.

Trocando assinaturas de chaves digitais

Direitos de republicação cedidos ao domínio público, contanto que o texto seja reproduzido em sua íntegra, sem modificações de quaisquer espécie, e incluindo o título e nome do autor.

1. Assinaturas digitais 2. Chaves digitais e a teia de confiança 3. Trocando assinaturas de chaves digitais com um grupo de pessoas

1. Assinaturas digitais

Uma assinatura digital é um número de tamanho razoável (costuma ter de 128 a 160 bits) que representa um bloco bem maior de informação, como um e-mail.

Pense numa assinatura como se ela fosse uma versão super-comprimida de um texto. Se você muda alguma coisa (por menor que seja) no texto que uma assinatura "assina", essa assinatura se torna inválida: ela não mais representa aquele texto.

Existe uma relação direta entre uma assinatura e informação que ela assina. Se uma das duas for modificada, elas passam a não mais "combinar" uma com a a outra. Um programa de computador pode detectar isso, e avisar que a assinatura é "inválida".

Os algoritmos mais usados para criar e verificar assinaturas digitais são o SHA-1, RIPEM160 e MD5. O MD5 não é considerado tão bom quanto os outros dois.

Assinaturas digitais também funcionam com arquivos "binários", ou seja: imagens, som, planilhas de cálculo... e chaves digitais.

2. Chaves digitais e a teia de confiança

Chaves digitais são fáceis de falsificar, você só precisa criar uma chave nova no nome de sicrano, por um endereço de e-mail novinho em folha daqueles que você consegue nesses webmail da vida, e pronto. Agora é só espalhar essa chave por aí que os bestas vão usá-la pensando que é de sicrano.

A menos que os "bestas" não sejam tão bestas assim, tenham lido o manual do seu software de criptografia, e saibam usar assinaturas e a teia de confiança para verificar se a tal chave é de sicrano mesmo.

Curso de Certificação Linux LPI

Page 75: Curso de Certificação Linux LPI - Terminal Root

Programas de criptografia (os bons, tipo PGP e GNUpg) usam um sistema de assinaturas nas chaves digitais para detectar e impedir esse tipo de problema: Ao usuário é dado o poder de "assinar" uma chave digital, dizendo "sim, eu tenho certeza que essa chave é de fulano, e que o e-mail de fulano é esse que está na chave".

Note bem as palavras "certeza", e "e-mail". Ao assinar uma chave digital, você está empenhando sua palavra de honra que o _nome_ do dono de verdade daquela chave é o nome _que está na chave_, e que o endereço de e-mail daquela chave é da pessoa (o "nome") que também está na chave.

Se todo mundo fizer isso direitinho (ou seja, não sair assinando a chave de qualquer um, só porque a outra pessoa pediu por e-mail, ou numa sala de chat), cria-se a chamada teia de confiança.

Numa teia de confiança, você confia na palavra de honra dos outros para tentar verificar se uma chave digital é legítima, ou se é uma "pega-bobo".

Suponha que Marcelo tenha assinado a chave de Cláudia, e que Roberto, que conhece Marcelo pessoalmente e assinou a chave de Marcelo, queira falar com Cláudia.

Roberto sabe que Marcelo leu o manual do programa de criptografia, e que ele não é irresponsável. Assim, ele pode confiar na palavra de honra de Marcelo que aquela chave digital da Cláudia é da Cláudia mesmo, e usar a chave pra combinar um encontro com Cláudia.

Por outro lado, Roberto não conhece Cláudia (ainda), e não sabe que tipo de pessoa ela é. Assim, rapaz prevenido, ele não confia que Cláudia seja uma pessoa responsável que verifica direitinho antes de assinar chaves.

Note que Roberto só confiou na assinatura de Marcelo porque, como ele já tinha assinado a chave de Marcelo, ele sabe que foi Marcelo mesmo quem assinou a chave de Cláudia.

Enrolado? Sim, é um pouco complicado, mas desenhe num papel as flechinhas de quem confia em quem, que você entende rapidinho como funciona.

O uso da assinatura feita por alguém cuja chave você assinou, para validar a chave digital de um terceiro, é um exemplo de uma pequena teia de confiança.

3. Trocando assinaturas de chaves digitais com um grupo de pessoas

Lembre-se: ao assinar uma chave digital, você está empenhando sua palavra de honra que toda a informação que você assinou naquela chave é verdadeira até onde você pode verificar, _e_ que você tentou verificar direitinho.

Pense nisso como um juramento: "Eu juro, em nome da minha reputação profissional e pessoal, que o nome e endereços de e-mail nessa chave são realmente verdadeiros até onde posso verificar, e que fiz uma tentativa real e razoável de verificar essa informação."

Sim, é sério desse jeito mesmo. Você pode ficar muito "queimado" em certos círculos se você assinar uma chave falsa, pensando que é verdadeira: a sua assinatura mal-verificada pode vir a prejudicar outros que confiaram em você.

Bom, já que o assunto é sério, como juntar um grupo de pessoas numa sala, e trocar assinaturas de chaves entre si? Particularmente se são pessoas que você nunca viu antes? Siga o protocolo abaixo, passo a passo, e sem pular ou violar nenhum dos passos.

1 - Reúna todos em uma sala, ou outro local não tumultuado, pressa e bagunça são inimigas da segurança.

2 - Cada um dos presentes deve, então, ir de um em um e:

2.1 - Apresentar-se, mostrando _calmamente_ documentação original (nada de fotocópia) comprovando sua identidade. RG, CPF, passaporte, certidão de nascimento ou casamento, carteira de motorista, cartão de crédito são todos bons exemplos. Só o RG sozinho não é -- tem muito RG falsificado por aí -- mas o RG junto com o cartão de banco já seria suficiente. Se nenhum documento tiver foto, também não é o bastante.

* Se alguém pedir o documento na mão, para verificar direitinho, não leve pro lado pessoal. Deixe a pessoa verificar até estar satisfeita (mas não descuide do documento). Isso só significa que ela leva muito a sério a responsabilidade de assinar chaves.

2.2 - Entregar um papel com as informações da chave: Nome (QUE OBRIGATORIAMENTE PRECISA SER O MESMO NOME CONSTANTE NOS DOCUMENTOS APRESENTADOS EM 2.1), e-mail, número da chave (keyID), e fingerprint da chave (assinatura digital da chave)

RECIPIENTE DO PAPEL: Se você achar que os documentos que te apresentaram não são prova suficiente, talvez porque o nome não bate com o da chave, ou porque uma foto nos documentos não está parecida com quem mostrou os documentos, marque discretamente no papel, porque você NÃO deve assinar essa chave. Se achar que o outro vai engrossar, não diga para ele que não vai assinar a chave dele.

3 - Pronto. Podem ir embora, porque o resto dos passos deve ser feito com calma, em casa. Lembre-se que você não vai estar efetuando nenhum julgamento moral a respeito de quem você assinar a chave. Você só irá afirmar que a chave de sicrano é realmente aquela, e mais nada.

4 - Para cada uma das chaves que você marcou no papel que "posso assinar":

4.1 - Peça para o seu programa de criptografia mostrar a chave e sua assinatura (fingerprint).

SE: O nome no papel for exatamente igual ao nome na chave (user ID/UID da chave). E: A assinatura no papel for

Curso de Certificação Linux LPI

Page 76: Curso de Certificação Linux LPI - Terminal Root

exatamente igual à assinatura na chave (fingerprint). ENTÃO: Vá para o passo 4.3.

4.2 - As informações não bateram, por isso você não deve assinar a chave. Se quiser, envie um e-mail avisando que não poderá assinar a chave. Não aceite tentativas de retificação por e-mail ou telefone. Um outro encontro face-Ã -face, refazendo todos os passos 2.1 e 2.2 é o único jeito de retificar o problema.

4.3 - As informações bateram, o que garante que o *nome* está correto. Agora é preciso ter certeza do endereço de e-mail. Para isso, envie uma e-mail *CIFRADA* pela chave que você está testando, para o endereço de e-mail constante na chave. Nessa e-mail, coloque uma palavra secreta qualquer e peça para o destinatário te responder dizendo qual a palavra secreta que você escreveu. Use uma palavra diferente para cada chave que estiver testando, e anote no papel daquela chave qual palavra você usou.

4.4 - Se você receber a resposta contendo a palavra secreta correta, você pode assinar a chave. Caso contrário, não assine a chave -- o endereço de e-mail pode ser falso.

Comandos do gpg (GNUpg) correspondentes a cada passo: 2.2 - gpg --fingerprint <seu nome ou 0xSuaKEYID> (retorna as informações que devem estar no papel a ser entregue no passo 2.2)

4.1 - gpg --receive-key <0xKEYID> (procura a chave especificada nos keyservers) gpg --sign-key <0xKEYID> (assina uma chave)

Assume-se que você sabe cifrar e decifrar mensagens. Caso não saiba, ainda não é hora de querer sair assinando chaves.

Criando arquivos .tar.gz com senha

Aqui vai uma dica para deixar seus arquivos compactados em tar.gz com senha, na verdade o arquivo será transformado num .gpg, segue:

Para compactar:

Cria o tar(-cf, C de Create) e (f de Files), logo (-cf Create Files, serve pra memorizar)

$ tar -cf nome_que_vc_escolher.tar arquivo_ou_pasta

Agora transforma ele em tar.gz

$gzip -9 arquivo_que_vc_criou.tar

e agora usa-se o gpg pôr senha:

$ gpg -c arquivo.tar.gz

Descompactando, é preciso pôr a senha pré criada, quando ele solicitar

$ gpg arquivo.tar.gz.gpg

Agora extrair(-xf X de eXtract e F de Files, eXtract Files)

$ tar -xf arquivo.tar.gz

Pronto!

Fonte: http://pt.wikibooks.org/wiki/Guia_do_Linux/Avançado

Curso Certificação Linux LPI-102: Acessibilidade no Linux

O "leitor de tela básico em braille" foi adicionado recentemente ao kernel do Linux e, com ele, um subdiretóriodrivers/accessibility e a opção CONFIG_ACCESSIBILITY correspondente. Vale destacar que as primeiras reações foram do tipo"que raios é essa tal de acessibilidade?". Isso mostra como a idéia é pouco conhecida entre os desenvolvedores.

E olha que a acessibilidade no GNU/Linux, ou seja, a usabilidade do GNU/Linux por portadores de deficiência (como cegos, porexemplo), obviamente não é nova. Já há trabalho nessa área faz tempo: a versão 0.07 do leitor de tela speakup foi lançada para o kernel2.2.7 em 1999, e o leitor de tela em braille brltty foi iniciado em 1995. O leitor de tela básico em braille que acaba de ser adicionado aokernel do Linux é apenas a parte visível desse trabalho que já está em andamento há anos.

Curso de Certificação Linux LPI

Page 77: Curso de Certificação Linux LPI - Terminal Root

Com a popularização do GNU/Linux entre o público não-técnico, tem havido um interesse renovado por um suporte mais mainstream àacessibilidade: o desktop GNOME, o OpenOffice.org e o Firefox 3 agora podem ser renderizados por sintetizadores de voz e braille graçasao framework AT-SPI e ao leitor de tela Orca. Assim que essas tecnologias forem adaptadas ao D-BUS, o KDE também vai aderir. Alémdisso, começaram a aparecer menus de acessibilidade nas distribuições.

Uma das maiores preocupações dos portadores de deficiência costumava ser a falta de suporte ao Javascript nosnavegadores em modo texto e a falta de suporte das suítes de escritório. Conforme mais e mais empresas e governos migrampara o Linux, especialmente devido à exigência de alguns estados por acessibilidade nas ferramentas usadas pelo governo, umesforço renovado no desenvolvimento foi se tornando cada vez mais uma necessidade. Em Massachusetts, o povo chegou afazer um abaixo-assinado contra a migração para o software livre porque, na época, ele não oferecia as ferramentas deacessibilidade necessárias!

O que é acessibilidade?

Acessibilidade, também abreviada como a11y, é fazer com que um software possa ser utilizado por pessoas portadoras dedeficiência. Isso inclui os cegos, é claro, mas também pessoas com pouca visão, surdos, daltônicos, pessoas que só têm umadas mãos ou que só podem mover alguns dedos ou apenas os olhos. Pessoas com problemas cognitivos (ainda que leves) ou nãofamiliarizadas com a linguagem também estão incluídas. Por último, mas não menos importantes, os idosos, que têm umpouco de todas essas deficiências. Sim, isso quer dizer que, um dia, todo mundo vai estar incluído nesse grupo. Isso implica emsuporte a dispositivos especiais, mas também em precaução no desenvolvimento, evitando presumir que um alarme sonoroserá ouvido, ou que uma breve mensagem será lida.

Talvez uma das técnicas de acessibilidade mais óbvias sejam os sintetizadores de voz, que transformam texto em áudio que pode serenviado aos alto-falantes e fones de ouvido. Já houve sintetizadores de voz baseados em hardware (suportados pelos drivers do speakup),mas a maioria deles vem sendo substituída pelos sintetizadores de voz baseados em software. Embora a qualidade do software comercialpara sintetizar voz seja muito boa hoje em dia, a qualidade das alternativas livres varia bastante. Existem sintetizadores de voz livresmuito bons para a língua inglesa, mas o suporte a outros idiomas varia. Por exemplo, os engines Festival e eSpeak suportam váriosidiomas, mas o som é robótico demais. Há bibliotecas de fonemas melhores, como o mbrola, mas elas geralmente não são 100% livres.Para lidar de maneira mais eficiente com esses backends de sintetização de voz, o daemon de voz precisa escolher automaticamente asintetização apropriada, de acordo com o idioma e o estilo desejados.

Outro tipo de dispositivo muito popular é o terminal braille. Ele "exibe" o texto levantando e abaixando pequenos pinos que formam ospadrões do braille. O terminal braile custa caro, e geralmente tem espaço para apenas 40 caracteres, ou mesmo por volta de 12 ou 20. Eletem teclas para navegação pela tela, e com isso o usuário vai lendo em partes. Comparado aos sintetizadores de voz, o terminal braille émuito mais preciso, mas nem todo mundo pode ler em braille, e o preço é muito alto (em torno de 5.000 dólares). O suporte aos váriosdispositivos existentes é muito bom: dentre os leitores de tela, tanto o brltty quanto o suseblinux suportam uma ampla variedade dedispositivos.

Os cegos provavelmente usarão dispositivos em braille e sintetizadores de voz em conjunto. Os dispositivos para os outrotipos de deficiência variam bastante. Eles vão de joysticks (suportados nativamente pelo X.org) a sistemas que acompanham omovimento dos olhos (gerenciados pelo dasher), fazendo uso do apertar de botões (suportado pelo GOK, o teclado de tela doGNOME) ou da mera ampliação da tela (implementada pelo gnome-mag).

Fonte: www.hardware.com.br

Links:

http://www.acessibilidadelegal.com/33-manual-orca.phphttp://softwarelivre.org/acessibilidade-em-software-livre/acessibilidade-no-orca-e-gnulinux

Curso Certificação Linux LPI-102: Configurando Conexões PPPoE no Linux

PPPoE (sigla em inglês para Point-to-Point Protocol over Ethernet) é um protocolo de rede para conexão de usuários em umarede Ethernet para alcançar a Internet. Seu uso é típico nas conexões de um ou múltiplos usuários em uma rede LAN àInternet através de uma linha DSL, de um dispositivo wireless (sem fio) ou de um modem de cabo broadband comum. Oprotocolo PPPoE deriva do protocolo PPP. O PPPoE estabelece a sessão e realiza a autenticação com o provedor de acesso aInternet.

A maioria dos modems ADSL vendidos no Brasil são roteadores, no entanto existem alguns modelos que só funcionam no modo Bridge,ou seja, no Windows® por exemplo, você usaria um discador para conectar-se.Você precisará de um provedor, usuário e senha paraautenticação, e também, naturalmente, uma placa de rede para ligar ao modem. Comando para configurar o pppoe

# pppoeconf

Atenção: O pacote pppoe e pppoeconf já vem instalados por padrão, mas se não estiver, instale-o com:

# apt-get install pppoe pppoeconf

Curso de Certificação Linux LPI

Page 78: Curso de Certificação Linux LPI - Terminal Root

Um programa com uma interface semi-gráfica baseada em texto lhe guiará através dos passos para a configuração, que são elas:

Confirmar se sua placa de rede foi detectada.1. Digitar seu nome de usuário (fornecido pelo provedor).2. Digitar sua senha (fornecida pelo provedor).3. Se você já possui uma conexão PPPoE configurada, ele perguntará se você deseja modificar sua configuração atual.4. Responda o padrão em todas as perguntas (basta digitar enter), ou mude, caso saiba o que está fazendo.5. Limited MSS problem - choose "Yes".6.

O programa perguntará se você deseja ativar a conexão durante o boot, provavelmente você vai querer responder Sim. Finalmente, perguntará se você deseja estabilizar a conexão imediatamente.

Pronto isto, provavelmente você sua conexão com a internet já estará funcionando.

Controle manual da conexão

Para iniciar sua conexão (se já não estiver ativa), digite num terminal:

# pon dsl-provider

Icones/parar.png Para parar a conexão (se estiver ativa), digite no terminal:

# poff dsl-provider

Problemas

Se sua conexão parecer não funcionar, tente ver o log. Para isto, digite num terminal:

# plog

Problemas com o boot

Se você tiver que rodar o pppoeconf a cada boot por que a conexão não está sendo ativada, você pode tentar:

# /etc/network/interfaces

Edite o arquivo como abaixo:

# added by pppoeconfauto eth0iface eth0 inet manualpre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf

auto dsl-provideriface dsl-provider inet pppprovider dsl-provider

Para configurações com autenticação no modem ou roteador, o certo é:

auto lo

iface lo inet loopback

iface eth0 inet static

address 10.1.1.2

netmask 255.0.0.0

gateway 10.1.1.1

auto eth0

ou, manualmente com um pequeno script:

#!/bin/bash

echo vamos reconfigurar sua rede, pressione ENTER para iniciar a configuração, ou Ctrl+c para desistir

read resposta

sudo ifconfig

sudo ifconfig eth0 down

sudo ifconfig eth0 10.1.1.2 netmask 255.0.0.0 up

echo nameserver 10.1.1.1

sudo route add default gw 10.1.1.1 dev eth0

sudo ifconfig

ping -c4 www.google.com

Curso de Certificação Linux LPI

Page 79: Curso de Certificação Linux LPI - Terminal Root

Se isto não funcionar, edite o arquivo /etc/rc.local, e antes da ultima linha ("exit 0"), adicione:

ifconfig eth0 uppon dsl-provider

Logs de erro

você tiver problemas com sua conexão, talvez encontre algumas informações úteis nos logs do sistema

# dmesg

Fonte: wiki.ubuntu-br.org

Curso Certificação Linux LPI-102: Gerenciador de Pacotes YUM e pacotes RPM

1.0 - Gerenciador de Pacotes YUM

O gerenciador de pacotes YUM é o gerenciador de pacote padrão do Red Hat, Fedora, CentOS e derivados.Antes criado eutilizado no Yellow Dog Linux que é uma distribuicao baseada em Red Hat e que so funciona em maquinas com o processadorPowerPC ou derivados como o Cell.

Os arquivos de configuracao do YUM se encontram no diretorio /etc/yum/ e os repositorios se encontram no diretorio /etc/yum.repos.d queé muito similar ao /etc/apt/sources.list.d do Debian. Pois seria possivel a centralizacao de tudo tb no /etc/yum/yum.conf.

As instruções aqui são baseadas na distribuição Fedora.

O arquivo de configuração do yum é o /etc/yum.conf. Além disso, osrepositórios (sites que contém os pacotes dos programas) sãoconfigurados através de cada arquivo de extensão .repo, localizados nodiretório /etc/yum.repos.d.

A configuração padrão do yum contida no /etc/yum.conf é suficientepara o bom funcionamento do programa. Você só precisará de algunsrepositórios já configurados. Por exemplo, o padrão para o repositóriodo Fedora é o arquivo /etc/yum.repos.d/fedora.repo:

[fedora]name=Fedora $releasever - $basearchbaseurl=http://fedora.c3sl.ufpr.br/linux/releases/$releasever/Everything/$basearch/os/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY

As linhas acima significam que o repositório denominado fedora terá:

name: Nome descritivo, no exemplo: Fedora (versão da distribuição) – (arquitetura da distribuição, ex. i386);1.

baseurl: O endereço que contém a lista dos programas e os pacotes;2.

enabled: Se o repositório está habilitado ou não (1 significa sim, 0 significa não);3.

gpgcheck: Se todos os pacotes devem ter sua autenticidade verificada (extremamente recomendado, 1 significa sim, 0 significa não);

4.

gpgkey: Qual chave criptográfica utilizar para a verificação dos pacotes.5.

Com este repositório configurado, pode-se instalar e remover todos os pacotes básicos da distribuição. No caso das atualizações de pacotes, o repositório é outro e pode ser configurado no arquivo/etc/yum.repos.d/fedora-updates.repo:

[updates]name=Fedora $releasever - $basearch – Updatesbaseurl=http://fedora.c3sl.ufpr.br/linux/updates/$releasever/$basearch/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora

Curso de Certificação Linux LPI

Page 80: Curso de Certificação Linux LPI - Terminal Root

Há varios outros repositórios de terceiros disponíveis (como o livna, dag, freshrpms, atrpms) que contém outros programas que podem não estar na lista principal por diversos motivos. Cada um desses repositóriostêm configurações próprias e por isso criam arquivos .repo dentro dodiretório /etc/yum.repos.d. Aqui não iremos listar todos os repositórios e sim apenas os oficiais.

Uma vez configurados os repositórios desejados, é hora de utilizar o yum.

Para procurar por um pacote usando alguma palavra relacionada,utilizamos o parâmetro search. Por exemplo, procurar todos os pacotesrelacionados com a palavra ‘DVD’:

# yum search DVD

Para instalar um pacote:

# yum install pacote

Para desinstalar o pacote:

# yum remove pacote

Atualizando um pacote específico, caso exista uma atualização para o mesmo:

# yum update pacote

Ou se precisarmos atualizar todo o sistema, instalando todos os pacotes novos que tenham atualizações disponíveis:

# yum update

Para verificar quais os pacotes que precisam de atualização:

# yum check-update

Listando todos os pacotes disponíveis, tanto no repositório quanto os já instalados:

# yum list

Listando todos os pacotes disponíveis para a instalação:

# yum list available

Existem também os grupos de pacotes. Um grupo de pacotes é umconjunto de pacotes necessários para se instalar alguma funcionalidadeno sistema e são definidos pelos desenvolvedores da distribuição. Paralistar todos os grupos de pacotes:

# yum grouplist

Installed Groups: Office/Productivity MySQL Database Editors System Tools...corte...Available Groups: Engineering and Scientific Window Managers GNOME Software Development XFCE Software Development XFCE...corte...

Como podemos ver, o yum mostra os grupos já instalados no sistema(Installed Groups) e os disponíveis para a instalação (AvailableGroups). Se quisermos, por exemplo, instalar o suporte ao gerenciador de janelas XFCE, instalamos seu grupo:

# yum groupinstall "XFCE"

O yum se encarregará de baixar todos os pacotes necessários para o XFCE. Para remover todos os pacotes do grupo:

# yum groupremove "XFCE"

Todas estas ações do yum necessitam de uma conexão de Internet, pois a lista de pacotes é sempre requisitada no repositório para consulta.Mesmo para consultar um simples nome de pacote, precisa-se de conexãocom a Internet.

Curso de Certificação Linux LPI

Page 81: Curso de Certificação Linux LPI - Terminal Root

Caso já tenha se utilizado o yum para fazer alguma ação (e porconsequência, ele já tenha baixado a lista de pacotes para o seusistema), podemos optar por não precisar nos conectar ao servidor naInternet toda vez que usarmos o yum utilizando o parâmetro -C. Exemplos:

# yum -C search DVD# yum -C check-update# yum -C list | grep kde

Na instalacao do fedora é possivel instalar o apt e no Debian e Ubuntu vc tb pode instalar o yum pelo apt-get para estudos.

2.0 - Pacotes RPM e Sistema de Gerenciamento de Pacotes RPM

RPM (Red Hat Package Manager) é um sistema de gerenciamento de pacotes desenvolvido pela Red Hat para ser utilizado emsua própria distro. Posteriormente outras distros Linux, e mesmo alguns outros sistemas operacionais, também adotaram oformato RPM para gerenciamento de seus pacotes. A LSB (Linux Standard Base) indicou o formato RPM como o padrão paradistros Linux.

Outro utilitário para gerenciamento de pacotes RPM em modo texto é o Yum (Yellow Dog Updater, Modified), disponível nas distros RedHat Enterprise Linux, CentOS, Oracle Entreprise Linux e Fedora.

Com o Yum, é possível realizar instalações e atualizações de pacotes localmente ou a partir de repositórios de pacotes localizados nainternet. Sua grande vantagem em relação ao utilitário RPM é tentar resolver automaticamente todas as dependências requeridas porpacotes que estiverem sendo instalados ou atualizados e também por proporcionar uma forma fácil de atualizar todo o sistema pelaInternet.

Os três principais formatos de pacotes utilizados em sistemas Linux são:

RPM: utilizado pela distro Red Hat Enterprise Linux (RHEL) e por distros derivadas como CentOS, Oracle Enterprise Linux,Fedora e SuSE. DEB: utilizado pela distro Debian e por distros derivadas como Ubuntu. TGZ: utilizado pela distro Slackware e por distros derivadas como Vector Linux.

Além destes formatos, há também outros. No entanto, não vou me prolongar a respeito deles para não perder o foco do artigo e tambémpara não deixá-lo extenso.

O rótulo (nomenclatura) típico de um pacote RPM é nome-versao-release.arquitetura.rpm, onde:

Nome: é o nome do software que está sendo distribuído. Versão: é a versão do software. Release: é o versão de construção do pacote para a mesma versão do software.

Arquitetura: é a plataforma para a qual o software foi desenvolvido. Noarch significa que o software não foi desenvolvido para umaplataforma específica, podendo ser utilizado em qualquer uma. Src significa que o pacote contém os arquivos-fonte do software. .rpm: é a extensão do nome do arquivo de pacote RPM.

Exemplo: oracle-xe-univ-10.2.0.1-1.0.i386.rpm, sqldeveloper-3.0.04.34-1.noarch.rpmInstalação

Para instalar pacotes RPM em sistemas Linux, é necessário estar logado como root (su). Note que o sistema de gerenciamento de pacotesRPM não resolve as dependências automaticamente para você.

Portanto, as dependências necessárias deverão ser instaladas antes da instalação do pacote que as requer. Uma outra forma de resolverisso é executar a instalação utilizando o utilitário Yum em distros RHEL e derivadas ou o equivalente em outras distros.

Instalações locais:

Para instalar um pacote localizado localmente, execute o comando# rpm -ivh <pacote>

, onde:

-i: é o modo de instalação. -v: (opcional) apresenta mensagens detalhadas de saída para o processo de instalação. -h: (opcional) exibe cerquilhas (#) à medida em que o processo de instalação avança. <pacote>: é o nome do arquivo do pacote RPM a ser instalado no sistema; pode ser mais de um ao mesmo tempo, nestecaso, separe-os com espaços.

Exemplo: # rpm -ivh AdobeReader_ptb-8.1.7-1.i486.rpm

É possível testar a instalação de um pacote antes de instalá-lo no sistema # rpm -ivh –test <pacote>, onde:

–test: esta opção testa o processo de instalação do pacote e, caso haja algum problema, notifica a respeito.

Exemplo:# rpm -ivh –test AdobeReader_ptb-8.1.7-1.i486.rpm

Instalações com o utilitário Yum:

A forma típica do comando Yum para instalações é# yum -y install –nogpgcheck <pacote>

, onde:

Curso de Certificação Linux LPI

Page 82: Curso de Certificação Linux LPI - Terminal Root

-y: (opcional) resposta automática positiva para a confirmação do processo de instalação. install: é a opção de instalação do Yum. –nogpgcheck: (opcional) instrui o Yum a não verificar a assinatura do pacote. <pacote>: é o nome do pacote RPM disponível localmente ou na Internet em repositórios do Yum.

Exemplo:

# yum -y install –nogpgcheck AdobeReader_ptb-8.1.7-1.i486.rpm # yum -y install gparted

Observação: No exemplo 1, acima, o pacote está disponível localmente. Em 2, o pacote está localizado em um repositório utilizado peloYum, isto é, na Internet. Em ambos os casos, o Yum tenta resolver quaisquer dependências, baixando-as e instalando-as automaticamente.Atualização

Para atualizar pacotes RPM instalados em sistemas Linux, é necessário estar logado como root (su). Lembre-se de que o sistema degerenciamento de pacotes RPM não resolve quaisquer dependências requeridas automaticamente.

Caso haja dependências requeridas pelo pacote a ser atualizado que não estejam instaladas no sistema, será necessário baixá-las einstalá-las antes de atualizar o pacote.

Outra forma de resolver isso é executar a atualização utilizando o utilitário Yum em distros RHEL e derivadas ou o equivalente em outrasdistros.

Atualizações locais:

Para atualizar um pacote localizado localmente, execute o comando# rpm -Uvh <pacote>

, onde:

-U: é o modo de atualização. -v: (opcional) apresenta mensagens detalhadas de saída para o processo de atualização. -h: (opcional) apresenta cerquilhas (#) à medida em que o processo de atualização avança. <pacote>: é o nome do arquivo do pacote RPM a ser atualizado no sistema. Pode ser mais de um ao mesmo tempo, nestecaso, separe-os com espaços.

Exemplo:# rpm -Uvh flash-plugin-10.2.153.1-release.i386.rpm

Observação: Caso o pacote em atualização não estiver instalado no sistema, ele será automaticamente instalado com este comando.

Também é possível testar a atualização de um pacote antes de atualizá-lo no sistema# rpm -Uvh –test <pacote>

, onde:

–test: esta opção testa o processo de atualização do pacote e, caso haja algum problema, notifica a respeito.

Exemplo:# rpm -Uvh –test flash-plugin-10.2.153.1-release.i386.rpm

Atualizações com o utilitário Yum:

O processo de atualização com o Yum é muito útil, pois, com ele, é possível atualizar até mesmo todo o sistema de uma só vez. Neste caso,o processo poderá ser um pouco demorado, dependendo da quantidade de pacotes a serem atualizados e da velocidade de sua conexão àInternet.

Para atualizar pacotes, a forma típica do comando Yum é# yum -y update [pacote]

Exemplo:# yum -y update flash-plugin-10.2.153.1-release.i386.rpm

Para verificar se há atualizações disponíveis# yum check-update [pacote]

Exemplo:

# yum check-update flash-plugin-10.2.153.1-release.i386.rpm # yum check-update

Para atualizar todo o sistema Linux# yum -y update

Nas formas do comando Yum apresentadas acima, o nome do pacote a ser atualizado é opcional. É possível informar vários nomes depacotes a serem atualizados em em único comando, basta separá-los com espaços.

Quando não for informado nenhum nome de pacote, o Yum processará todos os pacotes instalados em seu sistema Linux. O -y é opcional eserve como resposta positiva automática para as questões formuladas pelo Yum.Downgrade

Curso de Certificação Linux LPI

Page 83: Curso de Certificação Linux LPI - Terminal Root

Downgrade significa baixar a versão de um dado pacote instalado em um sistema Linux, isto é, atualizar para uma versão mais antiga dopacote. A principal razão para que isso seja feito é quando um determinado aplicativo ou sistema funcionava adequadamente com umaversão “X” de um determinado pacote e, após este pacote ter sido atualizado para uma versão “Y” superior, o mesmo aplicativo ou sistemapassa a não funcionar bem com esta nova versão “Y” do pacote considerado.

Neste caso, o administrador do sistema deverá fazer o downgrade deste pacote para a versão “X”. Para fazer donwgrade de um pacoteinstalado em um sistema Linux, é necessário estar logado como root (su).

Downgrades locais:

Para fazer o downgrade de um pacote localizado localmente, execute o comando # rpm -Uvh –oldpackage <pacote>, onde:

-U: é o modo de atualização. -v: (opcional) apresenta mensagens detalhadas de saída para o processo de downdrade. -h: (opcional) exibe cerquilhas (#) à medida em que o processo de downgrade avança. –oldpackage: força o downgrade de pacotes. <pacote>: é o nome do pacote RPM da versão anterior, isto é, para o qual você está fazendo downgrade.

Exemplo:# rpm -Uvh –oldpackage flash-plugin-10.2.153.1-release.i386.rpm

É possível testar o downgrade de um pacote antes de atualizá-lo no sistema# rpm -Uvh –oldpackage –test <pacote>

, onde:

–test: esta opção testa o processo de downgrade do pacote e, caso haja algum problema, notifica a respeito.

Downgrades com o utilitário Yum:

Com o Yum você poderá fazer downgrade de pacotes a partir de repositórios do Yum localizados na Intenet. A forma do comando é# yum -y downgrade <pacote>

.

Exemplo:# yum -y downgrade flash-plugin-10.2.153.1-release.i386.rpm

O -y é opcional e serve como resposta positiva automática ao Yum para conformar a execução do processo.

Observação: Seja criterioso ao fazer downgrade de pacotes em seu sistema, pois o mesmo poderá apresentar comportamentos indesejadoscomo, por exemplo, instabilidade e/ou vulnerabilidades.Consultas

Com o sistema de gerenciamento de pacotes RPM, é possível realizar diversas formas de consultas de informações sobre pacotesinstalados ou não no sistema. Note que para consultas de pacotes, não é necessário estar logado como root (su). A seguir, as formas maisusuais de consultas.

Consultas de informações de pacotes instalados no sistema:

Para listar todos os pacotes instalados no sistema:

$ rpm -qa

Para listar, em ordem alfabética ascendente, todos os pacotes instalados no sistema:

$ rpm -qa | sort

Para obter a contagem dos pacotes instalados no sistema, sem listá-los:

$ rpm -qa | wc -l

Para verificar se um pacote está instalado no sistema, informando uma parte do nome do pacote:

$ rpm -qa | grep -i <substring>

Onde <substring> é uma parte do nome do pacote que você está consultando. Nesta forma de consulta, será ignorada a diferença entremaiúsculas e minúsculas.

Exemplo:$ rpm -qa | grep -i java

Para gerar um arquivo texto contendo a listagem, em ordem alfabética ascendente, de todos os pacotes instalados no sistema:

$ rpm -qa | sort > <nome_arquivo_txt>

Exemplo:$ rpm -qa | sort > ListPctsInstalados.txt

Para consultar informações sobre um pacote específico instalado no sistema:

$ rpm -qi <pacote>

Exemplo:$ rpm -qi java-1.6.0-openjdk-1.6.0.0-1.20.b17.el5

Curso de Certificação Linux LPI

Page 84: Curso de Certificação Linux LPI - Terminal Root

Observação: Note que o nome do pacote deverá ser digitado exatamente por completo, da mesma forma em que estiver registrado nobanco de dados do RPM, levando-se em consideração maiúsculas e minúsculas.

Para listar todos os arquivos de um pacote específico instalado no sistema:

$ rpm -ql <pacote>

Exemplo:$ rpm -ql java-1.6.0-openjdk-1.6.0.0-1.20.b17.el5

Consultas de informações de pacotes não instados no sistema:

Para consultar informações sobre um pacote específico não instalado no sistema:

$ rpm -qpi <pacote>

Exemplo:$ rpm -qpi AdobeReader_ptb-8.1.7-1.i486.rpm

Para listar todos os arquivos de um pacote específico não instalado no sistema:

$ rpm -qpl <pacote>

Exemplo:$ rpm -qpl AdobeReader_ptb-8.1.7-1.i486.rpm

Para obter a contagem dos arquivos de um pacote específico não instalado no sistema, sem listar estes arquivos:

$ rpm -qpl <pacote> | wc -l

Exemplo:$ rpm -qpl AdobeReader_ptb-8.1.7-1.i486.rpm | wc -l

Para gerar um arquivo texto contendo a listagem, em ordem alfabética ascendente, dos arquivos de um pacote específico não instaladosno sistema:

$ rpm -qpl <pacote> | sort > <nome_arquivo_txt>

Exemplo:$ rpm -qpl AdobeReader_ptb-8.1.7-1.i486.rpm | sort > ListArqsPct.txt

Desinstalação

Para executar a desinstalação de pacotes RPM em sistemas Linux, você deverá estar logado como usuário root (su) e executar o comandoa seguir:

# rpm -e <pacote>

Exemplo:# rpm -e AdobeReader_ptb-8.1.7-1

Observação: Note que o nome do pacote a ser desinstalado deve ser exatamente igual ao nome registrado no banco de dados do RPM. Vocêpode descobrir o nome exato do pacote instalado no sistema, utilizando as opções de consulta apresentadas na seção Consultas desteartigo.

Outra forma de executar a desinstalação de pacotes RPM é combinar recursos de consulta de nomes de pacotes e pesquisa de substringsem subshell do Linux, em uma única linha de comando.

A forma típica do comando, neste caso, é # rpm -e $(rpm -qa | grep -i <substring>)

, onde:

$(…): é o subshell. Os comandos internos à este subshell são processados antes do comando externo. rpm -qa: é o comando de consulta de todos os pacotes RPM instalados no sistema. grep -i substring: este comando procura ocorrências do texto fornecido em substring na lista de pacotes RPM instalados nosistema, obtida pelo comando rpm -qa anterior e ignorando maiúsculas e minúsculas. <substring>: é um texto representando parte do nome do pacote RPM a ser desinstalado do sistema.

Exemplo:# rpm -e $(rpm -qa | grep -i adobe

Neste exemplo, serão desinstalados do sistema todos os pacotes RPM que contiverem adobe como parte de seu nome, desconsiderando-semaiúsculas e minúsculas.

Observação: Tenha muito cuidado ao executar desinstalações desta forma, pois qualquer erro poderá ser fatal. Podem ser desinstaladosoutros pacotes que não os desejados e/ou que sejam importantes a seu sistema ou a seu trabalho!

Reconstrução do banco de dados do RPM

Curso de Certificação Linux LPI

Page 85: Curso de Certificação Linux LPI - Terminal Root

O sistema RPM utiliza um banco de dados Berkeley DB, localizado no diretório /var/lib/rpm/, para armazenar metadados dos pacotesinstalados em um sistema Linux.

Embora sistemas Linux sejam bastante seguros e confiáveis, o banco de dados do RPM pode, eventualmente, sofrer quebras (corrupções).Caso isso ocorra, você não conseguirá gerenciar seus pacotes RPM. Por exemplo, você não conseguirá instalar novos pacotes no sistema.

Para tentar corrigir este problema, estando logado como usuário root (su), execute o seguinte comando de reconstrução do banco dedados do RPM:

# rpm --rebuilddb

Embora este comando seja utilizado em casos de corrupção do banco de dados do RPM, você poderá utilizá-lo periodicamente, de formapreventiva, mesmo que o banco de dados do RPM não apresente problemas aparentes.Solução de problemas de transações não concluídas com o Yum

Outro problema que também pode ocorrer, sobretudo quando ocorre instalação ou atualização de pacotes RPM, é a interrupção, pordiversos motivos, do processo antes de sua conclusão, gerando transações não concluídas.

Quando isso ocorrer, sempre que você for instalar ou atualizar pacotes com o Yum, receberá uma mensagem como a seguinte: There areunfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.

Para sanar este problema, será necessário estar logado como root (su) e executar o utilitário yum-complete-transaction, o qual estácontido no pacote yum-utils:

# /usr/sbin/yum-complete-transaction

Caso o pacote yum-utils não esteja instalado no sistema, instale-o com o comando a seguir:

# yum -y install yum-utils

Fontes:

http://www.devin.com.br/

http://www.aprigiosimoes.com.br

http://imasters.com.br

Curso Certificação Linux LPI-102: A Certificação LPI

O Linux Professional Institute - LPI - é uma organização sem fins lucrativos, sediada na California - USA e constituída em 1999pela comunidade Linux e desenvolve de forma acessível um programa de certificação em sistemas GNU/Linux reconhecidointernacionalmente por empresas, empregadores e profissionais de TI.

Certificar-se é uma forma de atestar conhecimentos profissionais, ou seja, validar a eficiência de alguém em determinado assunto.

A principal vantagem da LPI sobre outras certificações Linux é a neutralidade de distribuição, pois as provas do LPI são baseadas no LinuxStandard Base, um conjunto de normas que mantém a compatibilidade entre as diferentes versões e distribuições do sistema operacional.A certificação LPI é, portanto, independente de distribuição.

O LPI é reconhecido como a primeira organização do mundo a defender e ajudar o uso profissional do Linux, Open Source eFree Software através de certificação profissional. Os exames de certificação do LPI são aplicados em milhares de lugares nomundo, em vários idiomas e com o apoio de empresários, fabricantes e instrutores.

Lista de Assuntos com os Links para cada um(se você clicar em um link, abrirá em nova aba):

01- A Certificação LPI02- Noções Fundamentais03- Documentação04- Arquitetura de Hardware05- Instalação do Linux06- Filtros de Texto07- Gerenciamento básico de arquivos08- Hierarquia do sistema de arquivos09- Sistemas de arquivos e dispositivos10- Montando e Desmontando Sistemas de Arquivos11- Executando, Gerenciando e Terminando Processos12- Sistema de Boot, Shutdown e Runlevels13- Trabalhando com Permissões

Curso de Certificação Linux LPI

Page 86: Curso de Certificação Linux LPI - Terminal Root

14- Trabalhando com vi15- Instalando e Compilando Programas a partir do código fonte16- Gerenciamento de Pacotes Debian e Redhat (rpm, dpkg, apt-get, dselect)17- Gerenciador de Pacotes YUM18- Utilizando Expressões Regulares19- Quotas de Disco20- Administração do Sistema21- Automatizando Tarefas Administrativas e Estratégias de Backup22- X Window23- Programando em Shell Script24- Arquivos de LOG25- Impressão no Linux26- Hora do Sistema27- Internacionalização do Sistema28- Kernel do Linux29- Fundamentos e Serviços de Rede – TCP/IPv430- Utilitários e Ferramentas do TCP/IP31- Configurando a Rede32- Configurando o DHCP33- Configurando Conexões PPPoE no Linux34- Serviços de Rede no Linux35- O Servidor PostFix36- Configurando o Apache37- Compartilhamento via NFS38- Compartilhamento via Samba39- Configurando o DNS40- Configurando o Shell Seguro OpenSSH41- Segurança42- Criptografia de Dados43- Acessibilidade no Linux44- Gerenciamento de dados SQL

Visite o site do LPI Mundial e saiba mais.

Curso de Certificação Linux LPI