Mudanças entre as edições de "GAR12503-2014-2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 123: Linha 123:
 
*[[Media:03-Shell.pdf | Questionário sobre Shell]]
 
*[[Media:03-Shell.pdf | Questionário sobre Shell]]
  
=== Aula 02 (07/08) - Instalação de aplicativos e Sistemas de arquivos ===
+
{{Collapse top | Respostas do exercício de comandos básicos}}
Conteúdo:
 
*Gerenciador de pacotes apt
 
*Sistemas de arquivos
 
 
 
{{Collapse top | Instalação de aplicativos}}
 
A instalação de software pode ser feita de diversas formas, dentre as quais serão destacadas três:
 
 
 
* '''Com utilitário ''apt-get''''': busca o software de um repositório de rede e o instala; dependências (outros softwares necessários) são automaticamente instaladas. Esses softwares buscados da rede estão no formato ''dpkg (Debian Package)''.
 
 
 
Exemplo de uso do apt-get:
 
 
 
** Instalar o navegador de texto lynx
 
<!-- apt-get install lynx -->
 
 
 
** Testar o navegador lynx
 
lynx http://www.ifsc.edu.br/
 
 
 
** Remover o lynx
 
<!-- apt-get --auto-remove remove lynx -->
 
 
 
* '''Diretamente com utilitário [http://manpages.ubuntu.com/manpages/karmic/en/man1/dpkg.1.html dpkg]''': instala um software que está contido em um arquivo no formato ''dpkg''.
 
 
 
Exemplo de uso:
 
 
 
** Obter os pacotes Debian para o lynx
 
wget ftp://ftp.cn.debian.org/ubuntu-old-releases/ubuntu/pool/main/l/lynx-cur/lynx_2.8.7pre6-1_all.deb
 
wget ftp://mirror.linux.org.au/ubuntu/pool/main/l/lynx-cur/lynx-cur_2.8.7pre6-1_i386.deb
 
 
 
** Instalar os pacotes
 
<!-- dpkg -i lynx-cur_2.8.7pre6-1_i386.deb lynx_2.8.7pre6-1_all.deb -->
 
 
 
** Testar o lynx
 
lynx ...
 
 
 
** Remover os pacotes instalados
 
<!-- dpkg -r lynx lynx-cur -->
 
 
 
 
 
* '''A partir do código fonte''': busca-se manualmente na rede o código fonte do software desejado, que deve então ser compilado e instalado. Esta opção se aplica quando não existe o software no formato ''dpkg'', ou a versão disponível em formato ''dpkg'' foi compilada de uma forma que não atende os requisitos para seu uso em seu servidor.
 
{{Collapse bottom}}
 
 
 
Atividades:
 
*[[Media:04-Apt-Get.pdf | Exercícios apt]]
 
*[[Media:05-Sistemas_arquivos.pdf | Exercícios sobre sistemas de arquivos]]
 
 
 
{{Collapse top | Respostas exercício apt}}
 
 
<code>
 
<code>
 
#!/bin/bash
 
#!/bin/bash
Linha 428: Linha 382:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
{{Collapse bottom}}
 
{{Collapse bottom}}
 +
 +
=== Aula 02 (07/08) - Instalação de aplicativos e Sistemas de arquivos ===
 +
Conteúdo:
 +
*Gerenciador de pacotes apt
 +
*Sistemas de arquivos
 +
 +
{{Collapse top | Instalação de aplicativos}}
 +
A instalação de software pode ser feita de diversas formas, dentre as quais serão destacadas três:
 +
 +
* '''Com utilitário ''apt-get''''': busca o software de um repositório de rede e o instala; dependências (outros softwares necessários) são automaticamente instaladas. Esses softwares buscados da rede estão no formato ''dpkg (Debian Package)''.
 +
 +
Exemplo de uso do apt-get:
 +
 +
** Instalar o navegador de texto lynx
 +
<!-- apt-get install lynx -->
 +
 +
** Testar o navegador lynx
 +
lynx http://www.ifsc.edu.br/
 +
 +
** Remover o lynx
 +
<!-- apt-get --auto-remove remove lynx -->
 +
 +
* '''Diretamente com utilitário [http://manpages.ubuntu.com/manpages/karmic/en/man1/dpkg.1.html dpkg]''': instala um software que está contido em um arquivo no formato ''dpkg''.
 +
 +
Exemplo de uso:
 +
 +
** Obter os pacotes Debian para o lynx
 +
wget ftp://ftp.cn.debian.org/ubuntu-old-releases/ubuntu/pool/main/l/lynx-cur/lynx_2.8.7pre6-1_all.deb
 +
wget ftp://mirror.linux.org.au/ubuntu/pool/main/l/lynx-cur/lynx-cur_2.8.7pre6-1_i386.deb
 +
 +
** Instalar os pacotes
 +
<!-- dpkg -i lynx-cur_2.8.7pre6-1_i386.deb lynx_2.8.7pre6-1_all.deb -->
 +
 +
** Testar o lynx
 +
lynx ...
 +
 +
** Remover os pacotes instalados
 +
<!-- dpkg -r lynx lynx-cur -->
 +
 +
 +
* '''A partir do código fonte''': busca-se manualmente na rede o código fonte do software desejado, que deve então ser compilado e instalado. Esta opção se aplica quando não existe o software no formato ''dpkg'', ou a versão disponível em formato ''dpkg'' foi compilada de uma forma que não atende os requisitos para seu uso em seu servidor.
 +
{{Collapse bottom}}
 +
 +
Atividades:
 +
*[[Media:04-Apt-Get.pdf | Exercícios apt]]
 +
*[[Media:05-Sistemas_arquivos.pdf | Exercícios sobre sistemas de arquivos]]
  
 
=== Aula 03 (12/08) - Gerenciamento de usuários e grupos e Cotas de disco ===
 
=== Aula 03 (12/08) - Gerenciamento de usuários e grupos e Cotas de disco ===

Edição das 18h40min de 12 de agosto de 2014

Informações da disciplina

  • Professor: Tomas Grimm
  • Turma: 1250331
  • Encontros: terças e quintas das 18:30 às 20:20 e quartas das 18:30 às 22:30
  • Atendimento paralelo:
    • terças das 13:30 às 15:20

Plano de aula

Cronograma
Aula Data Horas Conteúdo Recursos
1 30/7 4 Introdução a Gerência e Administração de Redes. Visão das disciplinas e suas relações. Metodologia de avaliação. Lab Redes 1
2 31/7 4 Revisão dos comandos básicos do Linux, TAR. Lab Redes 1
3 6/8 4 Editor Vi. Shell. Lab Redes 1
4 7/8 4 APT-GET. Sistemas de Arquivos. Lab Redes 1
5 12/8 2 APT-GET. Sistemas de Arquivos. Lab Redes 1
6 13/8 4 Gerenciamento de usuários e grupos e Cotas em disco. Lab Redes 1
7 14/8 2 Processo de Boot Lab Redes 1
8 19/8 2 RAID Lab Redes 1
9 20/8 4 Processos. Lab Redes 1
10 21/8 2 Processos. Crontab. Lab Redes 1
11 26/8 2 Crontab. Lab Redes 1
12 27/8 4 Revisão. Lab Redes 1
13 28/8 2 1a avaliação individual teórica. Lab Redes 1
14 2/9 2 1a avaliação individual prática. Lab Redes 1
15 3/9 4 Correção das avaliações. Interfaces de redes, endereçamento IP, roteamento, sub-redes e NAT. Lab Redes 1
16 4/9 2 DNS. Lab Redes 1
17 9/9 2 DNS. Lab Redes 1
18 10/9 4 Postfix. Lab Redes 1
19 11/9 2 Apache. Lab Redes 1
20 16/9 2 Apache. Lab Redes 1
21 17/9 4 SMB. Lab Redes 1
22 18/9 2 NFS. Lab Redes 1
23 23/9 2 NFS. Lab Redes 1
24 24/9 4 Revisão Lab Redes 1
25 25/9 2 2a avaliação individual teórica Lab Redes 1
26 30/9 2 2a avaliação individual prática Lab Redes 1
27 1/10 4 Correção das avaliações. DHCP. Lab Redes 1
28 2/10 2 DHCP. Lab Redes 1
29 7/10 2 FTP e SSH. Lab Redes 1
30 8/10 4 FTP e SSH. DenyHosts. Lab Redes 1
31 9/10 2 Squid. Lab Redes 1
32 14/10 2 Firewall e iptables Lab Redes 1
33 15/10 4 Firewall e iptables Lab Redes 1
34 16/10 2 VPN Lab Redes 1
35 21/10 2 VPN Lab Redes 1
36 22/10 4 Revisão Lab Redes 1
37 23/10 2 3a avaliação individual teórica. Lab Redes 1
38 28/10 2 3a avaliação individual prática. Lab Redes 1
39 29/10 4 Correção das avaliações. Webmin. Lab Redes 1
40 30/10 2 Revisão geral Lab Redes 1
41 4/11 2 Revisão geral Lab. Redes 1
42 5/11 4 Recuperação de conceitos. Lab. Redes 1
43 6/11 2 Correção da recuperação. Lab. Redes 1
44 11/11 2 Projeto Integrador. Lab. Redes 1
45 12/11 4 Projeto Integrador. Lab. Redes 1
46 13/11 2 Projeto Integrador. Lab. Redes 1
47 18/11 2 Projeto Integrador. Lab. Redes 1
48 19/11 4 Projeto Integrador. Lab. Redes 1
49 20/11 2 Projeto Integrador. Lab. Redes 1
50 25/11 2 Projeto Integrador. Lab. Redes 1
51 26/11 4 Projeto Integrador. Lab. Redes 1
52 27/11 2 Projeto Integrador. Lab. Redes 1
53 2/12 2 Projeto Integrador. Lab. Redes 1
54 3/12 4 Projeto Integrador. Lab. Redes 1
55 4/12 2 Projeto Integrador. Lab. Redes 1
56 9/12 2 Projeto Integrador. Lab. Redes 1
57 10/12 4 Projeto Integrador. Lab. Redes 1
58 11/12 2 Projeto Integrador. Lab. Redes 1
TOTAL 160

Material auxiliar

Aulas

Aula 01 (06/08) - Introdução. SO Linux. Shell e comandos básicos

Conteúdo:

  • Apresentação da disciplina
  • Introdução a Gerência de Redes de Computadores (slides)
  • Sistema Operacional Linux e Redes (slides)
  • Shell
  • Comandos básicos de Linux
  • Editor VI
Comandos básicos Linux
# Comandos de navegação e interação com arquivos:
ls		# listar arquivos
cd		# mudar diretório
rm		# remover arquivos
cp		# copiar arquivos
mv		# mover arquivos ou renomeá-los
cat		# mostra o conteúdo de um arquivo ou concatena com outro arquivo
more		# exibe o conteúdo de um artigo de forma paginada
pwd		# mostra o caminho para o diretório atual
rmdir		# deleção de diretório
mkdir		# criação de diretório
clear		# limpa a tela

# Comandos relacionados aos usuários:
who		# mostra as sessões abertas na máquina
whoami		# mostra o nome do usuário atual
finger		# mostra informações de usuário

# Comandos relacionados ao status da memória e do disco:
df		# informações de espaço em disco
du		# utilização do disco
free		# informações de memória
top		# mostra processos

Atividades:

Respostas do exercício de comandos básicos

  1. !/bin/bash
  2. 3

pwd

  1. 4

mkdir TurmaGAR

  1. 5

mkdir -p TurmaGAR/Brasil/{regiaoNorte,regiaoSul} mkdir -p TurmaGAR/Brasil/regiaoNorte/{amazonas,acre} mkdir -p TurmaGAR/Brasil/regiaoSul/{parana,santaCatarina}

  1. 6

cd TurmaGAR/Brasil/regiaoNorte/

  1. 7

ls -l

  1. 8

cp -r amazonas/ para/

  1. 9

ls -l

  1. 10

cd ../regiaoSul/ mv parana/ rioGrandeSul/

  1. 11

ls -l

  1. 12

cd ../..

  1. 13

ls -l / >> Brasil/regiaoNorte/amazonas/saidaDirRaiz.arq

  1. 14

ls -l >> Brasil/regiaoNorte/amazonas/saidaTurma.arq

  1. 15

ls -l Brasil/regiaoSul/ >> Brasil/regiaoNorte/amazonas/estados.sul

  1. 16

cd Brasil/regiaoNorte/amazonas/ cat * more *

  1. 17

cat *.arq

  1. 18

ls -l saida[a-z]*

  1. 19

rm *.{arq,sul}

  1. 20

pwd cd ~

  1. 21

ls -l

  1. 22

mkdir {aula1,aula2}

  1. 23

mkdir aula1/{aula11,aula12,aula13} mkdir aula2/{aula21,aula22,aula23}

  1. 24

rm -r aula1/aula13 aula2/aula23/

  1. 25

touch aula1/aula12/texto1

  1. 28

cp aula1/aula12/texto1 aula2/aula22/texto2

  1. 29

printenv >> aula1/aula12/texto1

  1. 30

mv aula1/aula12/texto1 aula1/aula11

  1. 31

cp /etc/passwd aula2/usuarios

  1. 32

cp /etc/protocols aula1/protocolos

  1. 33

rm aula1/aula11/texto1

  1. 34

ln aula2/aula22/texto2 linktexto2

  1. 35

diff aula2/aula22/texto2 linktexto2

  1. 36

find *aula*

  1. 37

cat aula1/protocolos | grep Protocol

  1. 38

head -n 12 aula2/usuarios

  1. 39

tail -n 15 aula1/protocolos

  1. 40

wc -wlm aula1/protocolos

  1. 41

sort aula2/usuarios

  1. 42

sort -r aula1/protocolos

  1. 43

more aula1/protocolos

  1. 44

cut -d '#' -f 1 aula1/protocolos

  1. 45

cut -c -6 aula2/usuarios

  1. 46

top

  1. 47

cal clear

  1. 48

touch aula2/aula22/trabalho{1,2,3} touch aula2/aula22/teste{1,2} touch aula2/aula22/exame{1,2} touch aula2/aula22/texto{1,3} touch aula2/aula22/{notas,anotacoes}

ls -l /tmp/ >> aula2/aula22/trabalho1 ls -l /var/ >> aula2/aula22/trabalho2 ls -l /opt/ >> aula2/aula22/trabalho3 ls -l / >> aula2/aula22/teste1 ls -l /etc/ >> aula2/aula22/teste2 ls -l /usr/ >> aula2/aula22/exame1 ls -l /home/aluno/ >> aula2/aula22/exame2 ls -l /usr/ >> aula2/aula22/texto1 ls -l /bin/ >> aula2/aula22/texto3 ls -l /home/ >> aula2/aula22/anotacoes ls -l /lib/ >> aula2/aula22/notas

  1. 49

ls -l aula2/aula22/t*

  1. 50

ls -l aula2/aula22/??a*

  1. 51

ls -l aula2/aula22/*2

  1. 52

ls -l aula2/aula22/*nota*

  1. 53

ls -l aula2/aula22/*x*

  1. 54

cat aula2/aula22/tr*

  1. 55

cat aula2/aula22/*e2

  1. 56

cat aula2/aula22/*

  1. 57

cat aula2/aula22/*ex*

  1. 58

ls -l >> ConteudoDir

  1. 59

date >> ConteudoDir

  1. 60

ls -l /eetc >> Erro

  1. 61

cat /etc/group > aula2/aula22/grupos

  1. 62

date | cut -c -3

  1. 63

head -n 5 /etc/passwd | wc -c

  1. 64

tail -n 8 /etc/protocols | wc -w

  1. 65

head -n 10 /etc/protocols | tail -n 5

  1. 66

head -n 50 /etc/protocols | sort -r

  1. 67

ps | sort -r

  1. 68

tail -n 10 /etc/passwd | sort

  1. 69

w

  1. 70

ps aux | grep usr

  1. 80

head -n 30 /etc/protocols | grep protocol

  1. 81

tail -n 20 /etc/protocols | grep Protocol

  1. 82

cat /etc/protocols | grep Protocol | tail -n 5

  1. 83

head -n 40 /etc/protocols | cut -f 5-

  1. 84

tail -n 8 /etc/passwd | cut -c -8

  1. 85

head -n 20 /etc/protocols | grep protocol | sort -r

  1. 86

head -n 50 /etc/protocols | tail -n 26 | wc -w

  1. 87

tail -n 5 /etc/protocols | cut -f -2 | wc -c

  1. 88

ps aux | grep root | wc -l

  1. 89

head -n 30 /etc/protocols | tail -n 19 | cut -d '#' -f 1 | sort -r

  1. 90

ps aux | grep usr | head -n 4 | sort -r </syntaxhighlight>

Aula 02 (07/08) - Instalação de aplicativos e Sistemas de arquivos

Conteúdo:

  • Gerenciador de pacotes apt
  • Sistemas de arquivos
Instalação de aplicativos

A instalação de software pode ser feita de diversas formas, dentre as quais serão destacadas três:

  • Com utilitário apt-get: busca o software de um repositório de rede e o instala; dependências (outros softwares necessários) são automaticamente instaladas. Esses softwares buscados da rede estão no formato dpkg (Debian Package).

Exemplo de uso do apt-get:

    • Instalar o navegador de texto lynx
    • Testar o navegador lynx
lynx http://www.ifsc.edu.br/
    • Remover o lynx
  • Diretamente com utilitário dpkg: instala um software que está contido em um arquivo no formato dpkg.

Exemplo de uso:

    • Obter os pacotes Debian para o lynx
wget ftp://ftp.cn.debian.org/ubuntu-old-releases/ubuntu/pool/main/l/lynx-cur/lynx_2.8.7pre6-1_all.deb
wget ftp://mirror.linux.org.au/ubuntu/pool/main/l/lynx-cur/lynx-cur_2.8.7pre6-1_i386.deb
    • Instalar os pacotes
    • Testar o lynx
lynx ...
    • Remover os pacotes instalados


  • A partir do código fonte: busca-se manualmente na rede o código fonte do software desejado, que deve então ser compilado e instalado. Esta opção se aplica quando não existe o software no formato dpkg, ou a versão disponível em formato dpkg foi compilada de uma forma que não atende os requisitos para seu uso em seu servidor.

Atividades:

Aula 03 (12/08) - Gerenciamento de usuários e grupos e Cotas de disco

Conteúdo:

  • Gerenciamento de usuários e grupos.
  • Permissionamento.
  • Cotas de usuário.
Roteiro

Criação de contas de usuários e de grupos, e seu uso para conferir permissões de acesso a arquivos, diretórios e recursos do sistema operacional. Apostila, páginas 61 a 65.

Um usuário no Linux (e no Unix em geral) é definido pelo seguinte conjunto de informações:

  • Nome de usuário (ou login): um apelido que identifica o usuário no sistema
  • UID (User Identifier): um número único que identifica o usuário
  • GID (Group Identifier): o número do grupo primário do usuário
  • Senha (password): senha para verificação de acesso
  • Nome completo (full name): nome completo do usuário
  • Diretório inicial (homedir): o subddiretório pessoal do usuário, onde ele é colocado ao entrar no sistema
  • Shell: o programa a ser executado quando o usuário entrar no sistema

As contas de usuários, que contêm as informações acima, podem ficar armazenadas em diferentes bases de dados (chamadas de bases de dados de usuários). Dentre elas, a mais simples é composta pelo arquivo /etc/passwd:

root:x:0:0:root:/root:/bin/bash
sshd:x:71:65:SSH daemon:/var/lib/sshd:/bin/false
suse-ncc:x:105:107:Novell Customer Center User:/var/lib/YaST2/suse-ncc-fakehome:/bin/bash
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
news:x:9:13:News system:/etc/news:/bin/bash
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
roberto:x:1001:100:Roberto de Matos:/data1/roberto:/bin/bash

Acima um exemplo de arquivo /etc/passwd

Cada linha desse arquivo define uma conta de usuário no seguinte formato:

nome de usuário:senha:UID:GID:Nome completo:Diretório inicial:Shell

O campo senha em /etc/passwd pode assumir os valores:

  • x: significa que a senha se encontra em /etc/shadow
  • *: significa que a conta está bloqueada
  • senha encriptada: a senha de fato, porém encriptada usando algoritmo hash MD5 ou crypt. Porém usualmente a senha fica armazenada no arquivo /etc/shadow.

O arquivo /etc/shadow armazena exclusivamente as informações relativas a senha e validade da conta. Nele cada conta possui as seguintes informações:

  • Nome de usuário
  • Senha encriptada (sobrepõe a senha que porventura exista em /etc/passwd)
  • Data da última modificação da senha
  • Dias até que a senha possa ser modificada (validade mínima da senha)
  • Dias após que a senha deve ser modificada
  • Dias antes da expiração da senha em que o usuário deve ser alertado
  • Dias após a expiração da senha em que a conta é desabilitada
  • Data em que a conta foi desabilitada

Um exemplo do arquivo /etc/shadow segue abaixo:

root:$2a$05$8IZNUuFTMoA3xv5grggWa.oBUBfvrE4MfgRDTlUI1zWDXGOHi9dzG:13922::::::
suse-ncc:!:13922:0:99999:7:::
uucp:*:13922::::::
wwwrun:*:13922::::::
roberto:$1$meoaWjv3$NUhmMHVdnxjmyyRNlli5M1:14222:0:99999:7:::

Exercício: quando a senha do usuário roberto irá expirar ?

Um grupo é um conjunto de usuários definido da seguinte forma:

  • Nome de group (group name): o nome que identifica o grupo no sistema
  • GID (Group Identifier): um número único que identifica o grupo
  • Lista de usuários: um conjunto de usuários que são membros do grupo

Assim como as contas de usuários, os grupos ficam armazenados em bases de dados de usuários, sendo o arquivo /etc/group a mais simples delas:

root:x:0:
trusted:x:42:
tty:x:5:
utmp:x:22:
uucp:x:14:
video:x:33:roberto
www:x:8:roberto
users:x:100:
radiusd:!:108:
vboxusers:!:1000:

Os membros de um grupo são os usuários que o têm como grupo primário (especificado na conta do usuário em /etc/passwd), ou que aparecem listados em /etc/group.

Gerenciamento de usuários e grupos

Para gerenciar usuários e grupos podem-se editar diretamente os arquivos /etc/passwd, /etc/shadow e /etc/group, porém existem utilitários que facilitam essa tarefa:

  • useradd ou adduser: adiciona um usuário
    • Ex: useradd -c "Roberto de Matos" -m roberto : cria o usuário roberto com nome completo "Roberto de Matos"
    • Ex: useradd -c "Roberto de Matos" -g users -u 5000 -d /usuarios/roberto -s /bin/tcsh -m roberto : cria o usuário roberto com nome completo "Roberto de Matos", UID 5000, grupo users, diretório inicial /usuarios/roberto e shell /bin/tcsh
  • userdel: remove um usuário
    • Ex: userdel roberto : remove o usuário roberto, porém preservando seu diretório home
    • Ex: userdel -r roberto : remove o usuário roberto, incluindo seu diretório home
  • usermod: modifica as informações da conta de um usuário
    • Ex: usermod -u 5001 roberto : modifica o UID do usuário roberto
    • Ex: usermod -g wheel roberto : modifica o GID do usuário roberto
    • Ex: usermod -G users,wheel roberto : modifica os grupos secundários do usuário roberto
    • Ex: usermod -d /contas/roberto roberto : modifica o diretório inicial do usuário roberto (mas não copia os arquivos ...)
  • groupadd: adiciona um grupo
    • Ex: groupadd -g 4444 ger: cria o grupo ger com GID 4444
  • groupdel: remove um grupo
    • Ex: groupdel ger: remove o grupo ger
  • groupmod: modifica um grupo
    • Ex: groupmod -g 5555 ger: modifica o GID do grupo ger
    • Ex: groupmod -A roberto ger: adiciona o usuário roberto ao grupo ger
    • Ex: groupmod -R roberto ger: remove o usuário roberto do grupo ger

Esses utilitários usam os arquivos /etc/login.defs e /etc/default/useradd para obter seus parâmetros padrão. O /etc/adduser.conf tem o mesmo intuito mas é seta exclusivamente os parâmetros do comando adduser. O arquivo /etc/login.defs contém uma série de diretivas e padrões que serão utilizados na criação das próximas contas de usuários. Seu principal conteúdo é:

MAIL_DIR dir # Diretório de e-mail
PASS_MAX_DAYS	99999 #Número de dias até que a senha expire
PASS_MIN_DAYS	0 #Número mínimo de dias entre duas trocas senha
PASS_MIN_LEN 5	#Número mínimo de caracteres para composição da senha
PASS_WARN_AGE 7 #Número de dias para notificação da expiração da senha
UID_MIN 500 #Número mínimo para UID
UID_MAX 60000 #Número máximo para UID
GID_MIN 500 #Número mínimo para GID
GID_MAX 60000 #Número máximo para GID
CREATE_HOME yes #Criar ou não o diretório home

Como o login.defs o arquivo /etc/default/useradd contém padrões para criação de contas. Seu principal conteúdo é:

GROUP=100 #GID primário para os usuários criados 
HOME=/home #Diretório a partir do qual serão criados os “homes”
INACTIVE=-1 #Quantos dias após a expiração da senha a conta é desativada
EXPIRE=AAAA/MM/DD #Dia da expiração da conta
SHEL=/bin/bash #Shell atribuído ao usuário.
SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários.
GROUPS=video,dialout
CREATE_MAIL_SPOOL=no

O /etc/adduser.conf também possui uma série de padrões que funcionam especificamente para o comando adduser:

DSHELL=/bin/bash #Shell atribuído ao usuário.
DHOME=/home #Diretório a partir do qual serão criados os “homes”
SKEL=/etc/skel #Arquivos e diretórios padrão para os novos usuários.
FIRST_UID=1000 #Número mínimo para UID
LAST_UID=29999 #Número máximo para UID
FIRST_GID=1000 #Número mínimo para GID
LAST_GID=29999 #Número máximo para GID
QUOTAUSER="" #Se o sistema de cotas estiver funcional, pode atribuir quota ao usuário criado.

Permissões

Há uma maneira de restringir o acesso aos arquivos e diretórios para que somente determinados usuários possam acessá-los. A cada arquivo e diretório é associado um conjunto de permissões. Essas permissões determinam quais usuários podem ler, e escrever (alterar) um arquivo e, no caso de ser um arquivo executável, quais usuários podem executá-lo. Se um usuário tem permissão de execução para um diretório, significa que ele pode realizar buscas dentro daquele diretório, e não executá-lo como se fosse um programa.

Quando um usuário cria um arquivo ou um diretório, o LINUX determina que ele é o proprietário (owner) daquele arquivo ou diretório. O esquema de permissões do LINUX permite que o proprietário determine quem tem acesso e em que modalidade eles poderão acessar os arquivos e diretórios que ele criou. O super-usuário (root), entretanto, tem acesso a qualquer arquivo ou diretório do sistema de arquivos.

O conjunto de permissões é dividido em três classes: proprietário, grupo e usuários. Um grupo pode conter pessoas do mesmo departamento ou quem está trabalhando junto em um projeto. Os usuários que pertencem ao mesmo grupo recebem o mesmo número do grupo (também chamado de Group Id ou GID). Este número é armazenado no arquivo /etc/passwd junto com outras informações de identificação sobre cada usuário. O arquivo /etc/group contém informações de controle sobre todos os grupos do sistema. Assim, pode -se dar permissões de acesso diferentes para cada uma destas três classes.

Quando se executa ls -l em um diretório qualquer, os arquivos são exibidos de maneira semelhante a seguinte:

> ls -l
total 403196
drwxr-xr-x 4 odilson admin 4096 Abr 2 14:48 BrOffice_2.1_Intalacao_Windows/
-rw-r--r-- 1 luizp admin 113811828 Out 31 21:28 broffice.org.2.0.4.rpm.tar.bz2
-rw-r--r-- 1 root root 117324614 Dez 27 14:47 broffice.org.2.1.0.rpm.tar.bz2
-rw-r--r-- 1 luizp admin 90390186 Out 31 22:04 BrOo_2.0.4_Win32Intel_install_pt-BR.exe
-rw-r--r-- 1 root root 91327615 Jan 5 21:27 BrOo_2.1.0_070105_Win32Intel_install_pt-BR.exe
>

As colunas que aparecem na listagem são:

  1. Esquema de permissões;
  2. Número de ligações do arquivo;
  3. Nome do usuário dono do arquivo;
  4. Nome do grupo associado ao arquivo;
  5. Tamanho do arquivo, em bytes;
  6. Mês da criação do arquivo; Dia da criação do arquivo;
  7. Hora da criação do arquivo;
  8. Nome do arquivo;

O esquema de permissões está dividido em 10 colunas, que indicam se o arquivo é um diretório ou não (coluna 1), e o modo de acesso permitido para o proprietário (colunas 2, 3 e 4), para o grupo (colunas 5, 6 e 7) e para os demais usuários (colunas 8, 9 e 10).

Existem três modos distintos de permissão de acesso: leitura (read), escrita (write) e execução (execute). A cada classe de usuários você pode atribuir um conjunto diferente de permissões de acesso. Por exemplo, atribuir permissão de acesso irrestrito (de leitura, escrita e execução) para você mesmo, apenas de leitura para seus colegas, que estão no mesmo grupo que você, e nenhum acesso aos demais usuários. A permissão de execução somente se aplica a arquivos que podem ser executados, obviamente, como programas já compilados ou script shell. Os valores válidos para cada uma das colunas são os seguintes:

  • 1 d se o arquivo for um diretório;-se for um arquivo comum;
  • 2,5,8 r se existe permissão de leitura;-caso contrário;
  • 3,6,9 w se existe permissão de alteração;-caso contrário;
  • 4,7,10 x se existe permissão de execução;-caso contrário;

A permissão de acesso a um diretório tem outras considerações. As permissões de um diretório podem afetar a disposição final das permissões de um arquivo. Por exemplo, se o diretório dá permissão de gravação a todos os usuários, os arquivos dentro do diretório podem ser removidos, mesmo que esses arquivos não tenham permissão de leitura, gravação ou execução para o usuário. Quando a permissão de execução é definida para um diretório, ela permite que se pesquise ou liste o conteúdo do diretório.

A modificação das permissões de acesso a arquivos e diretórios pode ser feita usando-se os utilitários:

  • chmod: muda as permissões de acesso (também chamado de modo de acesso). Somente pode ser executado pelo dono do arquivo ou pelo superusuário
    • Ex: chmod +x /home/usuario/programa : adiciona para todos os usuários a permissão de execução ao arquivo /home/usuario/programa
    • Ex: chmod -w /home/usuario/programa : remove para todos os usuários a permissão de escrita do arquivo /home/usuario/programa
    • Ex: chmod o-rwx /home/usuario/programa : remove todas as permissões de acesso ao arquivo /home/usuario/programa para todos os usuários que não o proprietário e membros do grupo proprietário
    • Ex: chmod 755 /home/usuario/programa : define as permissões rwxr-xr-x para o arquivo /home/usuario/programa
  • chown: muda o proprietário de um arquivo. Somente pode ser executado pelo superusuário.
    • Ex: chown roberto /home/usuario/programa: faz com que o usuário roberto seja o dono do arquivo
  • chgrp: muda o grupo dono de um arquivo. Somente pode ser executado pelo superusuário.
    • Ex: chgrp users /home/usuario/programa: faz com que o grupo users seja o grupo dono do arquivo /home/usuario/programa

Há também o utilitário umask, que define as permissões default para os novos arquivos e diretórios que um usuário criar. Esse utilitário define uma máscara (em octal) usada para indicar que permissões devem ser removidas. Exemplos:

  • umask 022: tira a permissão de escrita para group e demais usuários
  • umask 027: tira a permissão de escrita para group, e todas as permissões para demais usuários

Atividades:

Roteiro
  1. Crie o grupo turma.
  2. Crie o diretório /home/contas.
  3. Faça cópia dos arquivos a serem alterados: /etc/login.defs e /etc/default/useradd.
  4. Faça com que o diretório home dos usuários, a serem criados a partir de agora, seja por padrão dentro de /home/contas.
  5. Faça com que os usuários sejam criados com o seguinte perfil, por padrão:
    1. Expiração de senha em 15 dias a partir da criação da conta;
    2. Usuário possa alterar senha a qualquer momento;
    3. Data do bloqueio da conta em 7 dias após a expiração da senha.
    4. Inicie os avisos de expiração da senha 4 dia antes de expirar.
    5. Iniciar a numeração de usuários (ID) a partir de 1500.
  6. Crie um usuário com o nome de manoel, pertencente ao grupo turma.
  7. Dê ao usuário manoel a senha mane123.
  8. Acrescente ao perfil do usuário seu nome completo e endereço: Manoel da Silva, R. dos Pinheiros, 2476666.
  9. Verifique o arquivo /etc/passwd.
  10. Mude, por comandos, o diretório home do manoel de /home/contas/manoel para /home/manoel.
  11. Mude o login do manoel para manoelsilva.
  12. Logue como manoelsilva.
  13. Recomponha os arquivos originais do item 3.

Permissionamento de arquivos e grupos de usuários

  1. Crie a partir do /home 3 diretórios, um com nome aln (aluno), outro prf (professor) e o último svd (servidor).
  2. Crie 3 grupos com os mesmos nomes acima.
  3. Crie 3 contas pertencentes ao grupo aln: aluno1, aluno2, aluno3. Estas contas deverão ter seus diretórios homes criados por comando dentro do diretório /home/aln/. Por exemplo para o aluno1 teremos /home/aln/aluno1.
  4. Crie 3 contas pertencentes ao grupo prf: prof1, prof2, prof3. Estas contas deverão ter seus diretórios homes criados por comando dentro do diretório /home/prf/.
  5. Crie 3 contas pertencentes ao grupo svd: serv1, serv2, serv3. Estas contas deverão ter seus diretórios homes criados por comando dentro do diretório /home/svd/.
  6. Os diretórios dos alunos, e todo o seu conteúdo, devem ser visíveis e editáveis aos membros do próprio grupo, visíveis mas não apagáveis a todos os demais usuários da rede.
  7. Já os diretórios dos professores e servidores, devem ser mutuamente visíveis, mas não apagáveis, entre os membros dos grupos professores e servidores mas não deve ser sequer visível aos membros do grupo alunos.