quarta-feira, 3 de julho de 2013
segunda-feira, 17 de junho de 2013
quinta-feira, 13 de junho de 2013
Shell Script com Dialog - Usando o INPUTBOX (dialog --inputbox)
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)
"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 inputbox, que exibe um campo para o usuário digitar um valor. Este valor pode ser capturado pelo programador.
Você pode testar direto na linha de comando, ou usar um script.
Faça você mesmo:
# dialog --inputbox "Digite seu nome" 0 0
Veja um exemplo mais completo utilizando o script abaixo que produz as seguintes telas:
Código fonte do Script:
##########################################################
# 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 --msgbox "Solicitando para o \nusuario algum dado..." 0 0
dialog --inputbox 'Por favor digite seu nome' 0 0
#Armazena a escolha do usuario na variavel ESCOLHA
# Note a presenca do --stdout e do subshell $(comando)
dialog --msgbox "Armazenando em uma Variavel \no que o usuario digitou" 0 0
ESCOLHA=$(dialog --stdout --inputbox 'Por favor digite seu nome' 0 0)
dialog --msgbox "O Usuario digitou: \n$ESCOLHA" 0 0
clear
Baixe este script em:
http://www.reconstrucao.org/palestra/shell/dialog/infobox.sh
Baixe todos os scripts de exemplos de dialog:
http://www.reconstrucao.org/palestra/shell/dialog/dialog.tar.gz
Baixe todos os scripts de exemplos de dialog:
http://www.reconstrucao.org/palestra/shell/dialog/dialog.tar.gz
Marcadores:
Aula,
comandos basicos linux,
dialog,
dialog --inputbox,
exercicio linux,
LINUX
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)
"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
Marcadores:
Aula,
comandos basicos linux,
dialog,
dialog --calendar,
exercicio linux,
LINUX
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)
"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
http://www.reconstrucao.org/palestra/shell/dialog/dialog.tar.gz
Marcadores:
Aula,
comandos basicos linux,
dialog,
dialog --menu,
exercicio linux,
LINUX
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)
"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:
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
##########################################################
# 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
Baixe este script:
http://www.reconstrucao.org/palestra/shell/dialog/infobox.sh
Baixe todos os scripts de exemplos de dialog:
http://www.reconstrucao.org/palestra/shell/dialog/dialog.tar.gz
http://www.reconstrucao.org/palestra/shell/dialog/infobox.sh
Baixe todos os scripts de exemplos de dialog:
http://www.reconstrucao.org/palestra/shell/dialog/dialog.tar.gz
Marcadores:
Aula,
comandos basicos linux,
dialog,
dialog --infobox,
exercicio linux,
LINUX
quarta-feira, 22 de maio de 2013
Frase do Dia
"Contrário à crença popular, o UNIX é amigável.
O que acontece é que ele é muito seletivo quanto às amizades..."
sexta-feira, 10 de maio de 2013
Aula 13 - Permissões especiais GNU/Linux
Tipos de permissões especiais GNU/Linux
Autor: Gabriel Santana
Data: 04/12/2004
Artigo totalmente reproduzido de:
Introdução: SUID, SGUID, STICKY
No artigo anterior vimos como funcionam as permissões pelo modo octal e literal. Vimos um pouco
também sobre o funcionamento do umask.
Agora vamos estudar como funcionam os tipos de permissões especiais,
que afetam arquivos executáveis e diretórios: SUID, SGUID e STICKY, conhecidos
também como permissões de sistema.
SUID
Se este bit estiver ligado em um arquivo executável, isso indica que
que ele vai rodar com as permissões do seu dono (o proprietário do arquivo) e
não com as permissões do usuário que o executou.
OBS: Só tem efeito em arquivos executáveis.
SGUID
Faz o mesmo que o SUID, mas agora o arquivo executado vai rodar com as
permissões do grupo do arquivo. Se aplicado a um diretório, força os
arquivos/diretórios criados dentro dele a ter o mesmo grupo do diretório pai,
ao invés do grupo primário do usuário que o criou.
STICKY
Se este bit for ativado, faz com que arquivos criados em um determinado
diretório só possam ser apagados por quem o criou (dono) ou pelo super-usuário
do sistema. Um exemplo de uso do STICKY é o diretório /tmp.
Tabela de Valores
SUID 4
SGUID 2
STICKY 1
SUID
Para demonstrar o uso do SUID vou dar como exemplo o comando shutdown,
que é utilizado para desligar e reiniciar o sistema, mas que só pode ser
executado pelo usuário root. Mesmo se você der permissão através do "chmod
755 /sbin/shutdown", o usuário comum não vai conseguir realizar a execução
deste, somente o root.
Vamos lá!
#
groupadd shutdown
#
gpasswd -a gabriel shutdown
#
chown root:shutdown /sbin/shutdown
#
chmod 4750 /sbin/shutdown
#
ln -s /sbin/shutdown /bin/shutdown
Comentários dos comandos acima:
groupadd
: adiciona um novo grupo ao sistema.
gpasswd
-a : adiciona um novo membro a um grupo.
chown
: : muda o dono e o grupo de um
arquivo/diretório.
chmod
: liga o bit SUID junto com as novas permissões.
-ln
-s : cria um link simbólico de um arquivo/diretório.
Agora, logue-se novamente no shell:
#
su - gabriel
Agora teste o comando shutdown. Não esqueça de voltar e terminar de ler
o artigo ;D.
# shutdown -h now
OBS 1: Reparem que, se olharmos as permissões do comando shutdown,
veremos um 's' na permissão do dono no lugar do 'x', isto indica que o bit SUID
está ligado.
OBS 2: 'su - gabriel' utilizei para que o sistema atualize-se e
reconheça que o usuário 'gabriel' agora faz parte também do grupo shutdown.
Outra forma de fazer isso seria logar-se novamente, o que seria chato pois
seria necessário sair do X. Caso conheçam uma outra maneira de fazer a mesma
coisa favor postem aqui.
SGUID
O bit SGUID tem a mesma função do bit SUID, só que agora é usada a
permissão do grupo do arquivo para executá-lo. O SGUID também tem uma outra
função, que funciona em diretórios. Quando este bit está ligado em um diretório
ele possibilita que todos arquivos/diretórios criados dentro dele pertençam ao
mesmo grupo desse diretório.
Vamos a um exemplos para que possamos entender.
#
cd /tmp
#
mkdir publico
#
ls -l publico
drwxr-xr-x 2 root root
48 2004-11-24 21:21 publico
Veja que só o root pode escrever nele, ou seja, criar arquivos e
diretórios.
Vamos ligar o bit SGUID neste diretório.
#
chmod 2777 publico
#
ls -l publico
drwxrwsrwx 2 root root
48 2004-11-24 21:21 publico
Observe que o 's' indica que o bit SGUID está ligado. Agora entre neste
diretório com outros usuários, crie arquivos e diretórios, e repare que os
arquivos e diretórios criados pertencem ao mesmo grupo do diretório pai
(diretório antecedente).
Exemplo:
$
mkdir testando
$
ls -l
drwxr-sr-x 2 linuxba root 48 2004-11-24 21:31 testando
Vamos para o próximo.
STICKY
Bom, o bit STICKY não tem segredo. Como vocês já sabem, ele faz com que
um diretório funcione igual ao diretório /tmp, onde todos os usuários podem
criar arquivos/diretórios mas só o próprio dono do arquivo/diretório ou o
usuário root podem excluí-los.
#
cd /tmp
#
mkdir corrimao
#
chmod 1777 corrimao
$
cd /tmp/corrimao
$
mkdir teste
#
ls -l
drwxr-xr-x 2 linuxba users 48 2004-11-24 21:47 teste
Vamos dar uma olhada na conclusão. ;D
Bom, é isso ai pessoal, este artigo na verdade é uma continuação do
artigo anterior, onde foram abordados os tipos de permissões do sistema
GNU/Linux.
Para que você aprenda (e não decore) o que foi passado neste artigo,
pratique e tente entender a lógica da coisa, pois assim você vai aprender e
será muito difícil de esquecer. E fiquem à vontade quanto aos comentários.
Artigos recomendados:
Até a próxima!
Gabriel Santana
Nick: m4sk4r4
CompactNick: m4sk
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
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:
# 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.
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
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
Marcadores:
Aula,
comandos basicos linux,
exercicio linux,
LINUX
Assinar:
Postagens (Atom)