terça-feira, 24 de janeiro de 2012

Linux - permissões especiais para arquivos e pastas

Vou compartilhar uma situação que passei esta semana. Criei um compartilhamento no samba onde o usuário teria acesso somente as pastas no servidor pertencentes ao seu grupo, ex: ADM, Informática... etc.

O problema é que, quando algum usuário cria um arquivo dentro do compartilhamento as permissões por padrão são configuradas da seguinte forma:

-rwxrwx---  1 marcelo marcelo  55 2005-01-20 16:46 teste.txt
 

Verificando a permissão podemos ver que o usuário marcelo e o grupo marcelo são 
donos do arquivo. Isto ocorre porque, sempre que adicionamos um usuário é criado por padrão um grupo 
com o próprio nome do usuário. Quando o usuário cria um arquivo o dono passa a ser o grupo com o nome
dele.
Se outro usuário do mesmo setor tentasse editar ou excluir o arquivo uma mensagem
de erro aparecia informando que para editar era preciso autorização do usuário marcelo.
Isto se tornaria um impecilho, pois sempre seria preciso atualizar os arquivos da pasta para que o grupo 
dono do arquivo fosse Informatica.
 
Para contornar esta situação existem as permissões especiais.
Para que sempre que um usuário criar um arquivo ou pasta dentro do compartilhamento o grupo dono
seja Informatica(ou outro grupo que queira configurar) é só adicionar o atributo SGID. 
  
Isso é feito adicionando o número 2 antes da permissão.
Ex: para dar permissão total para o usuário e grupo e retirar o acesso para os outros usuários a permissão
seria: 
chown Informatica nome_da_pasta_compartilhada; 
chmod 2777 -R nome_da_pasta_compartilhada.
 
Se após isso usar o comando para listar com detalhes ls -l obterá a seguinte informação:
 drwxrws--- 2  marcelo CTI 4096 Jan 24 22:20 teste
 -rwxrws--- 1   marcelo CTI    55  Jan 24 22:20 teste.txt

Veja que o usuário dono é marcelo e o grupo CTI tanto para pasta quanto para o arquivo criado. Veja também
que surgiu um s na permissão do grupo que significa que o SGID está ativado. 
Com isso todos que pertencerem ao grupo teram acesso total ao arquivo e os outros setores não poderam 
acessar.
 
Para que a dica funcione é preciso inserir as linhas abaixo em cada compartilhamento

 em /etc/samba/smb.conf:

 inherit permissions = yes 
           #acrescente o SGID e a permissão para os arquivos, no meu caso dei permissão para usuário e          grupo
          
          create mask = 2770
         
          #acrescenta o SGID e a permissão para o diretório, no meu caso dei permissão para usuário e           grupo

           directory mask = 2770
 


       

Espero que tenha ajudado!

 

Nenhum comentário:

Postar um comentário