Por que a saída de 'groups' é diferente de 'groups user' se eu estiver atualmente logado como usuário?

14

Não sei por que os seguintes itens têm resultados diferentes. Meu entendimento é que grupos sem especificar um usuário fornecem todos os grupos dos quais o usuário atualmente logado é membro.

jacob@box:~$ groups
jacob adm lp dialout cdrom plugdev lpadmin sambashare

jacob@box:~$ groups jacob
jacob : jacob

Além disso, o que significa "grupos do processo atual" (da página de manual de grupos)? Onde eles estão configurados?

OBSERVAÇÃO: Minha distro é Ubuntu.

    
por Jake 08.06.2011 / 19:37

2 respostas

7

Pode ser um dos seguintes:

  • Poderia ser um bug (embora eu duvide)
  • Talvez você precise fazer logout e fazer login novamente

Os grupos estão definidos no /etc/group .

    
por 08.06.2011 / 19:43
6

Assim como todo processo tem um ID de usuário real e efetivo atual e um ID de grupo real e efetivo, ele também tem um lista de grupos suplementares . Estes são números (não nomes), todos mantidos pelo kernel. Eles são definidos pelo processo de login (ou gerenciador de exibição) quando você o registra, assim como seu ID do usuário. Eles são herdados por subprocessos, assim como seu ID de usuário.

Quando você executa groups sem argumentos, ele finalmente invoca getgroups () para obter a lista de grupos suplementares do kernel. (No meu sistema Linux, / usr / bin / groups é um script de shell que executa "id -Gn", que por sua vez invoca getgroups ().)

Quando você executa groups username , o comando tem que "adivinhar" quais serão os grupos suplementares quando o usuário efetuar login. Geralmente, ele faz isso lendo / etc / group ou falando com o NIS ou falando com o nscd ou .. Bem, há muitas maneiras de funcionar.

O que você está observando é semelhante a descobrir que seu ID de usuário real atual e sua entrada em / etc / passwd são inconsistentes. Isso significa que há algo um pouco estranho na configuração do seu sistema, mas é difícil dizer o que sem mais investigação.

    
por 08.06.2011 / 19:54