UNIX - Como dar direitos de usuário sobre outro usuário e, portanto, não preciso sudoar ou digitar a senha?

5

Eu tenho 2 usuários em questão

git usuário - usado para a gitosis - então é um usuário Sem senha e pode ser acessado somente pelo root ...

usuário usuário - onde meus arquivos residem

então o que eu gostaria de fazer é dar ao usuário git os direitos para navegar para uma pasta luddico como esta

[email protected]:~/respositories# cd /home/user/websites/domain.com

e, em seguida, executar qualquer ação dentro dos arquivos do usuário usuário (qualquer arquivo / pasta) então dessa maneira eu posso por exemplo

[email protected]:/home/user/websites/domain.com#  git pull

porque, na verdade, a ação mencionada acima retorna:

error: cannot open .git/FETCH_HEAD: Permission denied

então, quando eu pedir por ações como essa, ela solicita a senha do git, que não tem nenhuma, ou cancela-a imediatamente

so Como eu poderia configurar o usuário git para ter direitos root / admin sobre o usuário user sem precisar fornecer nenhuma senha ou sudo antes dos comandos? como se fosse root

  • Seria ainda melhor se houvesse uma maneira de permitir comandos específicos de git para usuário

Obrigado antecipadamente

    
por zanona 29.01.2010 / 13:24

2 respostas

5

Como solicitado, um pouco de tutorial sobre grupos. Espero que isso não seja muito elementar.

Por padrão, a maioria das contas de usuário também faz parte de um grupo com o mesmo nome. Para determinar de quais grupos uma conta é membro, use o comando groups.

# groups root
root : root bin daemon sys adm disk wheel

O primeiro listado é o grupo principal e será o proprietário do grupo padrão de todos os arquivos criados pelo usuário. Isso é listado na saída de ls como a segunda entrada 'root'.

# touch testfile
# ls -l testfile
-rw-r--r--  1 root root 19 Jan 29 08:37 testfile

Para adicionar um usuário a um grupo, você usa o usermod como mostrado. O sinalizador "-g" minúsculo que você deu altera o grupo primário. Talvez seja melhor alterar apenas um secundário, usando o sinalizador "-G" e "-a". Ou seja, colocar o usuário git no grupo de luddico.

# usermod -G luddico -a git
# groups git
git : git luddico

Isso deve dar acesso ao git a todos os arquivos pertencentes ao grupo luddico e ter as permissões de grupo apropriadas. Permissões de grupo são o segundo conjunto "rwx" listado em ls. O testfile que mostrei acima apenas permite acesso de leitura pelo grupo raiz. Se você quisesse que todos os membros desse grupo escrevessem acesso, você teria que usar o chmod para isso.

# ls -l testfile
-rw-r--r--  1 root root 19 Jan 29 08:37 testfile
# chmod g+w testfile
# ls -l testfile
-rw-rw-r--  1 root root 19 Jan 29 08:37 testfile

Agora, qualquer pessoa no grupo raiz pode ler ou gravar no testfile. Aplique o mesmo conceito aos arquivos de Luddico.

    
por 29.01.2010 / 15:45
3

Se você deseja conceder a um usuário (como o git em seus exemplos) acesso ao espaço de outro usuário, coloque-o no mesmo grupo e defina os direitos de grupo de acordo.

Se você precisa de uma funcionalidade de lista de controle de acesso mais complexa, você deve procurar ACLs POSIX como fornecidos por getfacl (1) e setfacl (1).

    
por 29.01.2010 / 13:36