É necessária uma reinicialização para atualizar as permissões após adicionar um usuário a um novo grupo?

26

No servidor ubuntu, notei mais de uma vez agora que, depois de adicionar um usuário a um grupo, ele não tem permissões de grupo até eu reiniciar o sistema. Por exemplo:

O usuário 'hudson' precisa de permissão para ler o diretório 'root: shadow / etc / shadow'. Então, adiciono hudson ao grupo shadow. Hudson ainda não sabe ler. Então, eu 'sudo shutdown -h -r now' e quando o sistema aparece novamente, o usuário hudson pode ler.

É necessária uma reinicialização ou existe uma maneira melhor de obter permissões aplicadas depois de adicionar o usuário ao grupo?

Michael Prescott
fonte
para referência futura, adicionamos uma solução real abaixo. Fiquei surpreso que isso fosse um problema. Espero que ajude.
TryTryAgain

Respostas:

25

Eu estava procurando uma solução, me deparei com este post e depois encontrei um!

Eu pensei que realmente ofereceria uma solução para que outros possam se beneficiar. Entrar e sair é tão 1995.

Tirado de:

https://arkaitzj.wordpress.com/2010/03/08/linux-add-user-to-a-group-without-logout/

Portanto, se você precisava obter permissões para o cdromgrupo, acabou de adicionar seu usuário:

newgrp cdrom 

por exemplo

Portanto, as etapas seriam:

#adduser my_user cdrom

e depois

$newgrp cdrom

Eu confirmei que funciona.

Uma $groupsverificação simples da CLI mostra que o usuário está no grupo. E uma execução rápida com os privilégios necessários desse grupo funciona.

Não há necessidade de matar o seu windows e faça o login e logout! Espero que ajude os outros!

Informações adicionais (com base no comentário útil de jytou): "[Esta] solução funcionará apenas para o shell aberto atual. Se você tiver outro shell aberto, precisará usar o mesmo comando para levar em consideração as alterações."

TryTryAgain
fonte
1
Isso é ótimo, realmente funciona !!! : D
dadexix86
3
Observe que a solução do TryTryAgain funcionará apenas para o shell aberto atual. Se você tiver outro shell aberto, precisará usar o mesmo comando para levar em consideração as alterações.
jytou
Enfim, fazer isso para a sessão em execução no X?
Artfulrobot
@artfulrobot desculpe, não sei exatamente o que você quer dizer. Você pode abrir uma nova pergunta e fazer referência a esta postagem e solução para melhor ajudá-lo.
TryTryAgain
19

Ao adicionar um usuário a um novo grupo, o usuário deve efetuar logoff e logon novamente para que isso tenha efeito. Embora uma reinicialização o consiga, isso não deve ser necessário.

Scott Pack
fonte
Como faço logout de um usuário que foi criado pelo aptitude ao instalar um pacote?
Michael Prescott
Qual pacote cria o hudsonusuário?
Womble
Como Justin respondeu, tente parar e iniciar o serviço.
Scott Pack
Isto é o que eu faço. Simplesmente efetue logout e logon novamente.
Trent Scott
Na verdade, você não precisa sair e entrar novamente, felizmente. Eu ofereci uma solução funcional abaixo. Testado e FELIZ!
TryTryAgain 13/03/12
8

Adicionar um usuário a um grupo não afeta os usuários conectados no momento.

No caso de um daemon, é necessário reiniciá-lo para que novos grupos sejam aplicados.

Além disso, reiniciar o daemon usando uma opção no próprio daemon não funcionará, pois herdará o ambiente atual.

A maneira mais fácil de fazê-lo funcionar é parar completamente o daemon e iniciá-lo novamente, como em ..

/etc/init.d/foo stop ; /etc/init.d/foo start
Justin
fonte
4

isso é muito mais fácil, você pode verificar seu nível de acesso atual digitando:

id

para recarregar seus grupos, você só precisa de:

su - $USER

depois disso, verifique novamente o nível de acesso:

id

e você verá um novo grupo agora ativo.

wikrie
fonte
1

Há um modo de falha diferente que também deve ser abordado aqui.

Se o administrador atualizou, /etc/groupmas não conseguiu atualizar /etc/gshadow(em sistemas com essa configuração), o logout e o logon novamente não o atribuirão ao novo grupo.

De maneira confusa, groupsmostrará a situação real e atual, enquanto idimprimirá incorretamente a saída, o que indica que você é um membro do grupo corretamente.

tripleee@vbvntv$ groups
tripleee

tripleee@vbvntv$ id
uid=1234(tripleee) gid=1234(tripleee) groups=1234(tripleee),4(adm)

tripleee@vbvntv$ ls -l /var/log/mail.log
-rw-r----- 1 root adm 15728 May 26 14:26 /var/log/mail.log

tripleee@vbvntv$ tail /var/log/mail.log
tail: cannot open `/var/log/mail.log' for reading: Permission denied

Não posso usá- newgrplo porque ele solicita uma senha e não tenho uma senha, apenas autenticação de chave pública SSH.

A solução seria o administrador reverter a edição manual /etc/groupse, em seguida, fazê-lo novamente com sudo gpasswd -a tripleee adm; ou, alternativamente, usar grpconvpara mesclar as alterações (que peguei em /server//a/389719/98333 )

triplo
fonte
Na verdade, o problema real era que eu estava reutilizando uma sessão principal do SSH . Desconectar isso removendo o soquete ControlPath e fazendo login novamente resolveu o problema.
Tripleee 26/05