Rudson Ribeiro Alves Mestre em Física (SemiCondutores) Usuário Unix de 19911998 Usuário Slackware deste 1994 Professor da UVV deste 1998 Noções básicas sobre GNU/Linux Plataforma Debian
Minicurso de GNU/Linux
Aula 04
2
Cronograma 2/2
Script Shell
Administração do Sistema
Criação de contas e grupos
Runlevels
Logs do sistema
Instalação de programas
Redes
Configuração
Servidores: ssh, ftp e http
3
Shell Script
Apresentação: “Um passeio pelo Shell Script”
ENCASOFT: 2006-1
4
Criando uma Conta
Pelo Shell:
Modo interativo:
# adduser <nome_do_usuário>
... varias questões
Modo não interativo:
# useradd
usage: useradd [-u uid [-o]] [-g group] [-G group,...]
[-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] name
“adduser” é um Script Shell que invoca o comando
“useradd” para criar um usuário no sistema.
5
Criando uma Conta
Método gráfico:
Existem várias GUIs para o useradd nos sistemas
GNU/Linux. As mais utilizadas:
6
Criando uma Conta
7
Arquivos de controle de Contas
/etc/passwd
Este arquivo armazena as informações das contas dos usuários. Por
questões de segurança, sua função mais básica (armazenar as
senhas dos usuários) foi substituído pelo shadow, na maioria das
distribuições.
Exite alguns arquivos importantes no gerenciamento de
contas no GNU/Linux:
Uma linha típica do /etc/passwd tem a forma:
Ex:
sandro:x:1003:100:Sandro Eliberto da Silva,,,:/home/sandro:/bin/bash nome:senha:uid:gid:Informações:diretório_da_conta:Shell_padrão
8
Arquivos de controle de Contas
/etc/group
Este arquivo armazena os grupos do sistema e a interação entre
estes grupos com outros grupos e usuários. A senha do grupo,
geralmente é gerenciado pelo /etc/gshadow.
Ex:
audio::17:rudson,daniela,gabriel,sandro
root::0:root
adm::4:root,adm,daemon
daemon::2:root,bin,daemon
9
Arquivos de controle de Contas
/etc/shadow
Este arquivo armazena as senhas criptografadas
Ex:
sandro:$1$5Gy0o6u3$rwWDYIhR5c28Z1cGhZF3u/:13804:0:99999:7::13872:
Para remover uma senha de um usuário, basta substituir a senha
criptografada ($1$5Gy0o6u3$rwWDYIhR5c28Z1cGhZF3u/, no
exemplo acima) por um “x”.
nome_do_usuário:senha_criptografada:outras_informações:::::::
/etc/gshadow
10
Runlevels
Nível de execução do sistema:
No Linux e outros sistemas baseados no Unix o runlevel indica o
modo de operação atual da máquina, definindo quais serviços e
recursos devem permanecer ativos. O runlevel pode ser alterado a
qualquer momento pelo root, através do comando telinit (# telinit 3,
# telinit 5, etc.).
0: halt – desliga o sistema
1: single user – geralmente usado para manutenção do sistema. A
rede e o ambiente gráfico é desabilitado, bom como vários
outros servisos (ssh, ftp, ...).
2 a 5: multiuser – sistema no modo multi-usuário com todas as
configurações ativas
11
Runlevels
Mudando o runlevel:
Comando “telinit”
# telinit <runlevel>Ex:
# telinit 1muda para o runlevel 1 (mono-usuário: manutenção)
Definindo o runlevel no boot:
O runlevel padrão é definido no arquivo /etc/inittab, na linha
iniciada por “id:...”
Ex:
12
Definindo runlevel
As definições sobre o runlevel estão todas no
arquivo /etc/inittab.
Ex:
# Default runlevel. (Do not set to 0 or 6) id:4:initdefault:
# System initialization (runs when system boots). si:S:sysinit:/etc/rc.d/rc.S
# Script to run when going single user (runlevel 1). su:1S:wait:/etc/rc.d/rc.K
# Script to run when going multi user. rc:2345:wait:/etc/rc.d/rc.M
# What to do at the "Three Finger Salute". ca::ctrlaltdel:/sbin/shutdown -t5 -r now # System halt (CtrlaltEnd)
kb::kbrequest:/sbin/shutdown -t5 -h now # Runlevel 0 halts the system.
l0:0:wait:/etc/rc.d/rc.0
# Runlevel 6 reboots the system. l6:6:wait:/etc/rc.d/rc.6
...
13
Iniciando e parando serviços
Os scripts de inicialização dos serviços do sistema estão
localizados no diretório /etc/init.d.
Estes processo podem ser iniciados e parados passando o
argumento “start” e “stop”.
Ex:
# /etc/init.d/gdm stop
para o gerenciador de login gráfico gdm. Para reinicializá-lo
basta usar a opção “start”
# /etc/init.d/gdm start
Alguns processos podem ser reinicializados com a opção
“restart”. Isto é bem útil quando se está alterando alguma
configuração do sistema.
Ex:
# /etc/init.d/networking restart
14
Iniciando e parando serviços no boot
Os scripts podem ser habilitado e desabilitados alterando a
permissão de execução:
# chmod -x bluetooth
desabilita o bluetooth para o próximo boot.
Para alterar os serviços que serão carregados em um runlevel
específico, basta alterar os nomes dos serviços iniciando-os por um K
(kill), ao invés do S (start), no diretório do runlevel desejado.
# ls /etc/rc4.d/
README S20gpm@ S30gdm@
S05vbesave@ S20hotkey-setup@ S89anacron@ S10acpid@ S20makedev@ S89atd@
S10sysklogd@ K20nvidia-kernel@ S89cron@ S10xserver-xorg-input-wacom@ S20powernowd@ K98usplash@
S11klogd@ S20rsync@ S99acpi-support@ S12dbus@ S22consolekit@ S99laptop-mode@ S12hal@ S23ntp@ S99rc.local@ S19cupsys@ S24avahi-daemon@ S99rmnologin@ S20apmd@ S24dhcdbd@
15
Logs do sistema
Os logs do sistema são armazenados no diretório /var/log:
# ls /var/log/
Xorg.0.log btmp httpd/ packages/ setup/ wtmp Xorg.0.log.old cron iptraf/ removed_packages/ spooler
Xorg.1.log cups/ kdm.log removed_scripts/ syslog Xorg.1.log.old debug lastlog sa/ uucp/ Xorg.2.log dmesg maillog scripts/ vmware/ acpid faillog messages secure vsftpd.log
Comando dmesg: apresenta mensagens de boot e sobre acesso a
dispositivos solicitados ao kernel (/var/log/message).
# dmesg
Linux version 2.6.22.6-r02 (root@khelben) (gcc version 4.1.2) #2 Fri Oct 19 18:$
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable) BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) BIOS-e820: 00000000000d0000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 000000001fef0000 (usable)
16
Instalando programas
Nas distribuições Debian-like a instalação de aplicativos pode
ser feita manualmente pelos aplicativos:
Apt-get/apt-cache
# apt-get update
atualiza informações dos pacotes. Deve ser feito regularmente.
# apt-get upgrade atualiza todo o sistema # apt-get dist-upgrade atualiza a distribuição
# apt-get install [nome do pacote] instala um pacote
# apt-get remove [nome do pacote] remove o pacote
# apt-get –purge remove [nome do pacote] remove o pacote e seus arquivos de
configuração
# apt-get source [nome do pacote] baixa as fontes do pacote
# apt-get –help
apresenta todas as opções do apt-get
# apt-cache search [nome do pacote] pesquisa pelo pacote
17
Instalando programas
Aptitude
# aptitude update
atualiza informações dos pacotes
# aptitude upgrade
atualiza o sistema
# aptitude dist-upgrade
atualiza a distribuição
# aptitude install [nome do pacote]
instala um pacote
# aptitude remove [nome do pacote]
remove o pacote
# aptitude [nome do pacote]
pesquisa pelo pacote
18
Instalando programas
Synaptic
O Synaptic é um gerenciador gráfico de pacotes para o apt do
Debian. Ele oferece as mesmas funções do utilitário de linha de
comando apt-get, só que com uma interface amigável, baseada em
Gtk+.
19
Configurando Rede
O GNU/Linux pode ter várias interfaces de rede com diferentes Ips.
Alguns das interfaces suportadas são:
Loopback: lo
Ethernet: eth0, eth1, ...
Wi-Fi: wlan0, wlan1, wifi0, ...
Token Ring: tr0, tr1, ...
PPP: ppp0, ppp1, ...
Tradicionalmente endereços de IP são agrupados em classes:
IP addresses net mask length Class A 1.0.0.0 - 126.255.255.255 255.0.0.0 /8 Class B 128.0.0.0 - 191.255.255.255 255.255.0.0 /16 Class C 192.0.0.0 - 223.255.255.255 255.255.255.0 /24
Endereços fora destes intervalos são usado para propósitos
especiais.
20
Configurando Rede
Alguns comandos úteis para a configuração de uma rede são:
modprobe: carregar módulo da placa de rede
dmesg: apresentar mensagens de inicialização do sistema
lspci: listar dispositivos de rede
ipconfig: configura uma interface de rede
dhcpd ou dhclient: cliente dhcp
route: manipula os roteamentos da rede
/etc/resolv.conf: arquivos com os IPs dos servidores de nomes
(DNS)
hostname: define o nome da máquina e rede
Geralmente a rede é configurada com exito no momento da
instalação do sistema. Mas pode acontecer de você necessitar fazer
uma intervenção manual na configuração, como a adição de mais
dispositivos de rede, novo roteamento, ...
21
Configurando Rede: Geral
1º Passo: Identificar os dispositivos de rede. Isto pode ser feito através do
comando lspci (graficamente kinfocenter -> PCI) # lspci | grep -i net
03:02.0 Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 03)
03:06.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
2º Passo: Verificar o carregamento dos módulos dos dispositivos. Isto pode
ser feito checando as mensagens de inicialização do sistema com o comando dmesg (graficamente pelo ksystemlog -> messages)
# dmesg | grep -i eth
8139too Fast Ethernet driver 0.9.28
eth0: RealTek RTL8139 at 0xe0820400, 00:0f:b0:6c:bb:6e, IRQ 10 eth0: Identified 8139 chip type 'RTL-8100B/8139D'
wlan0: ethernet device 00:90:4b:ac:98:9e using NDIS driver: bcmwl5, version: 0x3644101, NDIS version: 0x501, vendor: '', 14E4:4320:103C:12F8.5.conf
eth1: link down
22
Configurando Rede: Geral
3º Passo: Carregar módulos de rede se necessário. Em alguns casos os
módulos da placa de rede podem não ser carregados na inicialização, embora isto não seja muito comum.
Quando isto ocorre, o dmesg não apresentará nenhuma informação sobre a placa. A carga de um módulo de rede é feita pelo comando modprobe.
# modprobe 8139too
carrega o módulo da RealTek RTL8139
Se for necessário remover algum módulo utilize o comando rmmod (remove module)
# rmmod 8139too
remove o módulo da RealTek RTL8139 da memória.
4º Passo: Definir o nome da máquina e da rede. Este processo é feito pelo
comando hostname. O Nome darede é automaticamente escrita no
arquivo /etc/HOSTNAME ou /etc/hostname, dependendo da distribuição. # hostnema arabel.forgotten
23
Configurando Rede: IP Fixo
5º Passo: Configurar um endereço de rede com o ifconfig. Configurar uma
rede com o ifconfig é bem simples: # ifconfig [disp]
apresenta a configuração de rede para o dispositivo [disp]. Se [disp] for omitido, apresenta as configurações de todos os dispositivos carregados. # ifconfig [disp] down
abaixa (down) a rede do dispositivo [disp] (eth0, eth1, lo, ...)
# ifconfig [disp] [addr] netmask [mask] broadcast [addr] up
levanta a rede no dispositivo [disp] com o endereço [addr], máscara de rede [mask], broadcast [baddr].
# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 00:90:4B:AC:98:9E
inet addr:192.168.1.105 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::290:4bff:feac:989e/64 Scope:Link ...
24
Configurando Rede: IP Fixo
6º Passo: Configurar o roteamento da rede. O roteamento é configurado
pelo comando route: # route [-n]
apresenta a tabela de roteamento da rede.
# route add -net 192.168.1.0 netmask 255.255.255.0 dev wlan0
adiciona o roteamente para a rede 192.168.1.0 através do dispositivo wlan0 # route del -net 192.168.1.0 netmask 255.255.255.0 dev wlan0
remove o roteamente para a rede 192.168.1.0 através do dispositivo wlan0 # route add default gw 192.168.1.1
define o gateway padrão como sendo 192.168.1.1
# route add -net 127.0.0.0 netmask 255.0.0.0 lo adiciona o roteamente para o dispositivo loopback
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0
25
Configurando Rede: IP Fixo
7º Passo: Configurar o DNS. Os Ips dos servidores de nomes ficam
armazenados no arquivo /etc/resolv.conf. Os servidores de nomes devem ser adicionados em linhas iniciadas por “nameserver”, como segue abaixo:
# cat /etc/resolv.conf
# Generated by dhcpcd for interface wlan0 search forgotten
nameserver 201.30.255.6 nameserver 200.255.125.211 nameserver 200.19.74.21
26
Configurando Rede: DHCP
5º Passo: Configurar uma rede via dhcp é bem mais simples. Os passos de 1
a 4 são os mesmo anteriores. A configuração é feita chamando o comando “dhclient” como segue
# dhclient eth0
Configurar a placa eth0 via dhcp. O dhclient configura o roteamento e DNS da rede.
27
Configurando Rede: via boot
Com exceção da alteração feita pelo comando “hostname”, as demais
configurações serão perdidas no primeiro boot. Para fixar estas mudanças, elas devem ser declaradas no arquivo /etc/network/interfaces, como segue:
# The loopback network interface auto lo
iface lo inet loopback
# The primary network interface auto eth0
iface eth0 inet static address 192.168.1.90 gateway 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 IP fixo
# The loopback network interface auto lo
iface lo inet loopback
# The primary network interface - # use DHCP to find our address
auto eth0
iface eth0 inet dhcp
dhcp
Após qualquer alteração, a rede pode ser reiniciada com o script /etc/init.d/networking