Porque não é responsabilidade da glibc. delegados glibc para outros serviços instalados no sistema para autenticação; se qualquer coisa seria aqueles que forneceriam a capacidade de modificar o userdb.
Por que a glibc não fornece biblioteca padrão para modificar / etc / passwd e / etc / shadow, ou seja, adicionar um usuário, alterar passwd,
Cheguei a essa conclusão porque verifiquei o código-fonte de shadow
e não consegui encontrar essa interface
Porque não é responsabilidade da glibc. delegados glibc para outros serviços instalados no sistema para autenticação; se qualquer coisa seria aqueles que forneceriam a capacidade de modificar o userdb.
Você está começando com uma suposição aqui, que é que /etc/{passwd,shadow,group}
é sempre o ponto único de verdade ( SPOT) para informações do usuário em caixas Unix. Isso não é verdade desde meados da década de 1980, quando a Sun introduziu o NIS .
As APIs de caso inverso existem: getpwnam(3)
e amigos. Se o SPOT do seu site para os dados do usuário for um servidor LDAP , é fácil ver como você reduziria seu produto rico para mostrar apenas as coisas que existem em /etc/{passwd,shadow}
.
Mas você quer uma API que faça o contrário. Como você implementaria setpwnam(3)
em um mundo onde você não sabe se o armazenamento de dados de back-end é /etc/*
, ou NIS, ou NIS + , ou LDAP, ou ActiveDirectory ou ...? Você pode filtrar krill de um oceano, mas você não pode obter metros cúbicos de oceano de um balde de krill.
Resposta simples, se você pensar sobre isso, não pode haver biblioteca padrão C para interagir com eles, simplesmente porque eles não são recursos padrão C. Como isso funcionaria no Windows?