Os usuários de um grupo podem acessar um arquivo que está no diretório pessoal de outro usuário?

5

Eu tenho 3 usuários A , B e C dentro de um grupo 'admin'. Eu tenho outro usuário ' D ' em cujo diretório base, há uma pasta project . Fiz D como o proprietário dessa pasta e designei 'admin' como o grupo usando chgrp . O grupo e os proprietários têm todas as permissões, mas ainda assim A , B ou C não conseguem acessar a pasta. Eu tenho duas perguntas:

  1. É possível que outros usuários acessem qualquer coisa no diretório de outro usuário

  2. Dar direitos a um grupo apenas faz com que os usuários desse grupo tenham acesso a arquivos que estão fora do diretório pessoal de qualquer usuário?

Editar : Veja como defini o proprietário e o grupo do projeto

sudo chown -R D project
sudo chgrp -R admin project

Eu recebi um erro ao tentar entrar na pasta project dentro do diretório pessoal do D (enquanto estava logado como A )

cd /home/D/project
-bash: cd: /home/D/project: Permission denied

Aqui está a saída do comando ls -la :

drwxrwsr-x 7 D admin      4096 Nov 18 13:06 project

Aqui está a descrição do grupo admin :

getent group admin
admin_users:x:501:A,B,C

Observe também que o grupo admin não está listado quando digito groups do usuário D , mas ficou visível quando usei cut -d: -f1 /etc/group . O usuário a que me refiro como D é, na verdade, ec2-user (o usuário padrão do Fedora nos servidores da Amazon)

Por fim, estou configurando um repositório git em um servidor. Eu criei o repo no diretório inicial do D , mas desejo que A , B e C tenham acesso para isso também (e cloná-los)

    
por Daud 20.11.2015 / 08:32

2 respostas

4

Alguns pontos que parecem ser necessários (embora eu admita livremente que não sou especialista nesses assuntos), e que não foram abordados na resposta admiravelmente completa de Robert L..

  1. Verifique se os outros usuários realmente fizeram login no grupo admin :

A$ newgrp admin

Como os usuários já estão no grupo, acho que você não precisará definir uma senha de grupo. Se você fizer:

A$ sudo chgpasswd
admin:secret (typed into stdin)

  1. Certifique-se de que o diretório pessoal do D esteja no grupo admin e seja pesquisável em grupo.

D$ chgrp admin ~
D$ chmod g+x ~
D$ ls -lad ~
drwx--x--- 3 D admin 4096 Nov 24 19:25 /home/D

O diretório precisa ser pesquisável para permitir que os usuários entrem nele ou em seu subdiretório project . Ele não precisa ser group- legível , então os próprios nomes de arquivos D ainda são privados. Para permitir que os outros usuários acessem project facilmente, faça com que eles criem links simbólicos para ele; caso contrário, eles terão que digitar o caminho inteiro a cada vez (o preenchimento automático não funcionará porque o shell não pode ler o nome do caminho, ele só pode ir para ele).

    
por 25.11.2015 / 02:06
7
  1. Sim, é possível que os usuários acessem arquivos no diretório inicial de outros usuários.
  2. Não, não há tratamento especial de diretórios pessoais fora das permissões de arquivo do sistema. " Dar direitos a um grupo " envolve duas partes, concedendo a propriedade do grupo e definindo permissões de grupo. Seu exemplo lida apenas com propriedade.

Você pode definir permissões recursivamente com o comando chmod , mas isso por si só pode não garantir que novos arquivos criados por um membro do grupo sejam acessíveis aos outros.

Obrigado pela conta do que você fez até agora, com detalhes adequados, e por declarar sua meta de compartilhar git repositórios.

Primeiro, vamos ver como realizar o compartilhamento de arquivos de grupo no Unix e no Linux de uma maneira geral e, em seguida, examinar algumas considerações sobre git .

Configuração básica de compartilhamento de arquivos em grupo

Aqui estão alguns princípios básicos deste tipo de compartilhamento de arquivos no Unix e no GNU, etc. Esta é uma maneira simples de configurar um ou mais diretórios onde todos os membros de um grupo tenham permissões de leitura e gravação em arquivos criados por outros usuários. no grupo.

Vamos supor que seu grupo de usuários comum seja gitusers e o diretório seja repo .

  1. Coloque os membros de compartilhamento em um grupo comum (por exemplo, gitusers ).

  2. Defina umask 002 para todos os usuários do grupo, indicando que a maioria dos arquivos será gravada em grupo por padrão. Isso pode ser definido em vários arquivos de inicialização do shell (como /etc/bash.bashrc ). Nos sistemas GNU / Linux, consulte man 8 pam_umask e man umask para mais e melhores informações.

  3. Defina a propriedade do grupo recursivamente ( -R ) em todos os arquivos compartilhados:

    chgrp -R gitusers repo
    
  4. Defina permissões de leitura e gravação de grupo recursivamente em todos os arquivos:

    chmod -R g+rw repo
    
  5. Defina o set group id on execution bit ( setgid ) do repositório e todos os subdiretórios. O setgid indica que os arquivos e subdiretórios recém-criados nesse diretório herdam a mesma propriedade do grupo que o diretório pai. Novos subdiretórios também têm o setgid bit definido, para um efeito recursivo:

    find repo -type d -exec chmod g+s {} \;
    

Após as etapas acima, você deve estar no caminho certo para todos os usuários do mesmo grupo gitusers no exemplo, para ler e gravar os arquivos uns dos outros, e não permitir permissão de gravação para usuários que não estejam no compartilhamento gitusers grupo. Você pode replicar o comando chown , chmod e find em quantos diretórios desejar, para qualquer finalidade de compartilhamento desejada, não apenas git .

Compartilhando git Repositórios

Parece que git pode funcionar bem apenas com as alterações de configuração acima. No entanto, git também conhece as permissões de compartilhamento e grupo (e pode realmente fazer algumas das opções acima para você).

Se você estiver criando um repositório git compartilhado, considere estas opções:

git init --bare --shared=group  repo

Se você tiver um repositório existente, considere estas configurações:

  1. core.bare
  2. core.sharedRepository = group

Veja a página git-init man e a página git-config man para mais detalhes.

Notas

Embora um repositório git compartilhado, em grupo, cuide de algumas das mesmas etapas do exemplo geral, recomendo executar as etapas no exemplo geral, bem como garantir consistência e facilidade na configuração quaisquer outros diretórios compartilhados.

    
por 20.11.2015 / 09:03