Como aplicar alterações de grupos de usuários recém-adicionados sem precisar reiniciar? [duplicado]

36

Suponha que eu esteja logado com o usuário takpar :

takpar@skyspace:/$

Como root, adicionei takpar como membro do grupo webdev usando:

# usermod -a -G webdev takpar

Mas parece que não foi aplicado porque, por exemplo, não consigo entrar no diretório webdev que tem permissão de leitura para o grupo:

400169 drwxr-x--- 3 webdev webdev 4.0K 2011-08-15 22:34 public_html

takpar@skyspace:/home/webdev/$ cd public_html/
bash: cd: public_html/: Permission denied

Mas depois de uma reinicialização, tenho acesso como esperado. Como esse tipo de mudança de grupo está na minha rotina, existe alguma maneira de aplicar mudanças sem precisar de uma reinicialização?

Resposta Parece que não há como fazer com que a sessão atual conheça o novo grupo, por exemplo, o gerenciador de arquivos não funcionará com novas alterações. Mas um novo login fará o trabalho. O comando su também é apropriado para comandos temporários na sessão atual.

    
por Alexar 15.08.2011 / 20:45

3 respostas

50

Solução local: use su yourself para fazer login novamente. Na nova sessão, você será considerado um membro do grupo.

As páginas do manual para newgrp e sg também podem ser interessantes para alterar seu ID de grupo atual (e fazer login em um novo grupo):

  • Para usar o ID de grupo (e privilégios) de webdev no seu uso atual de shell:

     newgrp webdev
    
  • Para iniciar um comando com algum id de grupo (e manter os privilégios atuais no seu shell) use:

     sg webdev -c "command"
    

    ( sg é como su , mas para grupos, e deve funcionar sem a senha do grupo se você estiver listado como membro do grupo nos dados do sistema)

por 15.08.2011 / 20:55
2

O sistema de reinicialização é um exagero, até mesmo o logout & login não é necessário se você usar gpasswd .

Você pode adicionar takpar a webdev group usando:

$ gpasswd -a takpar webdev

Você pode verificar a associação ao grupo usando o comando getent group {name} :

$ getent group webdev
webdev:x:1008:webdev,takpar

que deve ser o mesmo que cat /etc/group | grep webdev . Para completar, aqui está a id da sessão% shell_de takpar :

$ id takpar
uid=1007(takpar) gid=1007(takpar) groups=1007(takpar),1008(webdev)
    
por 18.11.2016 / 15:11
1
id webdev

parece estar errado aqui - você quer saber sobre o seu próprio id , takpar , não webdev .

Se você comparar as saídas de id e id takpar , você notará que a primeira não mostra a alteração ainda, enquanto a segunda mostra a saída. Por quê? Isso ocorre porque id mostra os grupos do processo atual. Se você sair e voltar, ou mesmo apenas abrir uma nova janela de terminal, você já deve ver a mudança sem reiniciar.

    
por 15.08.2011 / 20:54