Mostrando postagens com marcador LINUX. Mostrar todas as postagens
Mostrando postagens com marcador LINUX. Mostrar todas as postagens

quinta-feira, 13 de junho de 2013

Shell Script com Dialog - Usando o CALENDARIO (dialog --calendar)

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:

Estas aulas são dedicadas ao uso de Shell Script com o recurso Dialog.

"O Dialog é um programa usado para desenhar interfaces amigáveis para o usuário, com botões e menus, a partir de um Shell Script." (aurelio.net/shell/dialog)

Recomendo a leitura do melhor manual em português de DIALOG que existe: http://aurelio.net/shell/dialog/

Para usar o recurso de caixas com o dialog, é necessário que você o instale na sua distribuição.
Caso você use DEBIAN/MINT/UBUNTU e derivados, faça:

# apt-get install dialog

Caso você use REDHAT/FEDORA/CENTOS e derivados, faça:

# yum install dialog


Este exemplo, usaremos o recurso calendário. O calendário, além de exibir par ao usuário um calendário com a data do sistema ( ou com uma data pré-fixada), pode também capturar uma data que o usuário escolheu.
Você pode testar direto na linha de comando, ou usar um script.
Faça você mesmo:

dialog --calendar "Calendario Atual" 0 0

Veja um exemplo mais completo utilizando o script abaixo que produz as seguintes telas:








Código fonte deste script:

#!/bin/bash
##########################################################
# Scripts de Exemplo de Uso de Shell Script com Dialog   #                  
# Obs: Nao esqueca que para funcionar o pacote dialog    #
#      tem que estar instalado no seu S.O.               #
#                                                        #
# Autor: Dailson Fernandes - contato@dailson.com.br      #
# Licenca: GNU/GPL                                       # 
##########################################################
# Exibe uma mensagem simples para o usuario.
# Obs: A barra invertida quebra a linha esteticamente,
#      Porem nao ha quebra no comando.
dialog --msgbox " Exibindo um Calendario \n \
Com a Data Capturada do Sistema" 0 0

# Exibe um calendario Com Ano,Mes e dia do Sistema
dialog --calendar "Calendario Atual" 0 0

dialog --msgbox " Exibindo um Calendario \n \
Com uma Data Especifica \n (Janeiro de 1972)" 8 40

# Exibe um calendario Com Ano,Mes especificado
dialog --calendar "Calendario de Janeiro de 1972" 0 0 01 01 1972

dialog --msgbox " Exibindo um Calendario \n \
Armazenando em uma variavel \n E exibido a escolha " 8 40

# Armazena a escolha do usuario na variavel DATA
# Note a presenca do --stdout e do subshell $(comando)
DATA=$(dialog --stdout --calendar "Escolha a Data de Pagamento" 0 0 )

dialog --msgbox "A Data Escolhida foi: $DATA" 0 0

clear

Baixe este script em:
http://www.reconstrucao.org/palestra/shell/dialog/calendar.sh
Baixe todos os scripts de exemplos de dialog: 
http://www.reconstrucao.org/palestra/shell/dialog/dialog.tar.gz 




Shell Script com Dialog - Usando o MENU (dialog --menu )

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:

Estas aulas são dedicadas ao uso de Shell Script com o recurso Dialog.

"O Dialog é um programa usado para desenhar interfaces amigáveis para o usuário, com botões e menus, a partir de um Shell Script." (aurelio.net/shell/dialog)

Recomendo a leitura do melhor manual em português de DIALOG que existe: http://aurelio.net/shell/dialog/

Para usar o recurso de caixas com o dialog, é necessário que você o instale na sua distribuição.
Caso você use DEBIAN/MINT/UBUNTU e derivados, faça:

# apt-get install dialog

Caso você use REDHAT/FEDORA/CENTOS e derivados, faça:

# yum install dialog


Este exemplo, usaremos o recurso menu, que apenas exibe um menu para o usuário. 
Você pode testar direto na linha de comando, ou usar um script.
Faça você mesmo:

dialog --menu 'Escolha Sua Opcao'  0 0 0 Item1 'descricao do Item1'   Item2 'Descricao do Item2' 

Veja um exemplo mais completo utilizando o script abaixo que produz as seguintes telas:






Código fonte do Script:

#!/bin/bash
##########################################################
# Scripts de Exemplo de Uso de Shell Script com Dialog   #                  
# Obs: Nao esqueca que para funcionar o pacote dialog    #
#      tem que estar instalado no seu S.O.               #
#                                                        #
# Autor: Dailson Fernandes - contato@dailson.com.br      #
# Licenca: GNU/GPL                                       # 
##########################################################
# Exibe uma mensagem simples para o usuario.
dialog --infobox " Exibindo um menu para o Usuario" 3 40
read

# Obs: A barra invertida quebra a linha esteticamente,
#      Porem nao ha quebra no comando. 

dialog --menu 'Escolha Sua Opcao' \
       0 0 0 Item1 'descricao do Item1' \
             Item2 'Descricao do Item2' \
             Item3 'Descricao do Item3' \
             Item4 'Descricao do Item4' \
             Item5 'Descricao do Item5' 

dialog --infobox "Capturando a escolha do Usuario" 3 40
read

# Capturando as escolhas do usuario.
# Note a presenca do --stdout e do subshell $(comando) 
ESCOLHA=$(dialog --stdout --menu 'Escolha Sua Opcao' \
       0 0 0 Item1 'descricao do Item1' \
             Item2 'Descricao do Item2' \
             Item3 'Descricao do Item3' \
             Item4 'Descricao do Item4' \
             Item5 'Descricao do Item5')
dialog --infobox "O Item Escolhido foi:\n $ESCOLHA" 4 30
read

clear

Baixe todos os scripts de exemplos de dialog: 
http://www.reconstrucao.org/palestra/shell/dialog/dialog.tar.gz 

Shell Script com Dialog - Usando o INFOBOX (dialog --infobox )

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:

Estas aulas são dedicadas ao uso de Shell Script com o recurso Dialog.

"O Dialog é um programa usado para desenhar interfaces amigáveis para o usuário, com botões e menus, a partir de um Shell Script." (aurelio.net/shell/dialog)

Recomendo a leitura do melhor manual em português de DIALOG que existe: http://aurelio.net/shell/dialog/

Para usar o recurso de caixas com o dialog, é necessário que você o instale na sua distribuição.
Caso você use DEBIAN/MINT/UBUNTU e derivados, faça:

# apt-get install dialog

Caso você use REDHAT/FEDORA/CENTOS e derivados, faça:

# yum install dialog


Este exemplo, usaremos o recurso infobox, que apenas exibe uma mensagem para o usuário. Você pode testar direto na linha de comando, ou usar um script.
Faça você mesmo:

# dialog --infobox "Isto é apenas uma mensagem" 0 0 

Veja um exemplo mais completo utilizando o script abaixo que produz as seguintes telas:





O Código fonte:

#!/bin/bash
##########################################################
# Scripts de Exemplo de Uso de Shell Script com Dialog   #                  
# Obs: Nao esqueca que para funcionar o pacote dialog    #
#      tem que estar instalado no seu S.O.               #
#                                                        #
# Autor: Dailson Fernandes - contato@dailson.com.br      #
# Licenca: GNU/GPL                                       # 
##########################################################
# Um aviso, usando o INFOBOX
dialog --infobox 'Isto e apenas um Alerta!' 0 0

# Este comando da uma pausa ate o usuario pressionar enter
read

dialog --infobox 'Uma Caixa Mais comprida!' 60 0
read

dialog --infobox 'Uma Caixa Mais Larga!' 10 60
read

dialog --infobox "\n Uma Caixa Mais Decente!\n  Com quebra de Linha" 6 29
read

clear


terça-feira, 30 de abril de 2013

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