Permissões de grupo incompatíveis no Linux - É um bug? [duplicado]

0

Estou no Ubuntu 11.04. Estou criando outro usuário e colocando um usuário existente no grupo de outro usuário, esperando escrever no diretório home de outro usuário.

# uname -a
Linux vini 2.6.38-11-generic #50-Ubuntu SMP Mon Sep 12 21:18:14 UTC
2011 i686 athlon i386 GNU/Linux
# whoami
sachin
# su root
# useradd -m -U foo               // create user foo
# usermod -a -G foo sachin      // add user 'sachin' to group 'foo'
# chmod 770 /home/foo/
# exit
# whoami
sachin
# cd /home/foo/
bash: cd: /home/foo/: Permission denied
# groups sachin
sachin : sachin foo

Isso é totalmente estranho. Embora o sachin do usuário esteja no grupo foo, e os bits do grupo para / home / foo / estejam configurados como rwx, o sachin não pode acessar / home / foo /. Eu não sou capaz de entender isso.

Mas, se na etapa de saída, eu alternar para usuário sachin da raiz, isso é o que acontece:

# uname -a
Linux vini 2.6.38-11-generic #50-Ubuntu SMP Mon Sep 12 21:18:14 UTC
2011 i686 athlon i386 GNU/Linux
# whoami
sachin
# su root
# useradd -m -U foo               // create user foo
# usermod -a -G foo sachin      // add user 'sachin' to group 'foo'
# chmod 770 /home/foo/
# su sachin
# whoami
sachin
# cd /home/foo/
# ls
examples.desktop

Agora, o que está acontecendo aqui é totalmente incompreensível. O su sachin herda algumas permissões do usuário root nesta etapa?

Uma solução sugerida foi usar newgrp , que atualiza o grupo e outras informações do usuário. Então, se eu fizer newgrp - sachin , eu obtenho acesso ao diretório do usuário recém-criado, mas se eu criar mais um usuário e seguir as mesmas etapas, sachin não terá acesso ao diretório de usuários mais recente.

Esse comportamento é de fato muito desconcertante.

Qualquer explicação seria muito apreciada.

    
por Sachin 17.06.2012 / 12:29

1 resposta

4

Seu processo de shell de login atual mantém a configuração de grupo anterior. Especialmente, compare a saída de

groups sachin

com

groups

Após o logout e login, a diferença desapareceu.

Se você não pode relogar devido a razões não claras para mim, você tem que colocar em cascata o material newgrp . Imternalmente, newgrp não faz nada além de "relogar em" em uma nova camada de processos. Se você sair, você tem que pressionar Ctrl-D sempre que você tiver coisas newgrp em execução.

Como alternativa, você encerra a camada newgrp interna e inicia outra depois de usermod . Então você novamente tem acesso ao atual conjunto de grupos.

    
por 17.06.2012 / 18:16