você está aqui: Home  → Arquivo de Mensagens

Adicionar usuários que iniciam com números no linux

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.



 

 

Veja a relação completa dos artigos de Amauri Tiago Marx

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script