Um usuário do Linux pode ter vários grupos de usuários principais?

2

Quantos grupos primários um usuário Linux individual pode ter? Se eles podem ter mais de um, como é possível atribuir vários grupos primários a um usuário? Se é apenas um, qual é a causa?

    
por Enkouyami 21.01.2016 / 05:26

4 respostas

1

Um usuário não pode ter mais do que o grupo principal. Por quê? Porque as APIs usadas para acessar passwd data a restringem a um grupo principal. Consulte man 3 getpwent :

The getpwent() function returns a pointer to a structure containing
the broken-out fields of a record from the password database (e.g.,
the local password file /etc/passwd, NIS, and LDAP).  The first time
getpwent() is called, it returns the first entry; thereafter, it
returns successive entries.

The passwd structure is defined in <pwd.h> as follows:

   struct passwd {
       char   *pw_name;       /* username */
       char   *pw_passwd;     /* user password */
       uid_t   pw_uid;        /* user ID */
       gid_t   pw_gid;        /* group ID */
       char   *pw_gecos;      /* user information */
       char   *pw_dir;        /* home directory */
       char   *pw_shell;      /* shell program */
   };

Nota: gid_t pw_git . A norma diz para pwd.h :

The <pwd.h> header shall define the struct passwd, structure, which shall include at least the following members:

char    *pw_name   User's login name. 
uid_t    pw_uid    Numerical user ID. 
gid_t    pw_gid    Numerical group ID. 
char    *pw_dir    Initial working directory. 
char    *pw_shell  Program to use as shell. 

The <pwd.h> header shall define the gid_t, uid_t, and size_t types as described in <sys/types.h>.

E na página em types.h :

nlink_t, uid_t, gid_t, and id_t shall be integer types.

Assim, os padrões restringem o ID do grupo primário a ser um único inteiro.

    
por 24.01.2016 / 19:41
3

Não, os grupos primários são únicos, ou seja, um usuário recebe exatamente um grupo principal. Isso se deve ao conceito de usuário e grupo do Unix. Nos primeiros dias do Unix, os grupos secundários foram adicionados muito depois. Se a designação de vários grupos estivesse presente no início do desenvolvimento do Unix, provavelmente não haveria distinção entre eles. Mas como é agora, você está simplesmente olhando para a herança do Unix.

N.B. A distinção entre os grupos primário e secundário não tem nada a ver com o formato /etc/passwd . Se o Unix / Linux suportasse vários grupos primários, o formato de /etc/passwd certamente refletiria isso. A forma como os grupos secundários são atribuídos através de /etc/group é na verdade uma muleta.

    
por 24.01.2016 / 17:12
2

Isso não é possível no linux / unix, o grupo primário é o quarto campo do arquivo / etc / passwd, que tem um formato particular:

username:*:userid:groupid:gecos:homedir:shell

O quarto campo não permite uma lista de inteiros.

As atribuições de grupos secundários estão em / etc / group. Lá é possível listar usuários em vários grupos.

    
por 22.01.2016 / 08:26
0

No Unix mais antigo, um usuário pertencia a apenas um grupo, registrado no arquivo /etc/passwd . Isto veio de processos rodando com os privilégios de um usuário e um grupo, a entrada deu para o shell iniciado no login.

Mais tarde, os usuários podem pertencer a grupos diferentes (para obter privilégios de acesso específicos do grupo). Houve um comando chgrp(1) para alterar o grupo, essencialmente iniciando um novo shell com o novo usuário + grupo. O arquivo /etc/group listou os grupos aos quais um usuário poderia pertencer (e senhas para alterar para o grupo, conforme aplicável). O grupo padrão, registrado em /etc/passwd , foi chamado de grupo principal .

Novos sistemas Unix ganharam uma variedade de bancos de dados para registrar dados de usuários / senhas, continuarei falando sobre /etc/passwd e /etc/group para simplificar, hoje os detalhes variam com configurações específicas. O formato dos arquivos mudou muito pouco desde os anos 80, e com eles os significados gerais dos vários campos estão gravados em pedra. As APIs do Unix para acessar os dados do usuário ainda dependem do layout desses arquivos.

Mesmo depois, os processos podem pertencer a vários grupos ao mesmo tempo. Assim, os processos do usuário (a partir do shell de login) pertenciam a vários grupos simultaneamente, obtendo todos os grupos aos quais o usuário pode pertencer de /etc/group .

A partir da discussão anterior, em sistemas Unix modernos, um usuário pode pertencer apenas a um grupo primário (por força do formato de arquivo legado), mas a distinção entre grupos primários e secundários praticamente desapareceu.

    
por 24.01.2016 / 23:09