Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

 

Aprenda inglês em casa

Baixe gratuitamente as duas primeiras aulas

English for Reading and Listening

Receba por email, diariamente, mensagens contendo materiais para leitura e audição, incluindo arquivos no formato MP3 gravados por falantes nativos.

Saiba mais e faça sua inscrição

Red Bug

Você está aqui: Home  → Arquivo Dicas-L

 

Formação de Analistas de Negócios

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Publicar em del.icio.us

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

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.08/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.1 /5 (118 votos)

Recomende este site
Recomendar este artigo


Versão para impressão


Opinião dos Leitores

Lone
22 Jul 2008, 08:49
esta abordagem sobre login de usuários é útil para quem quer conhecer o sitema operacional linux.
Jorge Pereira
05 Jul 2008, 17:12
Com certeza isto e uma pessima alternativa, pois o que eu iria comentar o Robson mencionou acima. um sugestão seria criar algo como

user0102
user1231

Humberto Sartini
01 Jul 2008, 11:30
Existe um jeito muito mais fácil, sem a necessidade de editar e compilar partes do sistema. É lógico a solução apresentada é muito interessante para entender como funciona o sistema, mais no dia a dia é mais fácil executar o seguinte comando:

adduser --force-badname 123

Ou então editar o arquivo "/etc/adduser.conf" e editar a variável "NAME_REGEX" para sua necessidade.
Robson
30 Jun 2008, 12:10
O linux (e os unix em geral) podem referenciar o usuario pelo login ou pelo id numerico. Por isso nao eh permitido criar usuarios cujo login seja soh numeros. As ferramentas vao comecar a se confundir se voce quer trocar a senha do usuario cujo login eh 1000 e o userid eh 2345 ou do usuario cujo login eh john e o userid eh 1000.
*Nome:
Email:
Me notifique sobre novos comentários nessa pagina
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Treina Linux -  Cursos de Linux e Video aulas

Cursos

Seja Palestrante no PHP Conference Brasil 2008
O principal evento de PHP da América Latina
Osasco-São Paulo
Data limite para submissão de Palestra: 31 de Agosto
Saiba mais

Biblioteca

Redes - Guia Prático
Por Carlos. E. Morimoto

Hardware - o Guia Definitivo
Por Carlos. E. Morimoto

Kurumin 7 - Guia Prático
Por Carlos. E. Morimoto

Linux: Ferramentas Técnicas, 2ed
Por Carlos. E. Morimoto

Use a Cabeça!: JSP & Servlets
Por Brian Bashan, Kathy Sierra, Bert Bates

Google Hacking
Por JOHNNY LONG

1808
Por Laurentino Gomes

Sistemas de Banco de Dados
Por Ramez E. Elmasri e Shamkant Navathe

Linux: Guia do Administrador do Sistema
Por Rubem E. Ferreira

A Menina que Roubava Livros
Por Markus Zusak

Sistemas Operacionais Modernos
Por Andrew S. Tanembaum

Hardware: Curso Completo
Por Gabriel Torres

PHP para Quem Conhece PHP
Por Juliano Niederauer

Redes de Computadores: Curso Completo
Por Gabriel Torres

Java: Como Programar
Por Harvey M. Deitel e Paul J. Deitel

O Caçador de Pipas
Por Khaled Hosseini

O Médico Doente
Por Dráuzio Varella

Enterprise Javabeans 3.0
Por Bill Burke, Richard Monson

MySQL - Guia do Programador
Por André Milani

Certificação Linux
Por Uira Ribeiro

Manual Completo do Linux: Guia do Administrador
Por Evi Nemeth, Trent R. Hein, Garth Snyder

OpenGL: uma Abordagem Prática e Objetiva
Por Marcelo Cohen, Isabel Harb Manssour

Expressões Regulares: Uma Abordagem Divertida
Por Aurélio Marinho Jargas

Extreme Programming
Por Vinicius Manhaes Teles