segunda-feira, 6 de maio de 2013

Configuração de Rede no Redhat e CentOS


Segue o resumo de comandos e conceitos vistos em Sala de Aula.
Este é um material de apoio aos meus alunos que tem todo embasamento durante as aulas presenciais.

Você pode encontrar todos os resumos de aula no link abaixo:

Na Aula 6  vimos a configuração de Rede nas distribuições baseada em Debian.
Desta vez, vamos configurar a conexão de rede nas distribuições baseadas em Redhat/CentOS.

Obs: Caso você esteja montando um servidor, aconselho parar o configurador de Rede da Interface Gráfica:

1 - Pare o NetworkManager 
# service NetworkManager stop

2 - Desative o NetworkManager da inicialização padrão do Redhat/CentOS
# chkconfig --del NetworkManager

3 - Acesse o diretório de configuração da rede
# cd /etc/sysconfig/network-scripts

4 - Crie o arquivo de configuração da eth0
# vim ifcfg-eth0
E escreva o conteúdo abaixo: (Se quiser, você pode fazer a mesma configuração abaixo)
DEVICE=eth0
IPADDR=10.0.0.1
NETMASK=255.0.0.0
GATEWAY=10.0.0.254
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes

Salve o arquivo.

Para reiniciar o serviço de rede no CentOS use:
# service network restart
ou
# /etc/init.d/network restart

Para iniciar a rede automaticamente no Boot
# chkconfig --add network

Para listar inicialização dos daemons do Redhat/CentOS faça:
# chkconfig --list

Obs: Veja se a coluna correspondente ao nível 3 e 5 estão com on ou off conforme a sua configuração.

Depois das configurações feitas, execute os seguintes comandos para verificar as configurações de rede:

Para listar o ip
# ifconfig

Para exibir as configurações de DNS
# cat /etc/resolv.conf

Para exibir o Default Gateway
# route -n

Vamos agora configurar agora o nome e domínio da máquina.
Vamos tomar como exemplo o nome servidor.dailson.com.br

Configurando o Nome e domínio
# vim /etc/hosts
Acrescente a linha com Seu IP, Nome FQDN e apelido (alias)
127.0.0.1 localhost.localdomain   localhost
10.0.0.1  servidor.dailson.com.br   servidor

No arquivo /etc/sysconfig/network procure a linha HOSTNAME e coloque o seguinte valor:
HOSTNAME=servidor.dailson.com.br

Testando as configurações:

Para verificar o nome da máquina
# hostname

Para verificar o domínio
# dnsdomainname

Para verificar a resolução de DNS
# ping servidor.dailson.com.br
# ping servidor

Caso algum comando acima retorne erro ou retorne vazio, você deve voltar aos arquivos de configuração e checá-los novamente.

Obs: Você também pode usar o configurador do Redhat/CentOS
# system-config-network


Criando Interfaces virtuais:
A maneira mais prática, é copiar o arquivo da interface eth0 atual para o novo arquivo e fazer a mudança de IPs.
# cd /etc/sysconfig/network-scripts
# cp ifcfg-eth0 ifcfg-eth0:0

Abra o arquivo e faça a alteração para o novo IP. Note que foram retiradas as linhas de DNS1, DNS2 e GATEWAY. Isso foi feito, porque é o mesmo da eth0. Porém se você deixar, o sistema não acusa erro.
DEVICE=eth0:0
IPADDR=10.0.0.2
NETMASK=255.0.0.0
ONBOOT=yes


Se você tem dúvida sobre o cálculo do endreço de broadcast e network, sugiro a instalação do aplicativo ipcalc:
# apt-get install ipcalc

E depois coloque o ip para o ipcalc devolver todos os parâmentros de configuração da sua rede.
Exemplo:
# ipcalc 192.168.0.1

A resposta desse comando, são todos os cálculos para seu IP. Veja o resultado para o IP acima:

terça-feira, 30 de abril de 2013

Frase do Dia

"O único modo de escapar da corrupção causada pelo sucesso é continuar trabalhando."
Albert Einstein

Aula 12 - Gerenciamento de Permissões no Linux utilizando ACL


Segue o resumo de comandos e conceitos vistos em Sala de Aula.
Este é um material de apoio aos meus alunos que tem todo embasamento durante as aulas presenciais.

Você pode fazer o exercício desta aula no seguinte link:
http://dailson.blogspot.com.br/2013/04/exercicio-da-aula-12-gerenciamento-de.html 

As respostas deste exercício estão no seguinte link:
http://dailson.blogspot.com.br/2013/04/respostas-do-exercicio-da-aula-12.html

Você pode encontrar todos os resumos de aula no link abaixo:
http://www.dailson.com.br/2009/05/indice-mini-tutoriais-usados-em-aula.html


O Gerenciamento de permissões de usuários do Linux é bastante genérico e chega a um determinado momento que os commandos chown, chgrp e chmod já não satisfazem a uma situação.
Veja este exemplo:
Quero que um grupo inteiro grave em um diretório e dois usuários deste grupo tenham apenas acesso de somente leitura.

Como fazer exceções deste tipo?

Para resolver situações bem particulares como esta, o uso de ACL – Access Control List, (ou Lista de Controle de acessos) é muito bem-vinda.

Para usar ACLs no Linux é necessário instalar um pacote no Linux.

Em distribuições baseadas em Debian/Ubuntu/Mint faça:
# apt-get install acl

Em distribuições baseadas em Redhat/Fedora faça:
# yum install acl

Porém antes de começar a usar, é necessário fazer uma configuração.
1 - Abra o arquivo /etc/fstab

2 - Procure a linha que tem a montagem da sua partição raiz (ou na partição que você deseja usar o ACLs). Na
quarta coluna, basta acrescentar ,acl
Veja um exemplo:

Antes:
/dev/sda1 / reiserfs noatime,notail 0 1

Depois:
/dev/sda1 / reiserfs noatime,notail,acl 0 1

Salve o arquivo e digite o seguinte comando no console:
# mount / -o remount,acl

Obs: Nos meus testes usando Debian em máquina virtual no VMWARE PLAYER o comando acima não surtiu efeito. O gerenciamento das ACLs ficaram inconsistentes. Depois de rebootar a máquina virtual, os comandos começaram a funcionar imediatamente. Caso você tenha este mesmo problema, reinicie a máquina.

Para ter certeza que a acl está ativa na partição, digite o comando mount

O Resultado da minha máquina virtual foi o seguinte:

/dev/sda1 on / type ext3 (rw,errors=remount-ro,acl)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
none on /proc/fs/vmblock/mountPoint type vmblock (rw)

Note na primeira linha que a minha partição raiz está com a acl ativada.

Se não houver erros, o comando foi configurado correto.

A partir de agora poderemos atribuir permissões não só ao usuário dono e ao grupo, mas a cada usuário.

Vamos lá!

Vamos aprender a visualizar como estão as permissões de uma pasta.
Vamos criar um diretório chamado pasta_exemplo

# mkdir pasta_exemplo

Vamos definir as seguintes permissões:

# chmod 775 pasta_exemplo

Para fazer a visualização normal, que aprendemos nas aulas 10 e 11 e ver as permissões do sistema.

# ls -ld pasta_exemplo

O resultado é este:
drwxrwxr-x 2 root root 1024 2008-05-06 11:41 pasta_exemplo

Para ficar mais interessante, vamos criar um grupo chamado alunos e colocar tres alunos lá dentro:

# groupadd alunos
# useradd -m -s /bin/bash -g alunos aluno1
# useradd -m -s /bin/bash -g alunos aluno2
# useradd -m -s /bin/bash -g alunos aluno3

Vamos fazer o seguinte: Vamos passar a propriedade da pasta para o grupo alunos e permitir manipulação total desta pasta:

# chgrp alunos pasta_exemplo
# chmod 770 pasta_exemplo

Veja que a partir de agora, a pasta_exemplo tem como grupo dono, o grupo alunos.

# ls -ld pasta_exemplo
drwxrwx--- 2 root alunos 4096 Apr 18 19:26 pasta_exemplo/
Note também que apenas o usuário root e o grupo alunos tem poder total sobre esta pasta.

O Grupo alunos tem três usuários dentro: aluno1, aluno2 e aluno3. Como fazer para por exemplo, deixar que apenas o aluno3 fique com acesso de somente leitura?

Fácil, vamos usar os comandos contidos no pacote acl que acabamos de instalar. O comando que usaremos é o
setfacl

# setfacl -m u:aluno3:r-x pasta_exemplo

Explicando:
setfacl --> comando que altera as acls
-m --> modificar
u: --> especifica que vamos alterar as permissões de um usuário
aluno3 --> o usuário em questão
r-x --> estou tirando o poder de gravação na pasta deste usuário
pasta_exemplo --> o diretório alvo do comando.

Para ver o resultado disso, usaremos o comando getfacl

# getfacl pasta_exemplo
# file: pasta_exemplo
# owner: root
# group: alunos
user::rwx
user:aluno3:r-x
group::rwx
mask::rwx
other::---


Note que todos do grupo tem permissão EXCETO o usuário aluno3

Vamos repetir com o aluno1? Ele só poderá executar. Veja:

# setfacl -m u:aluno1:--- pasta_exemplo

O Resultado:
# getfacl pasta_exemplo/

# file: pasta_exemplo/
# owner: root
# group: root
user::rwx
user:aluno1:---
user:aluno3:r-x
group::r-x
mask::r-x
other::---

Vamos fazer agora com um grupo. O Grupo professores, terá permissão total na pasta

# setfacl -m g:professores:rwx pasta_exemplo/

O Resultado:
# getfacl pasta_exemplo/

# file: pasta_exemplo/
# owner: root
# group: root
user::rwx
user:aluno1:---
user:aluno3:r-x
group::r-x
group:professores:rwx
mask::rwx
other::---

E não tem limite... Você pode ir fazendo suas alterações de acordo com a necessidade.

A partir de agora, quando você der um ls -l na pasta_exemplo, o resultado será este:

drwxrwx---+ 2 root alunos 1024 2008-05-06 11:41 pasta_exemplo

Notou a presença do caracter + ... isso quer dizer que esta pasta tem permissões especiais...

Vamos a alguns exemplos:

Atribuir ao grupo alunos, poder total sobre a pasta
# setfacl -m g:alunos:rwx pasta_exemplo

Exibir as novas permissões:
# getfacl pasta_exemplo

Vamos entrar na pasta_exemplo
# cd pasta_exemplo

Vamos criar um arquivo em branco chamado arquivo.txt
# touch arquivo.txt

Vamos fazer que apenas o usuário aluno1 tenha permissão de modificar este arquivo.
# setfacl -m u:aluno1:rw- arquivo.txt

Para visualizar, faça:

# getfacl arquivo.txt

# file: arquivo.txt
# owner: root
# group: root
user::rw-
user:aluno1:rw-
group::r--
mask::rw-
other::r--

Se preferir, faça os testes, logue com os usuários criados e tente gravar no arquivo ou fazer outras modificações não permitidas.

Obs: este comando aceita os parametros de recursividade como -R

Exemplo:

setfacl -R -m g:alunos:r-x /teste

No exemplo acima, todo os arquivos e subdiretório do diretório /teste será afetado.

Retirando ACLs:

Para retirar ACLs

# setfacl -x u:aluno3 pasta_exemplo

# setfacl -x g:alunos pasta_exemplo

Respostas do Exercício da Aula 12 - Gerenciamento de Permissões no Linux utilizando ACL


Respostas do Exercício da Aula 12 -  Gerenciamento de Permissões no Linux utilizando ACL

Se você ainda não fez o Exercício, acesse ele neste link e faça antes de ver as respostas:

Toda a teoria necessária para a realização deste exercício encontra-se no link
abaixo:

Você pode encontrar todos os resumos de aula no link abaixo:

1 – Construa o seguinte cenário de grupos e usuários:


Dica 1: Crie primeiro os grupos
# groupadd lab1
# groupadd lab2
# groupadd lab3
# groupadd alunos
# groupadd todos

Dica 2: Crie os usuários dentro dos grupos. Vou utilizar as seguintes opções:
-g = grupo primário onde o usuário vai ficar
-G = grupo secundário (ou seja, os outros grupos no qual ele faz parte)
-m = cria o diretório home do usuário
-s /bin/bash = especifica que o usuário irá usar o shell /bin/bash

# useradd -m -s /bin/bash -g lab1 -G todos juca
# useradd -m -s /bin/bash -g lab1 -G todos chaves
# useradd -m -s /bin/bash -g lab2 -G todos marta
# useradd -m -s /bin/bash -g lab2 -G todos vanessa
# useradd -m -s /bin/bash -g lab3 -G todos dani
# useradd -m -s /bin/bash -g lab3 -G todos ceni
# useradd -m -s /bin/bash -g alunos aluno1
# useradd -m -s /bin/bash -g alunos aluno2
# useradd -m -s /bin/bash -g todos prof

# passwd juca
# passwd chaves
# passwd marta
# passwd vanessa
# passwd dani
# passwd ceni
# passwd aluno1
# passwd aluno2
# passwd prof


2 - Crie na raiz: os diretórios: lab1, lab2, lab3, alunos e todos.
# mkdir /lab1
# mkdir /lab2
# mkdir /lab3
# mkdir /alunos
# mkdir /todos


3 –  Faça com que as seguintes configurações sejam feitas:

Diretório
Usuário Dono
Grupo Dono
/lab1
juca
lab1
/lab2
marta
lab2
/lab3
dani
lab3
/alunos
aluno1
alunos
/todos
prof
todos

Atribuindo a propriedade ao usuário dono:
# chown juca /lab1
# chown marta /lab2
# chown dani /lab3
# chown aluno1 /alunos
# chown prof /todos

Atribuindo a propriedade de grupo dono:
# chgrp lab1 /lab1
# chgrp lab2 /lab2
# chgrp lab3 /lab3
# chgrp alunos /alunos
# chgrp todos /todos

Outra maneira de realizar este exercício é atribuindo a propriedade de usuário e grupo de uma vez só:
# chown juca:lab1 /lab1
# chown marta:lab2 /lab2
# chown dani:lab3 /lab3
# chown aluno1:alunos /alunos
# chown prof:todos /todos

4 – Faça com que o diretório /lab1 seja acessado apenas pelos usuários do grupo lab1 com poder total.
# chmod 770 /lab1

5 – Faça com que o diretório /lab2 seja acessado apenas pelos usuários do grupo lab2  com poder total.
# chmod 770 /lab2

6 – Faça com que o diretório /lab3 seja acessado apenas pelos usuários do grupo lab3 com poder total.
# chmod 770 /lab3

7 – Faça com que o diretório /alunos seja acessado apenas pelos usuários do grupo alunos.
# chmod 770 /alunos

8 – Faça com que o diretório /todos seja acessado apenas pelos usuários do grupo todos
# chmod 770 /todos

9 – Faça com que o usuário prof acesse o diretório /todos de modo somente leitura. Porém o grupo deve acessar livremente.
# chmod 570 /todos

10 – Faça com que o usuário prof acesse os diretórios /lab1, /lab2, /lab3 e /alunos com poder total.

# setfacl –m u:prof:rwx /lab1
# setfacl –m u:prof:rwx /lab2
# setfacl –m u:prof:rwx /lab3
# setfacl –m u:prof:rwx /alunos

11 – Exiba a situação de ACLs dos diretórios: /lab1, /lab2, /lab3 e /alunos
# getfacl /lab1
# getfacl /lab2
# getfacl /lab3
# getfacl /alunos

12 – Faça com que o grupo alunos acesse o diretório /todos com acesso total
# setfacl –m g:alunos:rwx /todos

13 – Exiba a situação de ACLs do diretório /todos
# getfacl /todos

14 – Não permita que os usuários juca, marta e dani não façam alterações no diretório /todos
# setfacl –m u:juca:r-x /todos
# setfacl –m u:marta:r-x /todos
# setfacl –m u:dani:r-x /todos

15 – Exiba a situação de ACLs do diretório /todos
# getfacl /todos

16 – Altere a ACL que permite o acesso total do usuário prof ao diretório /alunos. Deixe este usuário com acesso somente leitura.
# setfacl –m u:prof:r-x /alunos

17 – Exiba a situação de ACLs do diretório /alunos
# getfacl /alunos

18 – Retire a ACL que permite o usuário professor de usar o diretório /lab1
# setfacl –x u:prof /lab1

19 – Exiba a situação de ACLs do diretório /lab1
# getfacl /lab1

20 – Retire a ACL que permite o uso do diretório /alunos do usuário prof.
# setfacl –x u:prof /alunos

21 – Exiba a situação de ACLs do diretório /alunos
# getfacl /alunos


Exercício da Aula 12 - Gerenciamento de Permissões no Linux utilizando ACL


Exercício relativo a Aula 12 de Manipulação de Usuários e Grupos

Toda a teoria necessária para a realização deste exercício encontra-se no link abaixo:
http://www.dailson.blogspot.com.br/2013/03/aula-11-gerenciamento-de-permissoes-no.html

Você pode encontrar todos os resumos de aula no link abaixo:
http://www.dailson.com.br/2009/05/indice-mini-tutoriais-usados-em-aula.html  

As respostas deste exercício você encontra no seguinte link:

1 – Construa o seguinte cenário de grupos e usuários:

2 - Crie na raiz: os diretórios: lab1, lab2, lab3, alunos e todos.

3 –  Faça com que as seguintes configurações sejam feitas:

Diretório
Usuário Dono
Grupo Dono
/lab1
juca
lab1
/lab2
marta
lab2
/lab3
dani
lab3
/alunos
aluno1
alunos
/todos
prof
todos

4 – Faça com que o diretório /lab1 seja acessado apenas pelos usuários do grupo lab1

5 – Faça com que o diretório /lab2 seja acessado apenas pelos usuários do grupo lab2

6 – Faça com que o diretório /lab3 seja acessado apenas pelos usuários do grupo lab3

7 – Faça com que o diretório /alunos seja acessado apenas pelos usuários do grupo alunos

8 – Faça com que o diretório /todos seja acessado apenas pelos usuários do grupo todos

9 – Faça com que o usuário prof acesse o diretório /todos de modo somente leitura.

10 – Faça com que o usuário prof acesse os diretórios /lab1, /lab2, /lab3 e /alunos com poder total.

11 – Exiba a situação de ACLs dos diretórios: /lab1, /lab2, /lab3 e /alunos

12 – Faça com que o grupo alunos acesse o diretório /todos com acesso total

13 – Exiba a situação de ACLs do diretório /todos

14 – Não permita que os usuários juca, marta e dani não façam alterações no diretório /todos

15 – Exiba a situação de ACLs do diretório /todos

16 – Altere a ACL que permite o acesso total do usuário prof ao diretório /alunos. Deixe este usuário com acesso somente leitura.

17 – Exiba a situação de ACLs do diretório /alunos

18 – Retire a ACL que permite o usuário professor de usar o diretório /lab1

19 – Exiba a situação de ACLs do diretório /lab1

20 – Retire a ACL que permite o uso  do diretório /alunos do usuário prof.

21 – Exiba a situação de ACLs do diretório /alunos

Respostas do Exercício 11 - Gerenciamento de Permissões no Linux


Respostas do Exercício da Aula 11 -  Gerenciamento de Permissões no Linux

Se você ainda não fez o Exercício, acesse ele neste link e faça antes de ver as respostas:

Toda a teoria necessária para a realização deste exercício encontra-se no link
abaixo:

Você pode encontrar todos os resumos de aula no link abaixo:

1 – Construa o seguinte cenário de grupos e usuários:

Dica 1: Crie primeiro os grupos
# groupadd lab1
# groupadd lab2
# groupadd lab3
# groupadd alunos
# groupadd todos

Dica 2: Crie os usuários dentro dos grupos. Vou utilizar as seguintes opções:
-g = grupo primário onde o usuário vai ficar
-G = grupo secundário (ou seja, os outros grupos no qual ele faz parte)
-m = cria o diretório home do usuário
-s /bin/bash = especifica que o usuário irá usar o shell /bin/bash

# useradd -m -s /bin/bash -g lab1 -G todos juca
# useradd -m -s /bin/bash -g lab1 -G todos chaves
# useradd -m -s /bin/bash -g lab2 -G todos marta
# useradd -m -s /bin/bash -g lab2 -G todos vanessa
# useradd -m -s /bin/bash -g lab3 -G todos dani
# useradd -m -s /bin/bash -g lab3 -G todos ceni
# useradd -m -s /bin/bash -g alunos aluno1
# useradd -m -s /bin/bash -g alunos aluno2
# useradd -m -s /bin/bash -g todos prof

# passwd juca
# passwd chaves
# passwd marta
# passwd vanessa
# passwd dani
# passwd ceni
# passwd aluno1
# passwd aluno2
# passwd prof


2 - Crie na raiz: os diretórios: lab1, lab2, lab3, alunos e todos.
# mkdir /lab1
# mkdir /lab2
# mkdir /lab3
# mkdir /alunos
# mkdir /todos


3 –  Faça com que as seguintes configurações sejam feitas:

Diretório
Usuário Dono
Grupo Dono
/lab1
juca
lab1
/lab2
marta
lab2
/lab3
dani
lab3
/alunos
aluno1
alunos
/todos
prof
todos

Atribuindo a propriedade ao usuário dono:
# chown juca /lab1
# chown marta /lab2
# chown dani /lab3
# chown aluno1 /alunos
# chown prof /todos

Atribuindo a propriedade de grupo dono:
# chgrp lab1 /lab1
# chgrp lab2 /lab2
# chgrp lab3 /lab3
# chgrp alunos /alunos
# chgrp todos /todos

Outra maneira de realizar este exercício é atribuindo a propriedade de usuário e grupo de uma vez só:
# chown juca:lab1 /lab1
# chown marta:lab2 /lab2
# chown dani:lab3 /lab3
# chown aluno1:alunos /alunos
# chown prof:todos /todos

4 – Faça com que o diretório /lab1 seja acessado apenas pelos usuários do grupo lab1 com poder total.
# chmod 770 /lab1

5 – Faça com que o diretório /lab2 seja acessado apenas pelos usuários do grupo lab2  com poder total.
# chmod 770 /lab2

6 – Faça com que o diretório /lab3 seja acessado apenas pelos usuários do grupo lab3 com poder total.
# chmod 770 /lab3

7 – Faça com que o diretório /alunos seja acessado apenas pelos usuários do grupo alunos.
# chmod 770 /alunos

8 – Faça com que o diretório /todos seja acessado apenas pelos usuários do grupo todos
# chmod 770 /todos

9 – Faça com que o usuário prof acesse o diretório /todos de modo somente leitura. Porém o grupo deve acessar livremente.
# chmod 570 /todos

7 - Faça o teste com o usuário juca, marta, dani, e prof logando nos consoles e entrando nas pastas. Em cada pasta faça o comando mkdir teste e veja o resultado.

Faça o login e teste cada um dos diretórios tentando criar ao menos uma pasta dentro com o comando mkdir.