segunda-feira, 25 de março de 2013

Aula 11 - Gerenciamento de Permissões no Linux

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:
Em breve...

As respostas deste exercício estão no seguinte link:
Em breve...

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


Ao executar um ls -l você visualiza algo como esta linha:

drwxr-xr-x 2 dailson alunos 4096 Jun 18 09:43 intranet

Vamos entender o que é cada dado deste:
drwxr-xr-x --> Permissões
2 --> A quantidade de ítens dentro deste diretório
dailson --> Usuário dono do diretório intranet
alunos --> Grupo dono do diretório intranet
4096 --> Tamanho em bytes
18   --> Dia da criação do diretório
09:43 --> Hora decriação do diretório
intranet --> Nome do diretório

Veja a figura abaixo que ilustra mais um exemplo:




O Primeiro caracter identifica o tipo do arquivo/objeto:

    * d => diretório;
    * b => arquivo de bloco;
    * c => arquivo especial de caractere;
    * p => canal;
    * s => socket;
    * - => arquivo normal.

Já os outros caracteres significam:

    * r => permissão de leitura (read);
    * w => permissão de gravação (write);
    * x => permissão de execução (execution);
    * - => permissão desabilitada.


Vamos aprender alterar as permissões de propriedade do objeto (arquivo, diretório ou link...) As permissões são propriedade de usuário  dono e grupo dono de um diretório e/ou arquivo.

Atribuir a propriedade de um diretório/arquivo para um determinado usuário
chown nome-usuario diretorio/arquivo
Exemplo:

Passar a propriedade do diretório /jogos para o usuário  dailson
# chown dailson /jogos

Passar a propriedade do diretório /jogos e todos os subdiretórios e arquivos para o usuário  dailson
# chown -Rvf dailson /jogos

Atribuir a propriedade de um diretório/arquivo para um determinado grupo
chgrp nome-grupo diretorio/arquivo
Exemplo:

Passar a propriedade do diretório /jogos para o grupo alunos
# chgrp alunos/jogos

Passar a propriedade do diretório /jogos e todos os subdiretórios e arquivos para o grupo alunos
# chgrp -Rvf alunos /jogos

Passar a propriedade de um diretório/arquivo para um usuário  e grupo ao mesmo tempo
# chown usuario:grupo diretorio/arquivo

Exemplo:
Passar para o usuário  dailson e grupo alunos o diretório /jogos
# chown dailson:alunos /jogos

Passar para o usuário  dailson e grupo alunos o diretório /jogos e todos os seus subdiretórios e arquivos
# chown -Rvf dailson:alunos /jogos


Alterando as Permissões com o chmod

Em relação as permissões:

Leitura (r):
Em arquivos, permite examinar o conteúdo do arquivo.
Em diretórios permite listar conteúdo do diretório.

Escrita (w):
Em arquivos, permite escrever, remover e alterar o arquivo.
Em diretórios, permite criar e remover arquivos dentro do diretório.

Execução (x):
Em arquivos, permite executar um arquivo como um programa.
Em diretório, permite ler e escrever em arquivos dentro do diretório.

Sendo que os três primeiros rwx pertencem ao Dono do arquivo, os outros três rwx pertencem ao Grupo e por fim os últimos três rwx pertencem aos outros usuários que não fazem parte do grupo.

Trabalhando com as permissões :
Poderemos trabalhar de duas formas. Usando as permissões  literais, ou usando o modo binário.
Para usar a forma literal são necessário saber que:

u : permissões  para o dono da pasta (user).
g : permissões  para o grupo (group).
o : permissões  para os demais (others).

+ : Adiciona a permissão
- : Remove a permissão
r : permissão de leitura
w : permissão de escrita
x : No caso dos arquivos indica permissão  de escrita e, no caso da pasta, permissão  para ver o conteúdo.

Veja a figura:




chmdo permissões  diretório/arquivo
Obs: Todos os exemplos serão em cima deste diretório:

drwxr-xr-x 2 dailson alunos 4096 Jun 18 09:43 intranet

Atribuir todas as permissões  ao usuário  dailson no diretório intranet
chmod

Atribui todas as permissões apenas para o usuário dono do diretório intranet (usuário dailson)
# chmod u=+rwx intranet
ou
# chmod u=+r+w+x intranet

Atribui todas as permissões apenas para o grupo dono do diretório intranet  (grupo alunos)
# chmod g=+rwx intranet
ou
# chmod g=+r+w+x intranet

Atribui todas as permissões apenas para os outros usuários do diretório intranet 
# chmod o=+rwx intranet
ou
# chmod o=+r+w+x intranet

Atribui todas as permissões apenas para o usuário dono, grupo dono e os outros usuários do diretório intranet
# chmod u=+rwx,g=+rwx,o=rwx intranet
ou
# chmod u=+r+w+x,g=+r+w+x,o=r+w+x intranet

Retira todas as permissões apenas para o usuário dono do diretório intranet (usuário dailson)
# chmod u=-rwx intranet
ou
# chmod u=-r-w-x intranet

Retira todas as permissões apenas para o grupo dono do diretório intranet  (grupo alunos)
# chmod g=-rwx intranet
ou
# chmod g=-r-w-x intranet

Retira todas as permissões apenas para os outros usuários do diretório intranet 
# chmod o=-rwx intranet
ou
# chmod o=-r-w-x intranet

Retira todas as permissões do usuário dono, grupo dono e os outros usuários do diretório intranet
# chmod u=-rwx,g=-rwx,o=-rwx intranet
ou
# chmod u=-r-w-x,g=-r-w-x,o=-r-w-x intranet

Você pode usar estes sinais a vontade, conforme os exemplos abaixo, sabendo que o + atribui e o - retira a permissão

# chmod u=+r-w+x,g=+r-w-x,o=r+w-x intranet
# chmod u=+r-w+x,g=+r+w-x,o=r+w+x intranet

Obs:
Lembre-se que o parâmetro -R de recursividade (ou seja: aplicar a todos os arquivos e subdiretórios também pode ser usado nos comandos chmod)
...

Você também pode atribuir os direitos de leitura, gravação e execução aos três níveis (usuário, grupo e outros) de uma só vez.

Atribuir o direito de leitura aos três níveis (usuário, grupo e outros)
# chmod +r intranet

Atribuir o direito de gravação aos três níveis (usuário, grupo e outros)
# chmod +w intranet

Atribuir o direito de execução aos três níveis (usuário, grupo e outros)
# chmod +x intranet

Utilizando o Modo Octal

No modo Octal as letras assumem valores:

r=4
w=2
x=1

Em qualquer posição, seja ela para usuário, grupo ou outros...


Os valores permanecem o mesmo
r=4
w=2
x=1

E para alterar as permissões, poderemos usar a soma destes valores para cada um dos objetos das permissões: usuário, grupo e outros.

Veja:




No exemplo abaixo, veja como aplicar a soma dos números para atribuir uma permissão:




Veja mais exemplos abaixo:

Obs: Todos os exemplos serão em cima deste diretório:

drwxr-xr-x 2 dailson alunos 4096 Jun 18 09:43 intranet

Atribui todas as permissões apenas para o usuário dono do diretório intranet (usuário dailson)
# chmod 700 intranet

Atribui todas as permissões apenas para o grupo dono do diretório intranet  (grupo alunos)
# chmod 070 intranet

Atribui todas as permissões apenas para os outros usuários do diretório intranet 
# chmod 007 intranet

Atribui todas as permissões apenas para o usuário dono, grupo dono e os outros usuários do diretório intranet
# chmod 777 intranet

Retira todas as permissões apenas para o usuário dono do diretório intranet (usuário dailson)
# chmod 077 intranet

Retira todas as permissões apenas para o grupo dono do diretório intranet  (grupo alunos)
# chmod 070 intranet

Retira todas as permissões apenas para os outros usuários do diretório intranet 
# chmod 770 intranet

Retira todas as permissões apenas para o usuário dono, grupo dono e os outros usuários do diretório intranet
# chmod 000 intranet

Você pode usar estes parametros da maneira que bem entender.

# chmod 123 intranet
# chmod 234 intranet
# chmod 345 intranet
# chmod 456 intranet
# chmod 567 intranet
# chmod 755 intranet
# chmod 644 intranet


Obs:
Lembre-se que o parâmetro -R de recursividade (ou seja: aplicar a todos os arquivos e subdiretórios também pode ser usado nos comandos chmod)

O Parâmetro UMASK
Toda vez que você cria um diretório ou arquivo, as permissões padrões já aparecem. Estas permissões vem de um parâmetro chamado umask.
Faça o teste
Crie um diretório e um arquivo e veja quais são as permissões.

A umask (user mask) são 3 números que definem as permissões iniciais do dono, grupo e outros usuários que o arquivo/diretório receberá quando for criado ou copiado para um novo local. Digite umask sem parâmetros para retornar o valor de sua umask atual.

A umask tem efeitos diferentes caso o arquivo que estiver sendo criado for binário (um programa executável) ou texto . Veja a tabela a seguir para ver qual é a mais adequada a sua situação:




Um arquivo texto criado com o comando umask 012;touch texto.txt receberá as permissões -rw-rw-r--, pois 0 (dono) terá permissões rw-, 1 (grupo), terá permissões rw- e 2 (outros usuários) terão permissões r--. Um arquivo binário copiado com o comando umask 012;cp /bin/ls /tmp/ls receberá as permissões -r-xr--r-x (confira com a tabela acima).

Por este motivo é preciso atenção antes de escolher a umask, um valor mal escolhido poderia causar problemas de acesso a arquivos, diretórios ou programas não sendo executados. O valor padrão da umask na maioria das distribuições atuais é 022. A umask padrão no sistema Debian é a 022 .

A umask é de grande utilidade para programas que criam arquivos/diretórios temporários, desta forma pode-se bloquear o acesso de outros usuários desde a criação do arquivo, evitando recorrer ao chmod.

Geralmente o umask é configurado no arquivo /etc/bash.bashrc ou /etc/profile

Dica:
Para saber qual é o resultado do umask:
Em binários e diretórios = Subtraia de 7
Em Arquivos = Subtraia de 6

Faça o teste na tabela acima.

Fontes:

Nenhum comentário:

Postar um comentário