domingo, 20 de janeiro de 2013

Permissões                                          


Ao listar um arquivo com o comando:

$ ls -l arquivo.ext


Ele mostrará:

Tipo  Dono   Grupo  Outros  Arquivo 
-         ---        ---        ---      arquivo.extensão

Onde:

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


O primeiro dígito determina o tipo de arquivo, 
os três seguintes a permissão do dono do arquivo, 
os três do meio a permissão do grupo que o arquivo pertence 
e os últimos a permissão de outros usuários. 


A regra para a permissão sempre será:

--- - Nenhuma permissão;
r-- - Permissão de leitura;   ( read )
r-x - Leitura e execução; ( read – execute )
rw- - Leitura e gravação; ( read – write )
rwx - Leitura, gravação e execução. ( read – write – execute )


As permissões para melhor entendimento se tratando das numéricas são:

Permissão  Binário   Decimal
---         000       0
--x         001       1
-w-         010       2
-wx         011       3
 r--         100       4
 r-x         101       5
 rw-         110      
 rwx         111       7


Cmd Nr   Permissão  Status
==============================================
chmod 000 ---------   Nenhuma
chmod 400 r--------   Leitura apenas para o dono
chmod 444 r--r--r--   Leitura para o dono, grupo e outros
chmod 600 rw-------   Leitura e gravação apenas para o dono
chmod 620 -rw--w----   Leitura e gravação para o dono, gravação para o grupo
chmod 640 -rw-r-----   Leitura e gravação para o dono, e leitura para o grupo
chmod 644 rw-r--r--   Leitura e execução para o dono, leitura para o grupo e leitura para outros
chmod 645 -rw-r--r-x   Leitura e gravação para o dono, leitura para o grupo e leitura e execução para outros
chmod 646 -rw-r--rw-   Leitura e gravação para o dono, leitura para o grupo e leitura e gravação para outros
chmod 650 -rw-r-x---   Leitura e gravação para o dono e leitura e execução para o grupo
chmod 660 -rw-rw----  Leitura e gravação para o dono e leitura e gravação para o grupo
chmod 661 -rw-rw---x  Leitura e gravação para o dono, leitura e gravação para o grupo e execução para outros
chmod 662 -rw-rw--w- Leitura e gravação para o dono, leitura e gravação para o grupo e gravação para outros
chmod 663 -rw-rw--w-x Leitura e gravação para o dono, leitura e gravação para o grupo e leitura e execução para outros
chmod 664 -rw-rw-r--   Leitura e gravação para o dono, leitura e gravação para o grupo e leitura para outros
chmod 700 -rwx------   Leitura gravação e execução para o dono e nada para os demais
chmod 770 -rwxrwx---  Leitura e gravação e execução para o dono, leitura gravação e execução para o grupo e nada para outros
chmod 777 -rwxrwxrwx  Permissão total para dono, grupo e outros


Podemos também dar permissão através de letras, eu particularmente por questão de padronização dou por números, mas para maior entendimentos, por letras ficaria assim:

U   Usuário
G   Grupo
O   Outros
+   Adicionar permissão
-   Remover permissão
=   Igualdade


Exemplos:

$ chmod u+w arquivo.ext

O "u" indica o usuário, o sinal de adição (+) indica que está sendo adicionada a permissão e "w" indica que a permissão que está sendo dada é de gravação.

$ chmod g+rw arquivo.ex


Leitura e execução para o grupo.

$ chmod u+rwx arquivo.ext

Aqui estamos dando permissão total para o dono do arquivo.

Aconselho os leitores desse texto criarem arquivos de teste com o comando "touch teste.txt" e testar todas as permissões para melhor entendimento. 

Aprender permissão não é apenas decorar e sim exercitar sempre. Em 90% das configurações, a maior atenção precisa ser dada nas permissões, por isso devemos estar sempre atentos com ela.

Usar o comando abaixo para definir permissão para as sub-diretórios que estão dentro do diretório www


Exemplo:

(permissão mínima para scripts & programas www)

# chmod 755 [arquivo] 

# chmod 755 pasta         ou          # chmod 755 –R *


# chmod 644 arq    

Ou 

Para todos os arquivos e sub-diretórios

# chmod -R 644 *




Permitindo acesso externo via FTP

Um amigo acessará o servidor para me ajudar ajustar um código feito em PHP. Adicionaremos um usuário de nome amigo e este poderá alterar somente arquivos dentro do diretório chamado amigo e os demais diretórios estarão protegidos.

Quando adicionamos um usuário ( amigo ) no sistema, automaticamente é criado um sub-diretório de nome amigo dentro da home.

# adduser amigo

Adding user `amigo' ...
Adding new group `amigo' (1009) ...
Adding new user `amigo' (1008) with group `amigo' ...
Creating home directory `/home/amigo' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for amigo
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n]

# ls -l
drwxr-xr-x  2 amigo    amigo     4096 2012-09-30 11:10 amigo

Se precisar remover um usuário e o respectivo diretório que é criado automaticamente quando é criado um usuário, use o comando:

#userdel –r amigo



Configurando Filezilla para acessar conta

Como no arquivo abaixo há restrições para os usuários, precisaremos adicionar o usuário amigo para que este possa acessar.

# nano /etc/proftpd/proftpd.conf

<Limit LOGIN>
        AllowUser jura jp amigo  
        DenyALL
</Limit>

<Global>
        ServerIdent off
        MaxClients 3              
        MaxLoginAttempts 3   
        RootLogin off
</Global>



Vamos reiniciar o serviço.

# /etc/init.d/proftpd restart
Stopping ftp server: proftpd.
Starting ftp server: proftpdlocalhost - 127.0.0.1:50000 masquerading as 187.4.229.187





Acessando o diretório com o Filezilla



Arquivos copiados com sucesso.



Criando alias.

# nano /etc/apache2/sites-enabled/000-default

# Atalho para acessar pasta do usuario jp no home

Alias /a1 /home/jp/a1
Alias /amigo /home/amigo

</VirtualHost>



Reinicar o apache.

# /etc/init.d/apache2 reload


Testando ...

http://www.juralinux.com.br/amigo/index.php




Se o usuário amigo tentar criar pastas, mudar arquivos etc… este não terá acesso...


===[ www ]===

Ou podemos criar um diretório em /var/www ( no apache ), mas precisaremos mudar o dono para o mesmo usuário.

# cd /var/www

# ls -l

# mkdir cadastro1

# ls –l
drwxr-xr-x  2 root     root         4096 2012-09-30 10:09 cadastro1



Vamos mudar o dono root para o usuário amigo

# chown -R amigo:amigo cadastro1/

# ls –l
drwxr-xr-x  2 amigo     amigo     4096 2012-09-30 10:55 cadastro1




Veja abaixo a transferência com sucesso.


# cd /var/www/audios

# ls -l
total 48
drwxrwxrwx  2 root root      4096 2012-06-26 21:51 0_intro
drwxrwxrwx  2 root root      4096 2012-06-26 21:46 1_interchange
drwxrwxrwx  2 root root      4096 2012-06-26 21:49 2_interchange
drwxrwxrwx  2 root root      4096 2012-08-09 17:21 3_interchange
drwxr-xr-x    2 ewb  ewb     4096 2012-06-26 14:41 dlf
-rw-r--r--      1 ewb  ewb   16056 2012-08-15 20:27 index.php
drwxr-xr-x  14 ewb  ewb     4096 2012-07-07 15:40 songs
drwxr-xr-x    2 ewb  ewb     4096 2012-07-07 18:44 videos


Mudando o usuário root para ewb

# chown -R jura:jura*

# ls -l
total 48
drwxrwxrwx  jura jura    4096 2012-06-26 21:51 0_intro
drwxrwxrwx  2 jura jura    4096 2012-06-26 21:46 1_interchange
drwxrwxrwx  2 jura jura    4096 2012-08-15 19:27 1_interchange_1_self_study
drwxrwxrwx  2 jura jura    4096 2012-06-26 21:49 2_interchange
drwxrwxrwx  2 jura jura    4096 2012-08-09 17:21 3_interchange
drwxr-xr-x    2 jura jura    4096 2012-06-26 14:41 dlf
-rw-r--r--      1 jura jura  16056 2012-08-15 20:27 index.php
drwxr-xr-x   14 jura jura 4096 2012-07-07 15:40 songs
drwxr-xr-x    2 jura jura 4096 2012-07-07 18:44 videos


Compare as permissões acima e abaixo...

# chmod -R 644 *

# ls -l
total 48
drw-r--r--   2 jura jura     4096 2012-06-26 21:51 0_intro
drw-r--r--   2 jura jura     4096 2012-06-26 21:46 1_interchange
drw-r--r--   2 jura jura     4096 2012-08-15 19:27 1_interchange_1_self_study
drw-r--r--   2 jura jura     4096 2012-06-26 21:49 2_interchange
drw-r--r--   2 jura jura     4096 2012-08-09 17:21 3_interchange
drw-r--r--   2 jura jura     4096 2012-06-26 14:41 dlf
-rw-r--r--    1 jura jura   16056 2012-08-15 20:27 index.php
drw-r--r-- 14 jura jura     4096 2012-07-07 15:40 songs
drw-r--r--   2 jura jura     4096 2012-07-07 18:44 videos




------------------------------------------------------------------------------------------------------------------------
===[ Sharing Knowledge ]===   -  Obrigado - Thank you - Danke - Merci - Grazie - Gracias - arigatou gozaimasu
“We make a living by what we get, but we make a life by what we give.”  - Give and you will receive - just share :)
------------------------------------------------------------------------------------------------------------------------


Nenhum comentário:

Postar um comentário