Como posso compartilhar um diretório com outro usuário?

8

Não quero que a pasta compartilhada seja acessível por ninguém no sistema, quero que seja acessível apenas para um conjunto restrito de usuários.

Como eu faço isso?

Emanuele
fonte

Respostas:

9

Retirado deste excelente post no Ubuntu Forums por Morbius1.

A maneira clássica do Linux de fazer esse tipo de coisa é mais ou menos assim:

  1. Crie a pasta compartilhada:

    sudo mkdir /home/Shared
    
  2. Crie o novo grupo de usuários:

    sudo addgroup newgroup
    
  3. Altere a propriedade da pasta compartilhada para o novo grupo:

    sudo chown :newgroup /home/Shared
    
  4. Adicione os usuários desejados a esse grupo:

    sudo adduser user1 newgroup
    

Repita para todos os usuários.

Agora você tem que tomar algumas decisões sobre o que deseja que esses usuários possam fazer:

  • [a] Todos os usuários do grupo podem adicionar e excluir da pasta e podem ler e não gravar nos arquivos uns dos outros:

    sudo chmod 0770 /home/Shared
    
  • [b] O mesmo que acima, mas apenas o proprietário do arquivo pode excluí-lo:

    sudo chmod 1770 /home/Shared
    
  • [c] Todos os usuários do grupo podem adicionar e excluir da pasta e podem ler e gravar nos arquivos uns dos outros:

    sudo chmod 2770 /home/Shared
    
  • [d] O mesmo que [c], exceto que apenas o proprietário do arquivo pode excluí-lo:

    sudo chmod 3770 /home/Shared
    

A 1na primeira posição do comando chmod é o bit que impede a exclusão de um arquivo para qualquer pessoa que não seja o proprietário.

A 2na primeira posição do comando chmod é o bit setgid que força todos os arquivos novos ou copiados a terem o grupo dessa pasta.

A 3na primeira posição do comando chmod é a combinação dos bits sticky ( 1) & setgid ( +2).

Há uma ressalva em tudo isso no que diz respeito ao bit setgid. Todos os novos arquivos criados e todos os arquivos copiados para essa pasta herdarão o grupo da pasta. Mas não os arquivos foram movidos para essa pasta. Os arquivos movidos mantêm a propriedade de onde foram movidos. Uma maneira de superar esse problema é usar o bindfs.

Finalmente, se você deseja que outras pessoas fora do grupo possam ver os arquivos, mas não os altere, altere o 0 final no chmodcomando para 5, por exemplo:

sudo chmod 0775 /home/Shared
Warren Hill
fonte