De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Amauri Tiago Marx
Data de Publicação: 30 de junho de 2008
Na universidade onde trabalho, surgiu a necessidade de incluir usuários no linux (logins) que iniciassem com números (por exemplo: 10767).
Pesquisando no oráculo (google), verifiquei que diversas pessoas também têm essa necessidade, porém não encontrei solução para isso.
Usufruindo do conceito open source, resolvi estudar como funciona a validação no momento da inclusão dos usuários no sistema.
Bom, primeiramente, procurei em qual pacote se encontrava o comando useradd, o qual é responsável pela inclusão dos usuários e verifiquei que ele está contido no pacote shadow.
Como utilizo a distribuição Slackware, baixei o código fonte do shadow (no meu caso, shadow-4.0.3.tar.bz2) no site da distribuição.
Descompactei o pacote e comecei a fuçar um pouco no código.
Mesmo não tendo conhecimentos avançados de programação, não foi difícil chegar ao arquivo (de nome bem explicativo) chkname.c, localizado dentro da pasta libmisc.
Também não foi difícil achar a rotina de validação (de nome também muito informativo). Procure pelo seguinte bloco de códigos:
good_name(const char *name) { /* * User/group names must match [a-z_][a-z0-9_-]* */ if (!*name || !((*name >= 'a' && *name <= 'z') || *name == '_')) return 0; while (*++name) { if (!((*name >= 'a' && *name <= 'z') || (*name >= '0' && *name <= '9') || *name == '_' || *name == '-' || (*name == '$' && *(name+1) == NULL))) return 0; } return 1; }
Então é só alterar essa função para permitir a inclusão de números também no início ou comentar o bloco inteiro, fazendo a função retornar sempre o número 1 (ou seja, o usuário sempre será validado). Neste caso, a função ficaria conforme a seguir:
good_name(const char *name) { /* * User/group names must match [a-z_][a-z0-9_-]* */ return 1; }
Após estes procedimentos, é necessário compilar e instalar o pacote com os tradicionais make && make install.
Eu não sei o porquê do linux não permitir a inclusão de usuários iniciando com números no sistema. Talvez alguém que leia esse artigo possa me explicar (por favor, me envie um email).
Fica por aqui essa dica, espero ter contribuído para a comunidade.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários