40
Linux Professional

Lpi+102

Embed Size (px)

Citation preview

LinuxProfessional

SUMÁRIOEXAME 102........................................................................................................................................2

Customizar e usar o ambiente shell.................................................................................................2Customizar ou escrever scripts simples...........................................................................................3Gestão de Dados SQL......................................................................................................................6Instalar e Configurar o X11.............................................................................................................6Configurar um Gerenciador de Janelas............................................................................................9Acessibilidade................................................................................................................................10Tarefas Administrativas.................................................................................................................10Automação com Agendamento de Tarefas....................................................................................14Localização e Internacionalização.................................................................................................15Manter a Hora do Sistema.............................................................................................................17Log de Sistema...............................................................................................................................20Agente de Transferência de E-mail (MTA)...................................................................................21Gerenciar Impressoras e Impressão...............................................................................................22Fundamentos de Protocolos da Internet.........................................................................................23Configuração Básica de Rede........................................................................................................27Executar Tarefas de Administração de Segurança.........................................................................28Configuração de Segurança do Host..............................................................................................33Protegendo os Dados com Criptografia.........................................................................................36

2

EXAME 102Customizar e usar o ambiente shell

/etc/profile – Contém várias definições para o perfil de todo o sistema. Este arquivo é lido antes do arquivo de configuração pessoal de cada usuário. Tipicamente contém a definição da variável PS1 e do umask para todos os usuários.

Quando o sistema é carregado, o bash procura estes arquivos em seqüência e executa os comandos contidos, caso existam:

1. /etc/profile2. ~/.bash_profile3. ~/.bash_login4. ~/.profile

Após o /etc/profile, o bash pesquisa no diretório do usuário na ordem especificada acima e interrompe a pesquisa assim que o primeiro arquivo é encontrado. Ou seja, procura o ~/.bash_profile, se não o achar procura o ~/.bash_login e se não o achar, procura o ~/.profile.

Os arquivos ~/.bash_profile, ~/.bash_login e ~/.profile residem no diretório pessoal de cada usuário e dizem respeito à configurações de perfil específicas de cada usuário. São executadas apenas para logins de usuários com shell.

• O arquivo ~/.bashrc é executado por shells que não requerem autenticação

~/.hushlogin - Faz o bash pular as mensagens do /etc/motd, exibindo imediatamente o aviso de comando após a digitação da senha.

~/.bash_logout – Arquivo que é lido e executado toda vez que o usuário sai do shell.

/etc/motd - O conteúdo de /etc/motd é exibido por login(1) após um login bem sucedido, antes do shell de login ser executado. O "motd" significa "message of the day" ("mensagem do dia"), e tradicionalmente esse arquivo tem sido usado exatamente para isso.

Variáveis de ambiente – Variáveis que afetam todo o sistema operacional (ex: PATH). São nomes que contém algum valor e tem a forma Nome=Valor. Para criar uma variável de ambiente basta digitar no shell [nome=valor], para exportá-las para o sistema utilize o comando export.

/etc/environment – Arquivo do Debian para definição de variáveis de ambiente que serão automaticamente exportadas para o sistema na iniciaçação do sistema.

env – Rodar um programa em um ambiente modificado ou exibir as variáveis de ambiente atualmente definidas.

• -i : ignorar as variáveis de ambiente atuais e rodar um comando com o sistema limpo.• -u : remover (unset) uma variável de sistema na execução de um comando.

export – Exportar uma variável local para o sistema inteiro. Pode ser usado juntamente com a

3

definição da variável (export VARIAVEL=VALOR) ou com uma variável local já definida (export VARIAVEL).

set – Mostrar todas as variáveis, incluindo as variáveis locais e de sistema.

unset – Destrói a variável especificada, sendo ela local ou de sistema.

alias – Permite criar um apelido para um programa ou comando. Por exemplo para alterar o comportamento do comando cp para preservar automaticamente as permissões dos arquivos, utilize alias cp='cp -p'

/etc/skel – Esqueleto de diretório pessoal para novos usuários criados. Contém arquivos (tipicamente .bash_profile, .bashrc e .bash_logout) que serão copiados para o diretório pessoal de cada novo usuário criado.

Funções – Função é um código escrito para resolver uma pequena parte de um problema. Assim sendo, tem uma “função” na resolução de um problema. No Linux pode ser declarada tipicamente da seguinte forma:

function nome_funcao() { comandos; }• Para chamar uma função basta digitar o seu nome. Exemplo: nome_funcao

Customizar ou escrever scripts simples

Scripts utilizam a habilidade natural do Bash de programação, oferecendo uma linguagem padronizada para escrever-se pequenos programas que resolvam problemas. A linguagem de programação do Bash é muito versátil e permite desde a escrita de programas simples a outros bem complexos.

• Os scripts mais simples são simplesmente um agrupamento de comandos.

Para criar um script, o código deve ser escrito em um arquivo à parte. Para executá-lo, existem duas formas básicas:

1. Indiretamente, através do comando source. Uma vez o código digitado em um arquivo, invoca-se o script digitando no shell: source arquivo_de_scripts argumentos. O arquivo não precisa ter permissão de execução.

2. Diretamente, utilizando, na primeira linha do script, o construtor she-bang e dando permissão de execução para o script (chmod +x). No shell, chama-se o script digitando ./arquivo_de_scripts. O construtor she-bang constitui-se da seguinte linha: a) #!/bin/bash

Para utilizar parâmetros passados para scripts Bash, basta leras as variáveis numéricas $1, $2, $3, etc, que significam sucessivamente o primeiro parâmetro, o segundo, o terceiro e assim por diante.

• Para listar todos os parâmetros de uma vez, utiliza-se $*

Exemplo de um pequeno script para procurar arquivos com uma determinada string no diretório atual:

#!/bin/bashfind ­name “*$1”

Algumas variáveis especiais que podem ser utilizadas dentro de scripts Bash:

4

• $0 – Nome do programa• $# - Quantidade de parâmetros passados• $* - Contém o conjunto de todos os parâmetros

Condicionais – para fazer comparações condicionais, utiliza-se o construtor if.

if [ "a" = "3" ] || [ "a" = "b" ]; thenecho "a não é igual a 3 ou b";

elif [ "a" = "c" ] || [ "a" = "d" ]; thenecho "a não é igual a c ou d";

elseecho "A é diferente de 3,c,b,d";

fi

Laços – Laços executam uma certa sequência de comandos até que uma determinada condição seja satisfeita.

While

#!/bin/bash CONTADOR=0while [ $CONTADOR ­lt 10 ]; do

echo "Contador em: $CONTADOR";let CONTADOR=CONTADOR+1; 

done

For

#!/bin/bashfor i in $( ls ); do

echo item: $idone

Until

#!/bin/bash CONTADOR=20until [ $CONTADOR ­lt 10 ]; do

echo CONTADOR $CONTADORlet CONTADOR­=1

done

test – Verifica tipos de arquivos ou compara valores. Nos scripts o comando test pode ser omitindo, fornecendo apenas a expressão.

#!/bin/bashif ( test ­d $1); then

echo “É um diretório”;fi

Expressão Significado

( expressão ) Testa se a expressão é verdadeira

( !expressão ) Testa se a expressão é falsa

5

Expressão1 -a Expressão2 Testa se ambas as expressões são verdadeiras

Expressão1 -o Expressão2 Teste se uma das expressões é verdadeira

-n String Se o tamanho da String é maior que zero

-z String Se o tamanho da String é zero

String1 = String2 Se a String1 é igual à String2

String1 != String2 Se a String1 é diferente da String2

Inteiro1 -eq Inteiro2 Se o Inteiro1 é igual ao Inteiro2

Inteiro1 -ge Inteiro2 Se o inteiro1 é maior ou igual ao Inteiro2

Inteiro1 -gt Inteiro2 Se o inteiro1 é maior que o Inteiro2

Inteiro1 -le Inteiro2 Se o Inteiro1 é menor ou igual ao Inteiro2

Inteiro1 -lt Inteiro2 Se o Inteiro1 é menor que o Inteiro2

Inteiro1 -ne Inteiro2 Se o Inteiro1 não é igual ao Inteiro2

Arquivo1 -ef Arquivo2 Se o Arquivo1 tem o mesmo inode do Arquivo2

Arquivo1 -nt Arquivo2 Se o Arquivo1 é mais recente que o Arquivo2

Arquivo1 -ot Arquivo2 Se o Arquivo1 é mais antigo que o Arquivo2

-d Arquivo Se o Arquivo existe e é um diretório

-e Arquivo Se o Arquivo existe

-f Arquivo Se o arquivo existe e é do tipo comum

-h Arquivo Se o arquivo existe e é um link simbólico

-r Arquivo Se o arquivo existe e tem permissão de leitura

-s Arquivo Se o arquivo existe e tem tamanho maior que 0

-w Arquivo Se o arquivo existe e tem permissão de escrita

-x Arquivo Se o arquivo existe e tem permissão de execução

seq – Imprime uma sequência de números.• -s : Usa outro tipo de separador diferente do padrão (\n)• seq [opção] último : começa do 1 e vai até o último, de 1 em 1.• seq [opção] primeiro último : começa do primeiro e vai até o último, de 1 em 1• seq [opção] primeiro incremento último : começa do primeiro e vai até o último, usando o

incremento.

#!/bin/bash for i in `seq 10`; do 

echo item: $i done 

Substituição de Comandos – O Bash oferece a capacidade de substituir o comando pelo resultado de sua execução. Assim, antes de exibir o comando em si, com a substituição de comandos, exibe-se o resultado da sua execução. Existem duas formas:1.$(comando)2.`comando`

6

Gestão de Dados SQL

SQL (Structured Query Language) - Sql é um conjunto de comandos de manipulação de banco de dados. Inicialmente chamada Sequel – Structured English Query Language. Desenvolvida pela IBM baseada num trabalho de E. F. Codd. 1.Primeira versão comercial lançada em 1975 pela Relational Software Inc. (hoje Oracle)2.Padronizada pela ANSI e ISO. Primeira versão em 86 (SQL-86)3.Segunda versão em 89 (SQL-89) utilizada pelos bancos de dados atuais.4.Em 92 recebe aprimoramentos (SQL-92)5.Em 1999 surge a SQL-99 (ou SQL3) que define um modelo de Banco de Dados Objeto-Relacional

Um banco de dados é um conjunto coerente e lógico de dados relacionados que possuem significância intrínseca.

• Uma tabela é um conjunto de linhas e colunas onde as colunas qualificam cada elemento (linha).

Entidade – Agrupamento lógico de informações inter-relacionadas necessárias para a execução das atividades do sistema [TABELA].

Atributos – Informações básicas que qualificam uma entidade e descreve seus elementos ou características [COLUNA].

Tupla – Estrutura de atributos intimamente relacionados e interdependentes que residem em uma entidade [LINHA].

Chave – Atributo utilizado para indexar dados:• Primária: Permite identificar uma única ocorrência de uma tupla em uma entidade.• Estrangeira: Atributo que estabelece a relação de uma entidade com a chave primária de

outra entidade e permite a relação entre entidades.• Secundária: Utilizada como meio de classificação e pesquisa em entidades.

DDL (Data Definition Language) – Permite a criação dos componentes do banco de dados.• CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX, ALTER INDEX,

DROP INDEX.

DML (Data Manipulation Language) – Permite a manipulação dos dados armazenados no banco de dados.

• INSERT, DELETE, UPDATE

DQL (Data Query Language) – Permite extrair dados do banco de dados• SELECT

DCL (Data Control Language) – Provê a segurança interna do banco de dados• CREATE USER, ALTER USER, GRANT, REVOKE, CREATE SCHEMA.

Instalar e Configurar o X11

7

Xorg – Servidor X X11R7. Xorg é um servidor X completo que foi originalmente projetado para sistemas operacionais UNIX e UNIX-like rodando em hardware Intel x86. Agora, ele roda em uma ampla gama de plataformas de hardware e sistema operacional.

• X é implementado usando-se um modelo cliente-servidor. Os servidores e clientes X podem ser localizados no mesmo computador ou separados em uma rede, de forma que a computação seja trabalhada separadamente da geração da exibição.

/etc/X11/xorg.conf – Arquivo de configuração para o Servidor X Xorg. Composto por um número de seções que podem estar presentes em qualquer ordem, ou omitidas para usar os valores de configuração padrão. Cada seção tem a forma:

Section "NomeSecao" EntradasSecao... 

EndSection 

Os nomes das seções são:• Files – Caminhos de arquivos• ServerFlags – Flags de servidor• Module – Carregamento dinâmico de módulos• Extensions – Habilitação de extenções• InputDevice – Descrição de dispositivos de entrada• InputClass – Descrição de classes de entrada• Device – Descrição de dispositivos gráficos• VideoAdaptor – Descrição do adaptador de vídeo• Monitor – Descrição do monitor• Modes – Descrições dos modos de vídeo• Screen – Configuração da tela• ServerLayout – Layout geral• DRI – Configuração específica de DRI• Vendor – Configurações específicas do fornecedor

Os seguintes nomes de seção obsoletos são ainda reconhecidos para efeitos de compatibilidade. Nos novos arquivos de configuração, a seção InputDevice deve ser utilizada.

• Keyboard – Configuração de teclado• Pointer – Configuração de dispositivo apontador (mouse)

xvidtune – Programa usado para fazer ajustes finos nas configurações de vídeo, ajustando a sua exibição de vídeo ao seu monitor. Sem quaisquer opções, se apresenta ao usuário com vários botões e controles deslizantes que podem ser usados para ajustar interativamente modos de vídeo existentes. Ele também irá imprimir as configurações em um formato adequado para a inclusão em um arquivo xorg.conf.

X – X é o nome genérico para o servidor de janelas X Window System. É frequentemente um link ou uma cópia do binário do servidor para encaminhar o servidor mais frequentemente usado em uma dada máquina.

• O servidor C é usualmente iniciado pelo programa X Display Manager (xdm) ou um programa gerenciador de janelas similar.

8

• Instalações que rodem mais de um sistema de janelas podem precisar usar o utilitário xinit ao invés do gerenciador de janelas. Contudo, xinit deve ser considerado uma ferramenta para criar scripts de inicialização e não é recomendado para usuários finais.

xhost – Programa de controle de acesso para o servidor X. O programa xhost é usado para adicionar ou deletar nomes de hosts ou nome de usuários para a lista de permitidos a fazer conexões com o servidor X.

• [+] nome : O nome dado é adicionado à lista de permitidos a se conectarem ao servidor X. O nome pode ser um host ou nome de usuário.

• -name : O nome dado é removido da lista de permitidos a se conectarem ao servidor. O nome pode ser um host ou nome de usuário.

• + : O acesso é garantido a qualquer pessoa. • - : O acesso é restrito aos nomes da lista de permitidos.• Utiliza o arquivo /etc/X*.hosts

xwininfo – É um utilitário para mostrar informações sobre janelas. Se nenhuma opção for passada, assume -stats. O usuário tem a opção de selecionar a janela alvo com o mouse ou de especificar a janela na linha de comando.

• -stats : Mostrar vários atributos pertencentes ao local e aparência da janela selecionada.• -size : Mostra o tamanho da janela selecionada.

xdpyinfo – É um utilitário para mostrar informações sobre um servidor X. É usado para examinar as capacidades de um servidor.

• -display : Informações sobre uma determinada tela. O display do usuário é conseguido através da variável de sistema $DISPLAY.

Fontes – O Servidor X pode obter fontes de diretórios ou de servidores de fontes. A lista de diretórios ou de servidores de fonte que o servidor X usa quando tenta abrir uma fonte é contralada pela diretriz font path.

• O local padrão para fontes é /usr/share/fonts

xfs – Servidor de fontes X. Fornece fontes ao sistema de janelas X.• Arquivo de configuração padrão em /etc/X11/fs/config• A porta padrão é a TCP 7100• A diretriz catalogue no arquivo de configuração define os diretórios com as fontes

fornecidas pelo sistema.

mkfontdir – Criar um índice de arquivos de fonte X em um diretório. Para cada diretório, o aplicativo lê todas os arquivos de fonte procurando por propriedades chamadas FONT que serão usadas como nomes de fontes, e, com os nomes dessas fontes, é criado um arquivo fonts.dir no diretório. O servidor X e o servidor de fontes utilizam esse arquivo para achar as fontes do diretório.

xfd – Mostrar todos os caracteres de uma fonte. • -fn : Especifica a fonte cujos caracteres serão exibidos.

xlsfonts – Listar as fontes do servidor X.• -display : De um monitor em específico.

xfontsel – Provê um jeito simples de mostrar as fontes conhecidas pelo servidor X, examinar

9

simples amostras de cada uma, e obter uma descrição sobre a mesma.

~/.Xauthority – Arquivo que contém opções para autenticação junto ao servidor X durante a conexão. Só não é usado no caso de controle de acesso baseado no host, que utiliza a aplicação xhost.

xset – Utilitário de preferências de usuário para o X. Programa usado para configurar várias preferências de usuário para o display.

• -display : Especificar o servidor a ser usado• fp=diretório : Adiciona dinamicamente um diretório de fontes para o sistema X.• +fp : adiciona elementos de fonte do diretório corrente• -fp : remove elementos de fonte do diretório corrente

xinit – Inicializador do sistema de janelas X. Usado para iniciar o X Windows Server e o primeiro programa cliente em sistemas que não usam um gerenciador de janelas como o xdm.

• Se nenhum programa cliente específico for oferecido na linha de comando, o xinit irá procurar no arquivo ~/.xinitrc

• DISPLAY : Variável de sistema que mostra o nome do monitor ao qual o cliente está conectado.

startx – Iniciar uma sessão X. O script startx é um front-end para o xinit que fornece um modo mais elegante de iniciar uma única sessão do Sistema X. Pode ser executado sem argumentos.

Configurar um Gerenciador de Janelas

O gerenciador de janelas é a interface entre o usuário e o servidor X. É praticamente impossível utilizar o ambiente gráfico sem um gerenciador de janelas. O procedimento mais comum para iniciar uma sessão do X é através do comando startx, que chama o script xinit. O script xinit tem dentre suas funções iniciar o servidor X e programas clientes. O gerenciador de janelas é o principal desses clientes. Há o script xinit padrão, localizado em /etc/X11/xinit/xinitrc, mas o mais comum é cada usuário ter seu script xinit personalizado, ~/.xinitrc.

Para executar seu servidor X automaticamente na inicialização do sistema e exibir um prompt de login gráfico, você tem que alterar (como root) apenas um caracter no arquivo /etc/inittab . Este arquivo especifica o seguinte:

• id:3:initdefault:Altere-o para

• id:5:initdefault:

Isto faz com que seja definido o nível 5 de execução, o qual é o X-windows. O significado dos diferentes níveis de execução é mostrado no próprio arquivo /etc/inittab :

• 0 - halt (Não use o initdefault para este nível de execução) • 1 - Single user mode(modo mono-usuário) • 2 - Multiuser, without NFS (O mesmo que 3, se você não tem rede) • 3 - Full multiuser mode ( modo multiusuário completo)• 4 - unused (não usado)• 5 - X11

10

• 6 - reboot (Não use o initdefault para este nível de execução)

gdm – Gerenciador de Janelas do Gnome, é responsável para gerenciar janelas no sistema. Isto inclui autenticação de usuários, iniciar e terminar uma sessão de usuário.•Arquivo de configuração em /usr/share/doc/gdm

Acessibilidade

Acessibilidade significa não apenas permitir que pessoas com cadeiras de rodas participem de atividades que incluem o uso de produtos, serviços e informação, mas a inclusão e extensão do uso destes por todas as parcelas presentes em uma determinada população.

Em informática, programas que provêm acessibilidade são ferramentas ou conjuntos de ferramentas que permitem que portadores de deficiências (as mais variadas) se utilizem dos recursos que o computador oferece. Essas ferramentas podem constituir leitores de tela para deficientes visuais, teclados virtuais para portadores de deficiência motora ou com dificuldades de coordenação motora, e sintetizadores de voz para pessoas com problemas de fala.

Orca – Orca é uma flexível, extensível e poderosa tecnologia assistiva para pessoas com deficiências visuais. Usando várias combinações da síntese de voz, braille e ampliação, Orca ajuda a fornecer acesso a aplicativos e ferramentas. O comando para executar o orca é orca. Você pode entrar este comando pressionando Alt+F2 quando estiver logado, esperar um segundo ou dois, e então digitar orca e pressionar a tecla de retorno. Orca está projetado apresentar a informação enquanto você navega pelo "desktop" usando os mecanismos internos de navegação do GNOME. Estes mecanismos de navegação são consistentes através da maioria das aplicações de "desktop".

GOK - O aplicativo Gnome On-Screen Keyboard exibe teclados virtuais em seu desktop. Você pode usar o ponteiro do mouse padrão ou dispositivo apontador alternativo para operar o teclado virtual. On-Screen Keyboard apresenta os seguintes tipos de teclados:

• Composer Keyboards permitem compor texto. Para digitar caracteres alfanuméricos, você selecione os caracteres do teclado do compositor.

• Dynamic Keyboards refletem as aplicações que estão atualmente em execução no desktop. Por exemplo, On-Screen Keyboard gera teclados dinâmicos que contêm as chaves para representar as aplicações que estão rodando no seu desktop ou nos menus que estão contidos em um aplicativo.

emacspeak - Emacspeak é uma interface de voz que permite que usuários deficientes visuais interajam de forma independente e eficiente com o computador. A formatação de áudio e suporte completo para Aural W3C CSS (ACSS) permite Emacspeak para produzir ricas apresentações fonética de informação eletrônica. Ao misturar perfeitamente todos os aspectos da Internet, como navegação na Web e mensagens, Emacspeak permite acesso a informação local e remota através de uma interface de usuário consistente e bem integrada. Disponível sem custo na Internet, Emacspeak mudou drasticamente a forma como centenas de cegos e deficientes visuais de todo o mundo interage com o computador pessoal e a Internet. Quando combinado com o Linux rodando em hardware de baixo custo, Emacspeak/Linux fornece uma solução estável que abre a internet para usuários com deficiência visual em todo o mundo.

Tarefas Administrativas

11

/etc/passwd – arquivo de senhas. Passwd é um arquivo texto, que contém a lista de contas do sistema, fornecendo para cada conta qualquer informação útil como identificação numérica do usuário, identificação numérica do grupo, diretório do usuário, interpretador de comandos, etc.

• Permissão total de leitura e permissão de escrita somente para o superusuário. • Cada linha tem o formato: • account:password:UID:GID:GECOS:directory:shell • As GIDs devem ter um correspondente em /etc/group

/etc/shadow – arquivo de senhas criptografadas. Contém, além das senhas criptografadas, informações sobre a idade das senhas.

shadowconfig – Habilitar ou desabilitar senhas shadow.

/etc/group – arquivo dos grupos de usuários. Define os grupos aos quais os usuários pertencem. • Uma entrada por linha, e cada linha segue o seguinte formato: • nome_do_grupo:senha:GID:lista_de_usuários • O último campo, lista de usuários, contém todos os usuários do grupo, separados por vírgula

/etc/login.defs – configurações para a suíte de aplicativos de login. Define várias opções de segurança e de informação.

/etc/skel - diretório que contém arquivos padrão que são copiados para novos usuários. Normalmente contém os arquivos .bashrc, .profile e .bash_logout

passwd - mudar a senha de uma conta de usuário. Um usuário normal somente pode alterar a senha para sua própria conta, o super-usuário pode mudar a senha de qualquer conta. O usuário primeiro é questionado sobre sua senha atual, o super-usuário não precisa informar a senha atual.

• -a : usado juntamente com -S, mostra informações sobre todos usuários.• -d / --delete : deletar uma senha de usuário.• -e / --expire : expira imediatamente a senha de uma conta. Isto força o usuário a mudar a

sua senha no próximo login. • -i / --inactive dias : esta opção é usada para desabilitar uma conta depois que a senha

houver expirado por um número de dias. • -l / --lock : trava a senha para uma conta. Não desabilita a conta, apenas o uso de senha.• -m / --mindays : definir o número de dias mínimo entre alterações de senhas.• -S / --status : mostra informações de estado da conta. Consiste em 7 campos.• Nome de login• Indica se a conta está travada (L), se tem senha definida (NP) ou se tem uma senha usável

(P) • Data da última modificação• Idade mínima, idade máxima, período de alerta e período de inatividade, expressos em dias. • -u / --unlock : destravar a senha da conta de usuário.• -w / --warndays : definir o número de dias para o período de alerta.• -x / --maxdays : definir o número máximo de dias que uma senha continua válida.

chage - mudar as informações de expiração da senha do usuário. Chage [opções] [login]. Muda o número de dias entre alterações de senhas, e a data da última alteração da senha. Usado pelo sistema para determinar quando um usuário deve alterar sua senha.

12

• -d / --lastday dia : definir a data quando a senha foi alterada. A data pode ser expressa noformato YYYY-MM-DD.

• -E / --expiredate : definir a data quando a senha da conta de usuário irá expirar. • -I / --inactive : definir o número de dias de inatividade desde que a senha tenha expirado até

que a conta seja trancada. • -l / --list : mostrar informações sobre a idade das contas. • -m / --mindays : definir o número mínimo de dias para alterar a senha. • -M / --maxdays : definir o número máximo de dias durante os quais a senha é válida. • -W / --warndays : definir o número de dias do período de alerta até que uma alteração de

senha seja exigida.

groupadd - criar um novo grupo. • -f / --force : se o grupo já existir, o aplicativo fecha com estado de sucesso. • -g / --gid : o ID de identificação do grupo. • -r / --system : criar um grupo do sistema.

groupdel - deletar um grupo. Modifica os arquivos de conta do sistema, deletando todas as entradas para o referido grupo. Não é possível excluir o grupo primário de um usuário existente.

groupmod - modificar a definição de um grupo no sistema. • -g / --gid : modificar o ID do grupo. Valores entre 0 e 999 são tipicamente reservados para

grupos do sistema. • -n / --new-name novo_grupo : o nome do grupo será alterado para novo_grupo. • -p : alterar a senha do grupo.

newgrp – conectar a um novo grupo. É usado para mudar o grupo atual durante uma sessão de login. Também tenta adicionar o grupo ao conjunto de grupos do usuário.

groups – mostrar os grupos os quais o usuário faz parte. O superusuário pode visualizar os grupos de todos outros usuários.

useradd – criar um novo usuário. É um utilitário de baixo nível para adicionar usuários. No Debian, administradores devem usar o adduser.

• -c / --comment : qualquer string de texto. Comumente usado para o nome completo.• -b / --base-dir diretório : o diretório base para o sistema.• -D / --defaults : adiciona um usuário com os valores padrão.• -e / --expiredate : a data na qual a conta do usuário irá expirar. Formato YYYY-MM-DD• -f / --inactive dias : número de dias, depois que a senha expirar, até que a conta seja

permanentemente desativada. • -g / --gid : o nome ou o id do grupo inicial do usuário.• -G / --groups : uma lista suplementar dos grupos os quais o usuário é membro.• -k / --skel diretório : o diretório skeleton, que contém arquivos e diretórios a serem

copiados para a pasta home do novo usuário criado. • -l : não adicionar o usuário ao banco de dados do lastlog e do faillog• -m / --create-home : criar um diretório home para o usuário, se não existir. Por padrão,

nenhum diretório home é criado. • -N / --no-user-group : não criar um grupo com o mesmo nome do usuário, mas adicionar o

usuário a um grupo especificado com o argumento -g.

13

• -p / --password senha : a senha encriptada, protegida pelo crypt.• -r / --system : criar uma conta de sistema.• -s / --shell shell : o nome do shell do usuário, deixado em branco por padrão.• -u / --uid uid : o valor numérico do ID do usuário.• -U / --user-group : criar um grupo com o mesmo nome do usuário, e adicionar o usuário a

este grupo.

Observações sobre o useradd: • Quando invocado somente com a opção -D, useradd irá mostrar os valores padrão atuais.

Quando invocado com a opção -D junto com outras opções, useradd irá atualizar os valores padrão para as opções especificadas.

• O arquivo /etc/login.defs muda o comportamento desta ferramenta.

userdel – excluir uma conta de usuário e arquivos relacionados. Utilitário de baixo nível para remoção de usuários. No debian recomenda-se o utilitário deluser.

• -f / --force : força a remoção de uma conta de usuário, mesmo se o usuário estiver logado. Força a remoção do diretório home e do spool de e-mail. Esta opção pode ser perigosa.

• -r / --remove : arquivos no diretório home do usuário e spool de e-mail são removidos.

usermod – modificar uma conta de usuário. • -a / --append : adiciona o usuário a grupos suplementares. Use apenas com a opção -G. • -c / --comment : novo valor para o campo comentário do arquivo passwd. • -d / --home : caminho para o diretório home do usuário. • -e / --expiredate : data na qual a conta de usuário será desabilitada. • -f / --inactive : o número de dias depois que a senha houver expirado até que a conta seja

permanentemente desabilitada. • -g / --gid : o grupo ou ID de grupo do grupo inicial do login de usuário. • -G / --groups : lista de grupos suplementares os quais o usuário deve fazer parte, separados

por vírgula. • -l / --login : o nome do usuário será alterado. Nada mais é alterado, nem mesmo o diretório

home do usuário. • -L / --lock : travar uma senha de usuário. • -p / --password : alterar a senha. • -s / --shell : alterar o shell do login inicial do usuário. • -u / --uid : alterar o ID de usuário. • -U / --unlock : destravar a senha do usuário.

chfn – alterar o nome real do usuário e outras informações. • -f : nome completo • -r : número da sala • -w : telefone do trabalho • -h : telefone de casa • -o : outros

chsh – mudar o shell de login do usuário. Um usuário normal somente pode mudar o seu próprio shell, o superusuário pode mudar o shell de qualquer usuário.

• -s / --shell : definir, via linha de comando, o novo shell do usuário. • Shells disponíveis encontram-se em /etc/shells

14

Automação com Agendamento de Tarefas

Cron é um daemon usado no Linux e em várias versões do Unix que executa tarefas agendadas no arquivo "/etc/crontab". Esta é uma ferramenta bastante poderosa, que pode ser usada para automatizar tarefas de rotina e de manutenção do sistema.

crontab – manter arquivos de crontab para usuários individuais. Cada usuário tem seu próprio arquivo crontab, localizado em /var/spool/cron/crontabs

• -l : lista as tarefas agendadas para o usuário • -e : edita o agendador • -r : apaga o arquivo do usuário

/etc/crontab – arquivo de configuração do cron para o sistema e para o root, segue a sintaxe informada abaixo.

• Quando um dos atributos é informado como sendo * (asterisco) assume-se a condição para todos os valores possíveis. Por exemplo, se colocamos * no mês, executa-se o comando dado em todos os meses do ano.

• Deve-se informar o SHELL utilizado e o PATH • SHELL = /bin/bash • PATH = /sbin:/bin:/usr/sbin:/usr/bin • MAILTO = root • HOME = /

.---------------- minuto (0 - 59) | .------------- hora (0 - 23) | | .---------- dia do mês (1 - 31) | | | .------- mês (1 - 12) | | | | .---- dia da semana (0 - 6) (Domingo=0) | | | | | * * * * * comando a ser executado

Exemplo – todos os dias, às 8 da manhã, executar o comando updatedb * 08 * * * updatedb

Dentro do diretório /etc, existem quatro diretórios de agendamentos pré-definidos. Para utilizá-los, basta copiar o script para dentro de um desses diretórios:

• /etc/cron.hourly/ : de hora em hora • /etc/cron.daily/ : de dia em dia • /etc/cron.weekly/ : de semana em semana • /etc/cron.montly/ : de mês em mês

Após copiar o script para o diretório desejado, é necessário reiniciar o daemon do cron, para que as alterações entrem em vigor.

• /etc/init.d/cron restart

at – Enfileirar, examinar ou deletar trabalhos para execuções posteriores. Aceita horários no formato HH:mm para executar uma tarefa em uma hora específica do dia (se o horário já houver

15

passado, o próximo dia é assumido). Pode-se usar os sufixos AM ou PM para executar no período matutino ou vespertino.

• -l : um alias para atq. Lista os trabalhos enfileirados.• -d : um alias para atrm. Deleta um trabalho enfileirado.• -f arquivo : lê os comandos de um arquivo• Tarefas agendadas ficam guardadas no diretório /var/spool/cron/atjobs• Também pode-se especificar qual dia a tarefa será executada nos formatos MMDDAA ou

MM/DD/YY ou DD.MM.YY• A especificação da data deve vir após a especificação da hora. Por exemplo, pode-se utilizar

at 4pm +3 days• Pode-se especificar horários tais como now + número unidade. As unidades podem ser

minutes, hours, days ou weeks. at now + 12 hours

O superusuário pode usar esses comandos em qualquer caso. Para outros usuários, permissão de uso deve estar determinada nos arquivos /etc/at.allow e /etc/at.deny

• Um arquivo /etc/at.deny vazio significa que qualquer usuário pode utilizar esses comandos. Essa é a configuração padrão.

anacron – Usado para executar comandos periodicamente, com uma frequência especificada em dias. Diferente do cron, não assume que a máquina rode continuamente.

• Quando executado, anacron lê uma lista de tarefas de um arquivo de configuração, normalmente /etc/anacrontab. Esse arquivo contém uma lista das tarefas que o anacron controla.

• /var/spool/anacron – Diretório usado para armazenar as etiquetas de tempo dos arquivos.• -u : apenas atualizar a etiqueta de tempo dos trabalhos, para a hora corrente, mas não

executar nenhum.• -s : serializar a execução das tarefas. Uma só roda após a conclusão da outra.• -n : executar todos as tarefas agora.

/etc/anacrontab – Arquivo de configuração para o anacron. As descrições de tarefas seguem a forma:

período delay identificador­da­tarefa comando@nome_do_período delay identificador­da­tarefa comando

Exemplo de uso:

# todo dia (1), após 5 minutos (5) depois de ligado.1 5 falador echo “Olá eu sou o falador”

• O período é especificado em dias, o delay em minutos.

Localização e Internacionalização

O kernel do Linux mantém um relógio separado do relógio do hardware (BIOS). Durante o boot, o relógio do kernel lê o relógio do hardware e a partir daí roda distintamente. Esse procedimento se justifica pois ler o relógio do hardware é lento e complicado. O relógio do kernel guarda a hora universal, de modo que fusos horários são calculados por cada processo através das ferramentas timezone.

16

O fuso horário do sistema é determinado pelo arquivo /etc/localtime, que geralmente é um link simbólico apontando para o arquivo real em /usr/share/zoneinfo/ ou em /usr/lib/zoneinfo/.

• Os fuso horários possíveis são encontrados em /usr/share/zoneinfo

date – Exibir ou configurar a data e hora do sistema.• -u : mostrar a hora universal.• Segue o seguinte formato:

date MMDDhhmmYYYY.ss

MM – MêsDD – Diahh – Horamm – MinutoYYYY – Anoss – Segundo

Exemplo:

# date 111622042010.20 # Ter Nov 16 22:04:20 BRST 2010 

hwclock – Consultar e definir o relógio de hardware.• -r / --show : ler o relógio de hardware e imprimir na saída padrão.• -s / --hctosys : configurar a hora do sistema para a hora do relógio de hardware.• -w / --systohc : configurar o relógio de hardware igual o relógio do sistema.

locale – Obter informações específicas da localidade. Mostra informações sobre a localidade atual do sistema.

• -a / --all-locales : Mostra o nome de todas as variáveis.• /usr/share/i18n/SUPPORTED – Lista de todos os valores suportados pelo nome da

localidade.

/usr/lib/locale/ - Base de dados para todas atuais definições de categoria de localização.

tzselect – Ver fuso horários. É chamado sem nenhum parâmetro e mostra uma lista de cerca de uma dúzia de áreas geográficas que pode-se reconhecer como os continentes. Depois de escolher uma área geográfica pelo número, uma lista de países e cidades nesta área serão mostrados.

• /usr/share/zoneinfo – Arquivos para fuso horários possíveis.• Escolher no diretório acima e depois configurar em /etc/timezone• Para alterar permanentemente as opções de localidade, também pode-se utilizar o comando:

dpkg-reconfigure tzdata, anteriormente usava-se o comando tzconfig.

iconv – Converter a codificação de um arquivo dado de uma codificação para outra.• -f / --from-code : Definir a codificação de origem dos caracteres.• -t / --to-code : Definir a condificação de destino dos caracteres.• -l / --list : Listar todos os conjuntos de caracteres conhecidos.• -o / --output : Especificar o arquivo de saída.

UTF-8 - uma codificação Unicode multibyte compatível com ASCII. A codificação UTF-8 é a

17

maneira de usar o conjunto de caracteres Unicode sob sistemas operacionais do estilo Unix.• A ordenação lexicográfica das strings UCS-4 é preservada.• Os bytes 0xfe e 0xff nunca são usados na codificação UTF-8• O caractere Unicode 0xa9 = 1010 1001 (o sinal de copyright) é codificado em UTF-8 como

11000010 10101001 = 0xc2 0xa9 • Geralmente utilizado no Linux

ISO 8859 - Conjunto de caracteres ISO (International Organization for Standardization), que é extensão ao código ASCII. Inclui caracteres acentuados. O padrão ISO 8859 inclui várias extensões de 8 bits para o conjunto de caracteres ASCII (também conhecido como ISO 646-IRV). Especialmente importante é o ISO 8859-1, o "Alfabeto Latino No. 1", que tem se tornado largamente implementado e já pode ser visto como um substituto de fato para o padrão ASCII.

• Geralmente utilizado no Windows

ASCII - significa American Standard Code for Information Interchange (Código Americano Padrão para Intercâmbio de Informação). É um código de 7 bits. Muitos códigos de 8 bits (tais como o ISO 8859-1) contém o ASCII como a sua metade inferior. A parte internacional correspondente do ASCII é conhecida como ISO 646.

Manter a Hora do Sistema

O NTP (Network Time Protocol) é largamente utilizado para sincronizar um computador a um servidor de tempo da Internet ou de outras fontes, como um receptor de rádio ou de satélite.

• Utiliza o protocolo de transporte UDP na porta 123 • Arquivo de configuração em /etc/ntp.conf • Definido na RFC 5905. Site oficial: www.ntp.org

Os servidores NTP formam uma topologia hierárquica, dividida em camadas ou estratos numerados de 0 a 16, onde 16 significa um estrato desativado.

• O estrato 0 na verdade não faz parte da rede de servidores NTP, mas representa uma referência primária de tempo, que é geralmente um receptor do sistema de posicionamento global (GPS) ou um relógio atômico.

ntpd - Processo daemon que define e mantém o sistema de tempo em sincronismo com servidores de tempo da Internet que pertençam ao padrão.

• Lê o arquivo /etc/ntpd.conf no momento da inicialização para determinar as fontes de sincronismo e o modo de operação.

• -a : requer autenticação criptográfica para associações de clientes broadcast, multicast e simétricos passivos. Este é o padrão.

• -A : não requer autenticação criptográfica para associações de clientes broadcast, multicast e simétricos passivos. Pode não ser uma boa idéia.

• -b : habilitar o cliente para sincronizar com servidores broadcast. • -c arquivo_configuracao : definir um outro local para o arquivo de configuração que não

seja o /etc/ntpd.conf • -f drift_file : especificar o nome e caminho para o arquivo de freqüências, por padrão em

/etc/ntp.drift. No Debian fica em /var/lib/ntp/ntp.drift • -k arquivo_chave : especificar o nome e o caminho do arquivo de chave simétrica. • -l arquivo_log : especificar o nome e o caminho do arquivo de log. O padrão é o arquivo de

18

log do sistema. • -q : fechar o ntpd após o primeiro sincronismo.

/etc/ntp.conf – Arquivo de configuração para o servidor de tempo NTP. Normalmente lido na inicialização do daemon ntpd para determinar as fontes de sincronismo e o modo de operação. Comandos de configuração consistem em uma palavra-chave inicial seguida por uma lista de argumentos.

• server endereço : para definição de uma fonte de sincronismo. O ideal é usar fontes redundantes para garantir a confiabilidade.

• peer endereço : informar o endereço do par de sincronismo. • broadcast endereço : para definir um endereço para replicação broadcast. • prefer : marca um servidor como preferido. Utilizado somente com a opção server ou peer. • key : todos os pacotes são enviados e recebidos utilizando-se a chave especificada para

autenticação. • driftfile arquivo_drift : define o nome e caminho do arquivo de freqüências.

## /etc/ntp.conf 

# Permite acesso ao servidor para sincronizar mas nao # permite modificacoes no servico restrict default nomodify notrap noquery  # Permite acesso completo para a interface local restrict 127.0.0.1  # Libera acesso a minha rede local restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap  # Servidor para sincronizar o relógio # Será usado em ordem # o pcdsh05.on.br e stratum 1 todos os outros são stratum 2 server pcdsh05.on.br server ntp.pop­go.rnp.br server ntp.pop­df.rnp.br 

# Informa o local do arquivo drift driftfile /var/lib/ntp/ntp.drift 

# Local do arquivo de log # Por padrao em: /var/log/daemon.log logfile /var/log/ntp/ntp.log

ntpdate - Utilitário que permite configurar o horário e data locais usando como referência um servidor NTP remoto. Deve ser executado como root na máquina local. Pode ser rodado manualmente quando necessário e pode ser definido em um script de inicialização.

• -a key : habilitar a função de autenticação e especificar a chave de identificação a ser usada. • -d : habilitar o modo de depuração, informando todos os passos mas sem ajustar o relógio

local. • -k arquivo_chave : especificar o nome e caminho para a chave de autenticação. • -q : perguntar as horas apenas, sem definir o relógio. • -t tempo : especificar o tempo máximo para esperar uma resposta do servidor, em segundos.

19

#! /bin/sh 

# Colocar em /etc/init.d, dar permissao de execucao # chmod +x /etc/init.d/relogio depois configurar a # inicializacao update­rc.d relogio defaults 

ntpdate ntp.pop­go.rnp.br

ntpq – Programa padrão para consultas. É usado para monitorar as operações do daemon NTP e determinar a performance.

• -4 / -6 : força a resolução de DNS para o formato Ipv4 ou Ipv6. • -i : força o ntp a operar no modo interativo, utilizando as entradas e saída padrão do sistema. • -n : todos os endereços de host saem no formato "dotted-quad” em vez de converter aos

nomes canônicos de host. • -p : imprimir uma lista de todos os pares conhecidos ao servidor bem como um sumário de

seus estados. • -c : passar um comando como se estivesse no modo interativo, através da linha de

comandos. ○ peers / pe : fornece informações sobre todos os pares com os quais você está associado,

com informações sobre os seus servidores. ○ associations / as : informações sobre as associações com os servidores. ○ readvar / rv : informações detalhadas sobre sua associação. ○ clockvar / cv : solicita que uma lista de variáveis de relógio do servidor seja enviada. ○ readlist / rl : solicita que os valores das variáveis na lista de variáveis internas sejam

devolvidos pelo servidor

ntpdc – programa especial de consultas ntp. Usado para consultar o daemon ntpqd sobre o seu estado atual e sobre requisições de mudanças em seu estado.

• -4 / -6 : força a resolução de DNS para o formato Ipv4 ou Ipv6. • -i : força o ntp a operar no modo interativo, utilizando as entradas e saída padrão do sistema. • -n : todos os endereços de host saem no formato "dotted-quad” em vez de converter aos

nomes canônicos de host. • -l : obtém uma lista de todos os pares que são conhecidos pelo servidor. Equivalente a -c

listpeers • -s : imprimir uma lista de pares conhecidos pelo servidor bem como um sumário de seu

estado. • -p : imprimir uma lista de todos os pares conhecidos ao servidor bem como um sumário de

seus estados. • -c : passar um comando como se estivesse no modo interativo, através da linha de

comandos. ○ peers / pe : fornece informações sobre todos os pares com os quais você está associado,

com informações sobre os seus servidores. ○ listpeers : lista resumida de todos os servidores aos quais está conectado. ○ showpeer endereco : mostrar informações detalhadas sobre uma associação. ○ sysinfo : imprime uma variedade de variáveis de estado do sistema. ○ sysstats : imprime contadores estatísticos mantidos pelo módulo do protocolo de tempo. ○ reslist : lista de restrições do servidor ntp local.

ntptrace - Determina de onde um determinado servidor NTP obtém a referência de tempo e traça o

20

caminho seguido até o servidor primário (comumente, servidor NTP stratum 1). • -r numero : numero de tentativas. • -t tempo : tempo das tentativas.

Log de Sistema

rsyslog – Utilitário de sistema que provê suporte para log de mensagens.• Arquivo de configuração em /etc/rsyslog.conf

O comportamento do rsyslogd é controlado pelo seu arquivo de configuração, /etc/rsyslog.conf. Esse arquivo de texto contém linhas, indicando o que deve ser locado e onde. Cada linha contém diretivas nesta forma:

# facilidade.nícel açãoauth,authpriv.* /var/log/auth.log

• Facilidade : Representa o criador da mensagem (ou seja, o kernel ou o processo) e é um dos seguintes: auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, syslog, user, uucp ou local0 até local7.

• Nível : Especifica um limite de severidade a partir do qual as mensagens começam a ser logadas, e é um dos seguintes: debug, info, notice, warning, err, crit, alert ou emerg. O asterisco (*) pode ser usado para descrever todas as facilidades ou todos os níveis.

• Ação : Representa o destino das mensagens que correspondem a um dado selecionador (facilidade.nível). A ação pode ser um nome de arquivo ou um nome de host precedido pelo sinal @.

logger - Criar entradas no log do sistema (/var/log/). • -f file : Registrar um arquivo específico. • -t tag : Criar registros com uma tag específica. • -p facilidade.nivel : Define a prioridade do registro. • Ex: logger -p local5.info -t YURI “Isso é um teste” / cat /var/log/messages

logrotate – Permite rotação automática, compressão, remoção e envio de arquivos de log. Cada arquivo de log pode ser manipulado diariamente,semanalmente, mensalmente ou quando ele se tornar muito grande.

• Normalmente executa no agendamento diário do cron.• /var/lib/logrotate/status – Arquivo de status do logrotate.• /etc/logrotate.conf – Configurações do logrotate.• -f / --force : força a rotação, mesmo que não seja necessário.

# Exemplo de configuração do /etc/logrotate.conf weekly rotate 4 create 

/var/log/dpkg.log {  monthly  rotate 12  compress  delaycompress 

21

 missingok  notifempty  create 640 root adm } 

savelog – Salva e opcionalmente comprime copias antigas de arquivos. Versões antigas de arquivos são chamadas: arquivo.<versão><sufixo>

• -p : preserva definições de dono• -j : comprimir com bzip2 ao invés de gzip• -l : não comprimir arquivos de log• -t : criar um arquivo novo para o log.

Agente de Transferência de E-mail (MTA)

O programa responsável por administrar o envio e o recebimento de mensagens de correio eletrônico, local e remotamente, é chamado MTA – Mail Transport Agent. Há várias opções de MTAs, dentre as quais o sendmail, o postfix, o qmail e o exim. O MTA roda como um daemon do sistema, geralmente monitorando a porta 25 (SMTP).

• O MTA mais utilizado é o sendmail, e os demais geralmente oferecem opções de interoperabilidade com ele, salvo as peculiaridades de cada um.

• Sendmail – www.sendmail.org• Exim – www.exim.org• Qmail – qmail.org/top.html• Postfix – www.postfix.org

O sendmail depende de arquivos e diretórios de suporte para funcionar. Os caminhos podem ser alterados no arquivos de configuração do sendmail, mas geralmente encontram-se nos locais padrão:

• /etc/mail/access - Lista de hosts autorizados a enviar email por este servidor. • /etc/mail/aliases ou /etc/aliases - Vincula nomes diferentes para destinatários no sistema.

Após alterar este arquivo, é necessário executar o comando newaliases para gerar o arquivo /etc/mail/aliases.db e só então os aliases serão utilizados pelo sendmail.

• ~/.forward - Pode conter um ou mais endereços para os quais os emails recebidos pelo usuário em questão serão direcionados.

• /var/spool/mail/ - Diretório onde são armazenados os emails após serem recebidos pelo sendmail. É criado um arquivo para cada usuário, que será lido pelo cliente de email do usuário.

• /var/spool/mqueue/ - Diretório de fila para os emails enviados pelos usuários do sistema.

mail – Aplicativo usado para ler os e-mails do usuário. • ~/mbox – Arquivo usado para catalogar todos os e-mails já lidos pelo usuário.• -s : Definir o assunto do e-mail.• Segue o formato: mail -s Assunto usuario@maquina <enter> Mensagem, pode conter mais

de uma linha. Ao final, em uma linha nova, pressiona-se <ctrl+d> para finalizar e enviar a mensagem.

mailq – Mostra a lista de e-mails a serem enviados.

22

Gerenciar Impressoras e Impressão

CUPS é o programa usado para imprimir de aplicativos como um browser de Internet. Ele converte a página produzida pela aplicação em algo que a impressora possa entender e então envia a informação para a impressora para imprimir.

✔ Para acessar o aplicativo de configuração via browser, acesse: http://localhost:631/ ✔ Configurações gerais do cups ficam em: /etc/cups/cupsd.conf ✔ Configurações de impressoras ficam em: /etc/cups/printers.conf ✔ Diretório de spool do CUPS: /var/spool/cups ✔ Impressoras do sistema também são identificadas em: /etc/printcap

cupsd – cupsd é o agendador para o CUPS. Ele implementa um sistema de impressão baseado no Protocolo de Impressão da Internet (IPP v.2.1). O arquivo de configuração fica em /etc/cups/cupsd.conf

• -c arquivo : usa o arquivo de configuração especificado. • -f : executa o cupsd em primeiro plano. • -h : mostra como usar o programa • -t : testa o arquivo de configuração por erros de sintaxe

/etc/cups/cupsd.conf – arquivo de configuração do CUPS. Contém as diretivas que controlam as funções do servidor.

/etc/cups/printers.conf – arquivo que contém as configurações das impressoras instaladas.

lpr – envia arquivos para impressão. • -E : forçar a criptografia quando conectar ao servidor. • -C nome : definir o nome do trabalho. • -P destino : imprimir trabalhos para a impressora especificada • -U username : especificar um nome de usuário diferente • -# copias : definir o número de cópias a serem impressas. • -h : desabilitar a impressão de banners. • -l : afirmar que o trabalho já está formatado para impressão, enviando para impressora sem

nenhum filtro. • -m : enviar um e-mail ao final do trabalho. • -p : especificar a adição de um cabeçalho com data, hora, nome e número da página. • -r : excluir os arquivos após a impressão.

lpq – mostrar o estado de uma fila de impressão de uma determinada impressora. • -E : forçar a criptografia quando conectar ao servidor. • -P destino : imprimir trabalhos para a impressora especificada • -U username : especificar um nome de usuário diferente • -a : exibir trabalhos em todas as impressoras • -l : mostrar dados em um formato mais detalhado

lprm – cancelar trabalhos de impressão que haviam sido enfileirados. • -E : forçar a criptografia quando conectar ao servidor.

23

• -P destino : imprimir trabalhos para a impressora especificada • -U username : especificar um nome de usuário diferente

Fundamentos de Protocolos da Internet

/etc/services – Lista os serviços da rede Internet. Arquivo ASCII provendo um mapeamento amigável entre nomes textuais para serviços da internet, e consignar suporte para números de portas e tipo de protocolos.

• Números de portas são designadas pelo IANA (Internet Assigned Numbers Authority), e atualmente a política deles é designar ambos os protocolos TCP e UDP quando designando um número de porta.

Alguns números de portas associados a serviços amplamente conhecidos:

PORTA SERVIÇO

20 FTP (dados)

21 FTP

22 SSH

23 TELNET

25 SMTP

53 DNS

80 HTTP

110 POP3

119 NNTP (USENET news)

139 NETBIOS

143 IMAP

161 SNMP

443 HTTPS

465 SSMTP (smtp sobre SSL)

993 IMAPS (imap sobre SSL)

995 POP3S (pop3 sobre SSL)

ftp - uma interface de usuário para o protocolo de transferência de arquivos da Internet. O programa permite ao usuário transferir arquivos para e de um site remoto da rede.

• -p : usar o modo passivo para transferência de dados. Permite o uso de ftp em sistemas onde um firewall previne conexões de fora retornarem à máquina local. Requer que o servidor ftp suporte o comando PASV.

• -i : desliga o prompt interativo durante a transferência de múltiplos arquivos. • -n : restringe ao ftp de tentar "login automático" na conexão inicial. Se o login automático é

ativado, ftp irá verificar o arquivo .netrc no diretório home do usuário para uma entrada descrevendo uma conta na máquina remota.

• -e : desativar a edição de comandos e o suporte a histórico.

24

• -v : modo verbose que exibe todas as respostas do servidor remoto bem como relatório estatístico da transferência de dados.

• -d : habilitar o modo de depuração.

Comandos de Conexão: • open host [port] : estabelecer uma conexão com um servidor ftp específico. Um número de

porta pode ser opcionalmente fornecido. • user user-name [password] [account] : identifica você mesmo para o servidor ftp remoto.

Se a senha não for especificada, o servidor irá requerê-la. • account [passwd] : fornece uma senha suplementar requerida para acesso a um sistema

remoto para acesso aos recursos, uma vez que o login tenha sido completado com sucesso. • close / disconnect : terminar a sessão ftp com o servidor remoto e retornar ao interpretador

de comandos. • bye / quit : terminar uma sessão ftp com o servidor remoto e fechar o ftp.

Comandos de Manipulação de arquivos e diretórios: • append local-file [remote-file] : anexar um arquivo local para um arquivo na máquina

remota. • delete remote-file : excluir o arquivo remoto na máquina remota. • mdelete [remote-files] : excluir os arquivos remotos na máquina remota. • mkdir directory-name : criar um diretório na máquina remota. • mls remote-files local-file : exibir uma lista do conteúdo de vários diretórios na máquina

remota. • cd remote-directory : alterar o diretório de trabalho na máquina remota para remote

directory. • lcd [directory] : alterar o diretório de trabalho na máquina local. • get remote-file [local-file] : recuperar o arquivo remoto e armazená-lo na máquina local. Se

o nome local não for especificado, usa-se o mesmo nome no diretório atual. • mget remote-files : recuperar vários arquivos da máquina remota e armazená-los na

máquina local. • newer file-name [local-file] : recuperar um arquivo somente se a data de modificação do

mesmo na máquina remota for mais recente do que a data de modificação no sistema atual. • put local-file [remote-file] : armazenar um arquivo local no servidor remoto. • mput local-files : colocar vários arquivos da máquina local na máquina remota. • send local-file [remote-file] : armazenar um arquivo local no servidor remoto. • rename [from] [to] : renomear um arquivo da máquina remota. • rmdir directory-name : excluir um diretório da máquina remota • recv remote-file [local-file] : recuperar o arquivo remoto e armazená-lo na máquina local.

Se o nome local não for especificado, usa-se o mesmo nome no diretório atual. • ls [remote-directory] [local-file] : exibir uma lista do conteúdo de um diretório na máquina

remota. • dir [remote-directory] [local-file] : imprimir uma lista do conteúdo do diretório remoto e,

opcionalmente, colocar a saída em um arquivo local. • mdir remote-files local-file : igual ao dir, exceto pelo fato de aceitar vários diretórios a

serem exibidos da máquina remota. • nlist [remote-directory] [local-file] : exibir uma lista dos arquivos do diretório na máquina

remota e, opcionalmente, gravar a lista em um arquivo local.

25

Comandos para Informações: • verbose : alterar para o modo verbose. No modo verbose todas as respostas do servidor são

exibidas. • pwd : imprimir o nome do diretório atual de trabalho na máquina remota. • remotestatus [file-name] : sem argumentos exibe o status atual da máquina remota. Se um

arquivo for especificado, mostra o status do arquivo. • size file-name : exibir o tamanho de um arquivo na máquina remota. • status : mostrar o status atual do ftp. • system : exibir o tipo de sistema operacional rodando na máquina remota. • help [command] : imprimir uma mensagem informativa sobre o significado de um

comando.

Comandos para Configurações: • ascii : definir o tipo de transferência de arquivos para ASCII. Este é o tipo padrão. • bell : faz com que um alarme toque depois que cada comandos de transferência de arquivos

for completado. • binary : definir o tipo de transferência de arquivos para suportar transferência de imangens

binárias. • idle [seconds] : definir o tempo de inatividade no servidor remoto. Se os segundos forem

omitidos, exibi-se o valor atual configurado. • mode [mode-name] : definir o modo de transferência de arquivos. O valor padrão é

“stream” • modtime file-name : mostrar a data da última modificação do arquivo na máquina remota. • prompt : alterar para o modo de prompt interativo. Esse é o padrão. • type [type-name] : define o tipo de transferência de arquivos. Se nenhum tipo for

informado, o tipo atual é exibido. O tipo padrão é ASCII. • umask [newmask] : definir o umask padrão do servidor remoto. Se um novo valor for

omitido, o valor atual é exibido. • chmod mode file-name : alterar o modo de permissão do arquivo file-name no sistema

remoto para mode.

telnet – Usado para comunicação interativa com outro host usando o protocolo TELNET. • Usado seguindo o modelo: telnet [-l usuário] host porta• Funciona normalmente na porta 23.• /etc/telnetrc : valores globais de inicialização do telnet.• -l : especificar o usuário a ser usado na máquina remota.

Alguns comandos do telnet:• close : fecha a conexão com o host remoto.• logout : desconecta a sessão do usuário, sem fechar a conexão com o host.• open host : abrir uma conexão com o host, quando não o for feito pela linha de comando.• exit : fechar qualquer conexão e encerra o telnet.• status : mostrar o estado atual do telnet.

host – Utilitário de pesquisa DNS. Usado normalmente para converter nomes em endereços IP e vice versa.

• Utiliza o arquivo /etc/resolv.conf para definir o servidor DNS a ser utilizado na pesquisa.

26

host [opções] nome [servidor]

Exemplo

host www.google.com

dig – Utilitário de pesquisa DNS – mostra o formado dos pacotes DNS de resposta. Funciona como uma ferramenta flexível para interrogar servidores DNS. Ele faz pesquisas de nomes e mostra as respostas que são enviadas do servidor de nomes que é questionado.

dig [@ip.do.servidor] nome tipo

• Os tipos que podem ser usados são: ANY, A, MX, SIG, etc.• Servidores de nomes são definidos na RFC 1035.

ping – Enviar pacotes ECHO_REQUEST ICMP para hosts de rede. • -b : permitir pings para endereços broadcast.• -c : especificar o número de pacotes a ser enviado.• -f : flood ping. Zero de intervalo entre pacotes.• -i : definir o intervalo entre o envio de pacotes.• -q : não exibir a saída de cada pacote. Quiet.• -s : definir o tamanho dos pacotes. O padrão é 56 que se transformam em 64 com os 8 bytes

do cabeçalho ICMP.

traceroute – Imprime a rota dos pacotes da máquina local até uma rede de destino. • -I : usar pacotes ICMP ECHO para os testes• -T : usar pacotes TCP SYN para os testes• -i : especificar a interface pela qual os pacotes serão enviados• -s : escolher um IP de origem alternativo.

tracepath – Traça o caminho para um host da rede, descobrindo o MTU ao longo deste caminho. Usa-se uma porta UDP aleatória ou definida pelo usuário. É similar ao traceroute mas não requer privilégios de root.

• -b : imprimir o nome do host e o endereço IP. O padrão é apenas o nome.• -n : mostrar apenas o endereço IP para identificar os hosts.

tcpdump – Capturar o tráfego de uma rede. Mostra uma descrição do conteúdo dos pacotes que passam por uma interface de rede.

• -A : imprimir cada pacote em ASCII.• -B : definir o tamanho do buffer de captura. • -c : número de pacotes a serem capturados.• -i : especificar a interface a ser monitorada.• -n : não converter endereços em nomes.

Algumas opções para filtro do tcpdump:• dst host endereço.do.host : captura apenas pacotes com o endereço de destino especificado.• src host endereço.do.host : captura apenas pacotes com o endereço de origem especificado.• host endereço.do.host : pacotes de ou para o host especificado.• dst net rede : definir a rede de destino

27

• src net rede : definir a rede de origem• net rede : definir uma rede relacionada, de origem ou destino• dst port porta : porta de destino• src port port : porta de origem• port port : porta relacionada, de origem ou destino• less tamanho : pacotes menores que um determinado tamanho• greater tamanho : pacotes maiores que um determinado tamanho• tcp, udp, icmp : definir o protoco dos pacotes a serem capturados.

Configuração Básica de Rede

/etc/hostname – Definir o nome de rede da máquina local.

hostname – Mostra ou altera o nome do host.

/etc/hosts – Tabela estática de pesquisa para nomes de host. Este é um arquivo de texto simples que associa endereços IP com hostnames.

• Formato: endereço.IP hostname [aliases]

/etc/networks – Semelhante ao hosts, atribui nomes à números de redes.

/etc/resolv.conf – Arquivo de configuração do resolvedor de nomes do sistema.• nameserver : endereço de um servidor de nomes que será usado para resolver pesquisas.• domain : especifica o nome de domínio.• search : definir uma lista de busca

/etc/nsswitch.conf - Sistema de bancos de dados e arquivo de configuração Name Service Switch. Define a forma de busca de vários bancos de dados de funcionalidades do sistema.

• Aceita os seguintes bancos de dados: aliases, ethers, group, hosts, netgroup, networks, passwd, protocols, publickey, rpc, services, shadow

• Os tipos de pesquisa suportados são:◦ compat : utiliza arquivos do sistema◦ dns : resolução por servidores de nomes◦ nis : utiliza o serviço nis

ifconfig – Configura uma interface de rede. É usado durante o boot para configurar a maioria delas para um estado usável. Se nenhum argumento for informado, ifconfig somente mostra o estado das interfaces correntemente definidas.

ifconfig eth0 10.0.0.10 netmask 255.0.0.0 up

• up : causa a ativação da interface.• down : causa a desativação da interface.• mtu : configura o tamanho da unidade máxima de transferência (MTU) para a interface.• netmask : configura a máscara de rede.• broadcast : especifica o endereço de broadcast.• hw : configura o endereço de hardware (mac).

28

ifup – Ativar uma interface de rede.• -a : ativar todas as interfaces de rede.• /var/run/network/ifstate – estado atual das interfaces de rede.• Pode ser usada para criar aliases para as interfaces de rede.

ifup eth0=home

ifdown – Desativar uma interface de rede.• -a : desativar todas as interfaces de rede.

route – Mostra e manipula tabelas de roteamento IP. • add e del são usados juntamente com -net ou -host (exemplo: route add -net 127.0.0.0)• -n : mostra endereços numéricos, sem tentar resolver nomes.• del : remove uma rota• add : adiciona uma rota• -net : o alvo é o endereço de uma rede• -host : o alvo é o endereço de um host• gw : quaisquer pacotes IP para a rede/máquina destino serão roteadas através do

gateway/roteador especificado.

netstat - Mostra conexões de rede, tabelas de roteamento, estatísticas de interface e conexões mascaradas. Você pode ver o estado das conexões de rede através da listagem dos sockets abertos.

• -r / --route : obter as tabelas de roteamento do kernel.• -i / --interfaces : mostrar uma tabela de todas as interfaces.• -s / --statistics : Mostra estatísticas sobre o subsistema de rede do kernel do Linux, que são

lidas a partir de /proc/net/snmp.• -n : mostrar endereços numéricos, sem tentar resolver nomes.

Executar Tarefas de Administração de Segurança

find : Procura por arquivos em uma hierarquia de diretórios.• -perm : Especificar a permissão para os arquivos que se busca.• -L : Aceitar links simbólicos.• -mount : Não buscar em diretórios de outros sistemas de arquivos• -empty : Buscar arquivos vazios• -executable : Buscar arquivos executáveis• -group : Arquivos pertencentes a um determinado grupo• -name : Procurar arquivos pelo nome• -readable : Arquivos com permissão de leitura• -size : Definir o tamanho do arquivo. Pode ser antecedido por + ou – para indicar maior que

ou menor que o tamanho especificado. find / -size +10M (k | M | G)• -type : Arquivos por tipo. D – diretórios, F – Regurar e L – link simbólico• -writable : Arquivos com permissão de escrita

Para buscar todos arquivos com suid definido:

find / ­perm ­u=rws

29

(dar ênfase as opções de mudança de idade das senhas)passwd - mudar a senha de uma conta de usuário. Um usuário normal somente pode alterar a senha para sua própria conta, o super-usuário pode mudar a senha de qualquer conta. O usuário primeiro é questionado sobre sua senha atual, o super-usuário não precisa informar a senha atual.

• -a : usado juntamente com -S, mostra informações sobre todos usuários.• -d / --delete : deletar uma senha de usuário.• -e / --expire : expira imediatamente a senha de uma conta. Isto força o usuário a mudar a

sua senha no próximo login. • -i / --inactive dias : esta opção é usada para desabilitar uma conta depois que a senha

houver expirado por um número de dias. • -l / --lock : trava a senha para uma conta. Não desabilita a conta, apenas o uso de senha.• -m / --mindays : definir o número de dias mínimo entre alterações de senhas.• -S / --status : mostra informações de estado da conta. Consiste em 7 campos.• Nome de login• Indica se a conta está travada (L), se tem senha definida (NP) ou se tem uma senha usável

(P) • Data da última modificação• Idade mínima, idade máxima, período de alerta e período de inatividade, expressos em dias. • -u / --unlock : destravar a senha da conta de usuário.• -w / --warndays : definir o número de dias para o período de alerta.• -x / --maxdays : definir o número máximo de dias que uma senha continua válida.

chage - mudar as informações de expiração da senha do usuário. Chage [opções] [login]. Muda o número de dias entre alterações de senhas, e a data da última alteração da senha. Usado pelo sistema para determinar quando um usuário deve alterar sua senha.

• -d / --lastday dia : definir a data quando a senha foi alterada. A data pode ser expressa noformato YYYY-MM-DD.

• -E / --expiredate : definir a data quando a senha da conta de usuário irá expirar. • -I / --inactive : definir o número de dias de inatividade desde que a senha tenha expirado até

que a conta seja trancada. • -l / --list : mostrar informações sobre a idade das contas. • -m / --mindays : definir o número mínimo de dias para alterar a senha. • -M / --maxdays : definir o número máximo de dias durante os quais a senha é válida. • -W / --warndays : definir o número de dias do período de alerta até que uma alteração de

senha seja exigida.

lsof – Listar os arquivos abertos. Um arquivo aberto pode ser um arquivo regular, um diretório, um arquivo de bloco especial, entre outros.

• Exemplo, saber um arquivo de texto aberto: lsof | grep .odt

nmap – (Network Mapper) Ferramenta de exploração da rede e escaner de portas para segurança. Utilizado principalmente para auditorias de segurança. A saída do nmap é uma lista dos alvos escaneados, com informações suplementares que dependem de cada opção utilizada.

• Especificação de alvo ◦ -iL <inputfilename> : Entrada de uma lista de hosts/redes◦ -iR <num hosts> : Escolhe alvos aleatórios◦ --exclude <host1[,host2][,host3],...> : Excluir hosts da redes◦ --excludefile <exclude_file> : Lista de exclusão de arquivo

30

• Descoberta de host ◦ -SL : List Scan - metas simplesmente uma lista de verificação◦ -sL : List Scan - lista de verificação◦ -sP : Ping Scan - determinar se o host está online◦ -P0 : Tratar todos os hosts como online - skip descoberta de hosts◦ -PS[portlist] : TCP SYN descobre dados das portas◦ -PA[portlist] : TCP ACK descobre dados das portos◦ -PU[portlist] : UDP descobre dados das portas◦ -PE : ICMP echo request descobre perdido (Descobre pacotes icmp perdidos)◦ -PP : timestamp reques descobre perdido◦ -PM : netmask request descobre perdido◦ -n/-R : Never/Always às vezes resolver DNS padrão◦ --dns-servers <serv1[,serv2],...> : Especificar servidores DNS personalizado◦ --system-dns : Resolver dns do SO´s

• Técnicas de escaneamento ◦ -sS : TCP SYN Scan◦ -sT : Connect Scan◦ -sA : ACK Scan◦ -sW : Windows Scan◦ -sM : Maimon scan◦ -sN : TCP Null, scan◦ -sF : FIN Scan ◦ -sX : Xmas Scan◦ --scanflags <flags> : Customize TCP scan flags◦ -sI <zombie host[robeport]> : Idlescan◦ -sO : IP protocol scan◦ -b <ftp relay host> : FTP bounce scan

• Especificação de Portas e Ordem de Scan ◦ -p <port ranges (faixas)> : Escaneia apenas as portas especificadas◦ -F : Fast - Escaneia apenas as portas listados no arquivo nmap-services◦ -r : Escaneia portas consecutivamente - não aleatoriamente

• Detecção de versão/serviço ◦ -sV : Probe abrir portas determinar serviço de informação / versão◦ --version-intensity <level> : Set de 0 (claro) a 9 (tentar todas as sondas)◦ --version-light : Limite para as sondas mais provável (intensidade 2◦ --version-all : Experimente todas as sondagens (intensidade 9)◦ --version-trace : Mostrar versão detalhada verificação de atividade (para depuração)

• D etecção de SO ◦ -O : Ativar a detecção de SO◦ --osscan-limit : Limite de detecção de SO a alvos promissores◦ --osscan-guess : Guess OS de forma mais agressiva

• Calendário e desempenho ◦ Opções que tomar <hora> são em milissegundos, a menos que você adicione 's'

(segundos), 'm' (minutos), ou 'h' (horas) para o valor (por exemplo, 30m).◦ -T[0-5] : definir modelo de calendário (mais alto é mais rápido)◦ --min-hostgroup/max-hostgroup <size> : Parallel host scan group sizes

31

◦ --min-parallelism/max-parallelism <time> : Probe parallelization◦ --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time> : Especifica o tempo de

ida e volta.◦ --max-retries <tries> : Caps número de retransmissões de sondagens de scan de portas.◦ --host-timeout <time> : Dê-se no alvo após este tempo◦ --scan-delay/--max-scan-delay <time> : Ajuste o atraso entre sondagens

• Firewall/IDS Evasion e S poofing ◦ -f; --mtu <val> : fragmentar pacotes (opcionalmente w / dado MTU)◦ -D <decoy1,decoy2[,ME],...> : Disfarça um scan com chamarizes◦ -S <IP_Address> : Disfarça o endereço de origem◦ -e <iface> : Usa a interface especificada◦ -g/--source-port <portnum> : Use o número de determinada porta◦ --data-length <num> : Acrescenta dados aleatórios nos pacotes enviados◦ --ttl <val> : Defina o campo IP time-to-live◦ --spoof-mac <mac add/prefix/vendor name> : Disfarça o endereço MAC◦ --badsum : Enviar pacotes TCP/UDP com um falso checksum

• O utput ◦ -oN <file> : Saída de digitalização em formato normal◦ -oX <file> : Saída de digitalização em formato XML◦ -oS <file> : Saída digitalizar S|<rlpt kIddi3 formato◦ -oG <file> : Saída de digitalização em formato grep◦ -oA <basename> : Saída em três principais formatos de uma só vez◦ -v : nível de verbosidade (uso duas vezes por mais efeito)◦ -d[level] : Ajusta ou aumentar o nível de depuração (até 9)◦ --packet-trace : Mostrar todos os pacotes enviados e recebidos◦ --iflist : nterfaces de impressão do host e rotas (para depuração)◦ --log-errors : Log de erros / avisos para a saída em formato de arquivo normal◦ --append-output : Acrescentar ao invés de sobrepor especificado arquivos de saída◦ --resume <filename> : Continuar um scan abortado◦ --stylesheet <path/URL> : folha de estilo XSL para transformar a saída XML para

HTML◦ --webxml : Referência de estilo de Insecure.Org para XML mais portátil◦ --no-stylesheet : Evitar associação de estilo XSL w / saída XML

• M isc ◦ -6 : Ativar varredura IPv6 ◦ -A : Permite a detecção de SO e detecção de versão◦ --datadir <dirname> : Especificar os dados personalizados Nmap localização do

arquivo◦ --send-eth/--send-ip : Enviar usando frames ethernet em estado bruto ou pacotes IP◦ --privileged : Suponha que o usuário é altamente privilegiado◦ -V : número de versão de impressão◦ -h : Imprima esta página de resumo de ajuda.

O programa sudo tem o propósito da segurança e serve essencialmente para executar um comando como outro usuário. Tipicamente usado para atribuir a usuários comuns poderes para tarefas administrativas sem precisarem da senha do root.

• As permissões de acesso e definições são feitas no arquivo /etc/sudoers

32

• Se um usuário não listado no arquivo /etc/sudoers tentar executar um comando via sudo, um e-mail é enviado para o responsável definido no arquivo sudoers, por padrão o root.

sudo – executar um comando como outro usuário. • -b : executar um comando em background • -E : preservar o sistema, incluindo variáveis • -e : ao invés de executar um comando, editar um arquivo. O mesmo que sudoedit. • -h : help, imprime uma mensagem de uso • -i : simula um login inicial. Essa opção roda o shell especificado em /etc/passwd. • -L : lista as opções padrão do sudo • -l : mostra quais comandos o usuário pode rodar • -s : usa um shell específico. • -u : faz o usuário rodar um comando como outro usuário que não o root

sudoedit – editar um arquivo como outro usuário.

/etc/sudoers – arquivo de configuração do sudo, lista os privilégios de cada usuário, definindo quem pode rodar o que e onde. Possui quatro seções explicadas na tabela a seguir.

• Este arquivo deve pertencer ao usuário root e ter a permissão 440

Seção Objeto Descrição

1 Hosts Sintaxe: Host_Alias IDENTIFICADOR = endereco Utilizado para definir os grupos de hosts que serão utilizados nas restrições. Exemplo: Host_Alias LOCAL = localhost, 127.0.0.1

2 Usuários Sintaxe: User_Alias IDENTIFICADOR = usuarios Utilizado para definir os grupos de usuários que serão utilizados nas restrições. Exemplo: User_Alias ADMIN = yuri

3 Comandos Sintaxe: Cmnd_AliasIDENTIFICADOR = comandos Utilizado para definir grupos de comandos que serão utilizados nas restrições. Exemplo: Cmnd_Alias DESLIGAR = /sbin/shutdown -h now

4 Restrições Sintaxe: USUARIO COMPUTADOR = COMANDOS Define as restrições de acesso dos usuários. Mistura-se aqui os identificadores das seções anteriores à fim de montar regras que definam os acessos. Exemplo: ADMIN LOCAL = DESLIGAR

su – Alterar o ID de usuário ou tornar-se super-usuário. Usado para se tornar outro usuário durante a sessão. Invocado sem argumentos, o su por padrão tentar tornar-se super-usuário.

• -c : especificar um único comando a ser executado com a identidade de outro usuário.• -s : especificar o shell a ser utilizado com a nova identidade.• -p : preservar o sistema e suas variáveis.

ulimit – Obter e definir os limites de usuários. Impôr limites aos utilizadores a nivel de numero de processos em execuçao, quotas de memoria, quotas de espaço em stack, numero de arquivos

33

abertos, etc.• -c : Core file em blocos de 512 bytes• -d : Segmento de dados em Kbytes• -f : Tamanho maximo de cada ficheiro em blocos de 512 bytes• -n : Numero maximo de filedescriptor + 1• -s : Stack em Kbytes• -t : Tempo de CPU em segundos• -v : Tamanho maximo de memoria virtual em Kbytes. ?• -m : Tamanho maximo de memoria• -u : Numero maximo de processos• -p : Tamanho para pipes em blocos de 512• -S : Impoe o soft limit• -H : Impoe o hard limit• -a : Nostra os limits correntemente aplicados

Configuração de Segurança do Host

/etc/nologin – Previnir usuários sem privilégios de se logarem no sistema. Se o arquivo existir, o login será permitido apenas ao root, nenhum outro usuário poderá se logar no sistema.

nologin – Recusar o login de forma educada. Mostra uma mensagem dizendo que a conta não está disponível atualmente.

xinetd - O xinetd é responsável por vários serviços básicos de um sistema disponibilizados em uma rede. 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ável por escutar as requisições que chegam, e conforme a porta por onde chega à requisição, disparar e executar o processo correspondente àquele serviço.

• O xinetd carrega seu arquivo de configuração e passa a “ouvir” por conexões em portas específicas. Quando uma conexão é solicitada, o xinetd executa o programa servidor correspondente para manipular o serviço solicitado. Então, desta forma, existirá apenas um servidor em 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 serem monitorados a partir de um arquivo denominado /etc/xinetd.conf

Configuração do /etc/xinetd.conf:• As configurações inseridas dentro da sessão defaults serão aplicadas para todos os outros

serviços configurados.

defaults{

instances = 25 //número de conexões simultâneas.per_source = 10 //máximo de conexões de uma mesma máquina.log_type = SYSLOG authprivlog_on_success = HOST PID USERIDlog_on_failure = HOST RECORD USERID

34

}

service telnet{

flags = REUSE //Repassa as opções para o daemonlog_type = FILE /var/log/telnet.logsocket_type = stream //Tipo de soquete. Dgram, stream e rawprotocol = tcpwait = nouser = rootserver = /usr/sbin/in.telnetd //Daemon do serviço.bind = 200.1.1.20 //Definindo a origem para redirecionamentos.redirect = 192.168.1.111 23 //máquina que receberá a requisição.only_from = 192.168.1.0/24 //Limita o acesso ao serviço.

}

O inetd é chamado de Super-Servidor Internet porque ele gerencia conexões para diversos daemons. O inetd atua como um servidor gerenciador para outros daemons. Quando uma conexão é recebida pelo inetd, ele determina para qual daemon a conexão é destinada e executa o daemon correspondente e a ele delega o socket. Executar uma instância do inetd reduz a carga no sistema de forma geral, comparado a se executar cada daemon individualmente.

• Ser arquivo de configuração é definido em /etc/inetd.conf• daytime, time, echo, discard, chargen, e auth são todos serviços fornecidos internamente

pelo inetd.• -d : Ativa a depuração.• -l : Ativa o registro das conexões bem sucedidas.• -w : Ativa o encapsulamento TCP para serviços externos (ativado por padrão).• -W : Ativa o encapsulamento do TCP para serviços internos que são embutidos no inetd

(ativado por padrão).• -c máximo : Especifica o número máximo padrão de invocações simultâneas de cada

serviço; o padrão é ilimitado. Pode ser anulado em cada serviço com o parâmetro max-child.• -C taxa : Especifica o número máximo padrão de vezes que um serviço pode ser invocado a

partir de um único endereço IP em um minuto; o padrão é ilimitado.• -R taxa : Especifica o número máximo de vezes que um serviço pode ser invocado em um

minuto; o padrão é 256. Uma taxa de 0 permite um número ilimitado de invocações.• -p : Especifica um arquivo alternativo para armazenar o ID do processo.

Configuração do /etc/inetd.conf:• Cada linha do arquivo de configuração especifica um daemon individual. Formato padrão

nome­do­serviçotipo­de­socketprotocolo{wait|nowait}[/max­de­filhos[/max­de­conexões­por­ip­por­minuto]]usuário[:grupo][/classe­de­login]programa­servidorargumentos­do­programa­servidor

Exemplo:

ftp stream tcp nowait root /usr/libexec/ftpd ftpd ­ltelnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd

35

init - O init é sempre o primeiro processo do sistema (o seu número de processo é sempre igual a 1). • Seu principal papel é criar processos de um script guardado em /etc/inittab• Um runlevel é uma configuração de softwares do sistema que permite que apenas um grupo

selecionado de processos exista.• Existem 8 runlevels, de 0 a 6 e S.• O programa telinit permite alterar o runlevel em execução.• Os runlevels S, 0, 1 e 6 são reservados.

◦ S : Inicializar o sistema.◦ 0 : Desligar◦ 1 : Mono-usuário◦ 2 : Multiusuário, sem NFS◦ 3 : Multiusuário completo◦ 4 : Não usado◦ 5 : X11◦ 6 : Reinicializar

Depois que o init é invocado na última fase da sequência de boot do kernel, ele procura o arquivo /etc/inittab e busca uma entrada do tipo initdefault que determina o runlevel inicial do sistema.

• Uma entrada no /etc/inittab tem o seguinte formato:

ID : RUNLEVELS : ACTION : PROCESS

Exemplo ­ iniciar o Tomcat

tom:23:respawn:su ­­c "/usr/java/tomcat/bin/catalina.sh run ­security" >/dev/null 2>&1

Em um sistema Debian temos a configuração do init no arquivo /etc/inittab. Nos diretórios /etc/init.d/rcN.d ficam localizados links simbólicos para os scripts que estão fisicamente gravados em /etc/init.d/, onde este "N" do "rcN.d" indica o número do runlevel em que o script ou daemon será executado.

• No diretório /etc/init.d ficam guardados os scrips para os processos a serem executados na inicialização do sistema.

TCPWrappers é um programa utilizado para filtrar e monitorar as requisições feitas para os daemons de serviços controlados pelo inetd (FINGER, FTP, TELNET, RLOGIN, RSH, EXEC, TALK e outros) e caso a conexão seja permitida, o controle da mesma é repassado para o daemon verdadeiro.

• O TCPWrappers também mantém um log com todas as informações a respeito da conexão (horário, origem e daemon requisitado).

• O controle de acesso é feito através dos arquivos: /etc/hosts.allow (Hosts com acesso permitido) e /etc/hosts.deny (Hosts com acesso negado).

• Para que o TCPWrappers passe a controlar as conexões a estes daemons, deve-se editar o arquivo /etc/inetd.conf, substituindo-se a referência ao daemon original por uma referência ao daemon do TCPWrappers.

/etc/inetd.conf sem TCPWrappers:telnet stream tcp nowait root /usr/sbin/telnetd telnetd

36

/etc/inetd.conf com TCPWrappers:telnet stream tcp nowait root /usr/sbin/tcpd telnetd

A sintaxe, tanto para o arquivo hosts.allow quanto hosts.deny possuem o seguinte formato:

daemon : cliente [:opção1:opção2:...]

Exemplo

sshd : ALLALL : ALLsshd : .example.com : severity local0.alert

Você pode usar coringas na seção cliente da regra para classificar amplamente um conjunto de computadores. A seguir, os coringas válidos que podem ser usados:

• ALL : Casa com tudo• LOCAL : Casa com qualquer computador que não contenha um ponto ("."), como por

exemplo, localhost.• KNOWN : Casa com qualquer host em que seu nome e endereço sejam conhecidos ou em

que o usuário é conhecido.• UNKNOWN : Casa com qualquer host em que o nome ou endereço são desconhecidos ou

em que o usuário seja desconhecido.• PARANOID : Casa com qualquer computador em que o nome não bate com seu endereço.

Protegendo os Dados com Criptografia

SSH é um programa para conectar e executar comandos em uma máquina remota. Ele tem o propósito de prover comunicação criptografada segura entre dois hosts não seguros sobre uma rede insegura. Conexões X11 e portas Tcp arbitrárias podem ser repassadas dentro do canal seguro.

• Se o comando for especificado, ele é executado no host remoto sem autenticar no shell• http://www.openssh.com/

ssh [-l login] [-o option] [-p porta] [usuario@] hostname [comando]• ~/.ssh/config : arquivo de configuração do cliente.• -C : requisita a compressão de todos os dados, utiliza o algoritmo do gzip.• -F arquivo : especificar um arquivo de configuração alternativo.• -g : permitir aos hosts remotos a conectarem às portas locais encaminhadas.• -i arquivo : selecionar um arquivo com a chave privada para autenticação RSA ou DSA.• -l login : especificar o usuário para logar na máquina remota.• -N : não executar comandos remotos. Útil somente para portas encaminhadas.• -p porta : porta para conectar ao host remoto.• -q : Modo silencioso. A maioria das mensagens de alerta e diagnóstico são suprimidas.• -v : Modo verbose. Faz o ssh imprimir mensagens de depuração.• -X : habilitar encaminhamento X11.• -x : desabilitar encaminhamento X11.

A autenticação baseada em host trabalha como se segue:1. Verificação se o usuário existe em /etc/hosts.equiv ou /etc/ssh/shosts.equiv da máquina

remota e se o usuário é o mesmo dos dois lados.

37

2. Verificação se os arquivos ~/.rhosts ou ~/.shosts existem no diretório home do usuário na máquina remota e se contém uma linha com o nome do cliente que deseja logar.

3. Adicionalmente o servidor deve estar apto a verificar a chave de host do cliente, guardada em /etc/ssh/ssh_know_hosts, para o login ser permitido.

O arquivo ~/.ssh/authorized_keys lista as chaves públicas que são permitidas para logar-se.• O usuário cria o seu par de chaves executando ssh-keygen.• A chave privada fica armazenada em ~./ssh/identity, ~/.ssh/id_dsa ou ~/.ssh/id_rsa• A chave pública fica armazenada em ~/.ssh/identity.pub, ~/.ssh/id_dsa.pub ou

~/.ssh/id_rsa.pub no diretório home do usuário.

ssh-keygen – geração, gerenciamento e conversão de chaves de autenticação. Pode criar chavesRSA ou DSA.

• -b bits : especifica o número de bits da chave a ser criada. Para chaves RSA o tamanho mínimo é 768 bits e o padrão é 2048 bits.

• -F hostname : procura pelo hostname especificado no arquivo know_hosts.• -f arquivo : especifica o arquivo da chave.• -H : limpar o arquivo know_hosts.• -N palavra_chave : provê uma nova palavra-chave.• -p : solicitar mudança da palavra-chave de um arquivo de chave privada ao invés de criar

uma nova chave privada.• -R : remover todas as chaves pertencentes ao hostname de um arquivo know_hosts.• -t tipo : especificar o tipo de de chave para criar. Os valores possíveis são “rsa” ou “dsa”.

ssh-agent – Agente de autenticação. É um programa para armazenar chaves privadas utilizadas para a autenticação de chave pública (RSA, DSA). A idéia é que o ssh-agente seja iniciado no início de uma sessão X ou uma sessão de login, e todas as outras janelas ou programas são iniciados como clientes para o programa ssh-agent.

ssh-add – Adiciona identidades RSA ou DSA ao agente de autenticação. Quando executado sem argumentos, ele adiciona os arquivos ~/.ssh/id_rsa, ~/.ssh/id_dsa e ~/.ssh/identity.

• -c : Indica que as identidades adicionadas devem ser questionadas por confirmação antes de serem usadas para autenticação.

• -D : deletar todas as identidades do agente.• -d : em vez de adicionar identidades, deleta identidades.• -L : listar parâmetros públicos de todas as identidades atualmente representadas pelo agente.• -l : listar a digital de todas as identidades do agente.• -t : indicar o tempo de vida da identidade. • -X : destravar o agente.• -x : travar o agente com uma senha.

gpg – ferramenta para prover criptografia digital e assinatura de serviços usando o padrão OpenPGP.

Comandos para selecionar o tipo de operação:• -s / --sign : fazer uma assinatura. Pode ser combinado com --encrypt (para assinar e

criptografar a mensagem), --symmetric (para assinar e criptografar simetricamente a mensagem), ou --encrypt e --symmetric juntos (para assinar e criptografar uma mensagemque pode ser descriptografada com a chave secreta ou frase secreta).

38

• --clearsign : fazer uma assinatura clara. O conteúdo em texto claro da assinatura é legívelsem qualquer software especial. O aplicativo OpenPGP só é necessário para verificar aassinatura.

• -b / --detach-sign : fazer assinaturas separadas.• -e / --encrypt : criptografar os dados. Pode ser combinado com --sign (para assinar e

criptografar uma mensagem), --symmetric (para a mensagem poder ser descriptografadacom a chave secreta ou a frase secreta), ou --sign e --symmetric juntos (para uma mensagemassinada que pode ser descriptografada com a chave secreta ou frase secreta).

• -c / --symmetric : criptografar com uma cifra simétrica usando a chave secreta. A cifrapadrão é CAST5, mas pode ser alterada através da opção --cipher-algo.

• --store : armazenar apenas.• -d / --decrypt : descriptografar um arquivo dado pela linha de comando e escrever o

resultado na saída padrão. Se o arquivo for assinado, a assinatura é verificada.• --verify : assume que o primeiro argumento é o arquivo assinado ou uma assinatura

separada e verifica sem gerar nenhuma saída.• --multifile : modifica o comportamento de algumas opções, permitindo fazer operações em

múltiplos arquivos.• -k / --list-keys / --list-public-keys : lista todas as chaves do chaveiro público, ou apenas as

chaves dadas na linha de comando.• -K / --list-secret-keys : listar todas as chaves do chaveiro secreto, ou apenas aquelas dadas

na linha de comando.• --list-sigs : o mesmo que --list-keys, mas as assinaturas também são listadas.• --check-sigs : o mesmo que --list-sigs, mas as assinaturas são verificadas.• --fingerprint : listar todas as chaves junto com suas digitais.• --delete-key nome : remove uma chave do chaveiro público.• --delete-secret-key nome : remove uma chave do chaveiro privado.• --delete-secret-and-public-key nome : remover uma chave de todos os chaveiros.• --export : exportar todas as chaves de todos os chaveiros. Se um ID ou nome for fornecido,

exporta apenas uma chave específica.• --send-keys chave : similar ao --export, mas envia a chave para o um servidor de chaves.

Pode ser usado com a opção --keyserver.• --export-secret-keys : similar ao --export mas exporta a chave secreta ao invés da pública.• --import : importar ou mesclar chaves. Adiciona a chave dada ao chaveiro.• --recv-keys id : importar uma chave com o id oferecido de um servidor de chaves. A opção

--keyserver deve ser usada.• --refresh-keys : requerer atualizações do servidor de chaves para chaves que já existem no

chaveiro local.• --search-keys : procurar no servidor de chaves por um nome dado. A opção –keyserver deve

ser usada.• --fetch-keys URI : recuperar chaves localizadas em um URI específico.• --update-trustdb : faz manutenção no banco de dados de confiança.• --check-trustdb : faz a manutenção no banco de dados de confiança sem a interação do

usuário. De tempos em tempos uma manutenção deve ser feita para casos como chavesexpiradas.

• --print-mds / --print-md algoritmo : exibe o resumo, utilizado o algoritmo, para um arquivo oferecido.

Comandos para gerenciar chaves:

39

• --gen-key : gerar um par de chaves. Usado interativamente, com informações do usuário.• --gen-revoke nome : gerar um certificado de revogação para uma chave.• --desig-revoke-key nome : gerar um certificado de revogação designado para uma chave.

Permite um usuário (com permissão) a revogar a chave de outra pessoa.• --edit-key : oferece um menu que habilita o usuário à maioria das tarefas de manutenção de

chaves. Espera-se a especificação de uma chave na linha de comando.

Comandos para mudar a configuração. São, usualmente, encontrados no arquivo de configuração:• --default-key nome : use o nome como a chave padrão para assinar.• --default-recipient nome : usa o nome como destinatário padrão.• --no-default-recipient : reseta as configurações de destinatário padrão.• --yes : assume sim para a resposta da maioria das perguntas.• --no : assume não para a resposta da maioria das perguntas.• --no-tty : considera que o terminal nunca será usado para nenhuma saída.• -q / --quiet : tenta ser o mais silencioso possível.• --list-options parametros : mostrar alguns parâmetros das chaves do chaveiro local.

◦ show-photos : mostrar fotos• --keyring arquivo : adicionar um arquivo à lista corrente de chaveiros.• --secret-keyring arquivo : adicionar um arquivo à lista corrente de chaveiros privados.• --primary-keyring arquivo : designar um arquivo para ser o chaveiro público primário.• --trustdb-name arquivo : usar um arquivo ao invés do padrão trustdb.• --homedir diretorio : definir o nome do diretório home.• --trusted-key ID : assume que uma chave específica é tão confiável quanto uma de suas

próprias chaves secretas.• --keyserver nome : usa nome como o seu servidor de chaves. Servidor usado para as opções

--recv-keys, --send-keys e --search-keys.◦ keys.gnupg.net

Comandos relacionados a chaves:

• -r / --recipient nome : criptografar para um destinatário específico.• -u / --local-user nome : usa o nome como chave para assinaturas. Sobrepõe a opção

--default-key.

Opções de entrada e saída:• -a / --armor : criar saídas em formato ASCII. O padrão é criar no formato OpenPGP

binário.• --no-armor : assume que a entrada não está no formato ASCII.• -o / --output arquivo : escrever a saída em um arquivo.

40