Até onde eu sei, todas as variantes unix possuem um arquivo /etc/passwd
com o layout tradicional, para aplicações que lêem o arquivo diretamente. Cada linha no arquivo contém registros separados por dois pontos, que correspondem aos campos struct passwd
:
- nome de usuário (login)
- senha criptografada (se presente)
- ID do usuário (número, em decimal)
- ID do grupo principal (número, em decimal)
- campo Gecos . Este campo não é usado por programas do sistema, exceto para fins de exibição. Normalmente, é uma lista de campos separados por vírgula, sendo os três primeiros o nome completo, o número do escritório e o número de telefone.
- diretório inicial
- shell de login
Uma coisa que varia entre os sistemas é quanta liberdade você pode ter com a sintaxe. Por exemplo, o GNU libc (isto é, o Linux) ignora as linhas que começam com #
: elas são comentários. O GNU libc também ignora os espaços em branco no início de uma linha, para que eles possam ser recuados. Uma linha inválida pode fazer com que os programas parem de processar o arquivo ou pule para a próxima linha.
A maioria dos sistemas modernos não armazena mais uma senha criptografada no segundo campo. O conteúdo desse campo não é uma indicação confiável de se o usuário tem um conjunto de senhas (e mesmo se você descobrir isso, essa não é uma indicação confiável de que o usuário possa efetuar login, pois há muitos outros métodos de autenticação, como Chaves SSH, senhas de uso único, biometria, smartcards,…).
Quando as senhas não estão em /etc/passwd
, elas são dependentes do sistema. A Rosetta Stone para Unix menciona muitas variantes unix.
- O Solaris usa
/etc/shadow
, e isso foi copiado por outros, incluindo o Linux. Os arquivos de sombra do Linux e Solaris possuem o mesmo formato; Não sei se os outros sistemas que possuem um arquivo chamado/etc/shadow
usam o mesmo formato. - Os sistemas BSD têm
/etc/master.passwd
e, além disso, possuem banco de dados arquivos para acesso mais rápido, atualizados porpwd_mkdb
.
Lembre-se de que /etc/passwd
não tem garantida a lista completa de usuários por algumas décadas: os usuários podem vir de outros bancos de dados, como NIS (YP) ou LDAP . Como administrador do sistema, evite editar diretamente o arquivo /etc/passwd
; use vipw
em vez disso, se o seu sistema o fornecer (e se ele não for Consulte seus manuais para saber qual método é recomendado para modificar o banco de dados do usuário).
O que escrevi acima também é válido para grupos. Os campos em /etc/group
são struct group
membros: nome do grupo, senha (em grande parte não utilizado), ID de grupo numérico e uma lista separada por vírgula de nomes de usuários (os usuários que têm esse grupo como grupo secundário). O Linux tem um arquivo /etc/gshadow
, mas isso raramente é usado, já que a autenticação de grupo não é amplamente praticada.