Criar e alterar usuários através de pagina PHP [RESOLVIDO]

1. Criar e alterar usuários através de pagina PHP [RESOLVIDO]

Vitor Silveira Rosa
vitorsrosa

(usa Debian)

Enviado em 10/02/2017 - 12:02h

Olá pessoal.

Eu estou querendo criar uma pagina em php que crie usuarios no Debian 7.8 e CentOS 6...
A minha intenção é disponibilizar uma pagina na minha intranet que permita que os usuários alterem as senhas em 2 bases distintas para mantê-las sincronizadas.

As bases são Samba4 e LDAP

Alguém poderia me ajudar, por favor?


  


2. Alguém?

Vitor Silveira Rosa
vitorsrosa

(usa Debian)

Enviado em 01/03/2017 - 17:51h

Alguem pode me ajudar por favor?
Eu estou tentando executar os comandos via SSH, porem sem sucesso.
para teste, criei uma pagina em HTML com um formulario que repassa a variável para o PHP:
<?php
$Usuario = $_POST["comando"];

$Result = shell_exec(('sudo ').$Usuario);
echo "<pre>$Result</pre>";

?>

<a href="PHPCommands.php">Voltar</a>

Quando coloco o comando ssh <ip>; ifconfig, ele me retorna que houve conexão mas o ifconfig retorna o IP local....
O que eu fiz de errado?? Por favor, me ajudem!


3. Re: Criar e alterar usuários através de pagina PHP [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 01/03/2017 - 18:05h

vitorsrosa escreveu:

Olá pessoal.

Eu estou querendo criar uma pagina em php que crie usuarios no Debian 7.8 e CentOS 6...
A minha intenção é disponibilizar uma pagina na minha intranet que permita que os usuários alterem as senhas em 2 bases distintas para mantê-las sincronizadas.

As bases são Samba4 e LDAP

Alguém poderia me ajudar, por favor?


Se são bases OpenLDAP por que não utilizar o phpLDAPadmin ou LDAP Account Manager?



4. Re: Criar e alterar usuários através de pagina PHP [RESOLVIDO]

Vitor Silveira Rosa
vitorsrosa

(usa Debian)

Enviado em 01/03/2017 - 18:15h

amarildosertorio escreveu:

vitorsrosa escreveu:

Olá pessoal.

Eu estou querendo criar uma pagina em php que crie usuarios no Debian 7.8 e CentOS 6...
A minha intenção é disponibilizar uma pagina na minha intranet que permita que os usuários alterem as senhas em 2 bases distintas para mantê-las sincronizadas.

As bases são Samba4 e LDAP

Alguém poderia me ajudar, por favor?


Se são bases OpenLDAP por que não utilizar o phpLDAPadmin ou LDAP Account Manager?


No caso, eu quero que os proprios usuarios alterem essas senhas.
Temos alguns técnicos que trabalham externamente e por conta da regra de validade de senhas, a cada 2 meses eles tem que ligar para a TI alterar. Isso acaba atrapalhando as nossas atividades no setor. Fazendo uma pagina PHP que altera a base openLDAP e Samba4 facilitaria em 2 aspectos:
1 - Tecnicos alteram externamente assim como todos os usuarios
2- Mantem as 2 bases sincronizadas já que o formulário é 1 só.


5. Re: Criar e alterar usuários através de pagina PHP [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 01/03/2017 - 18:17h

Projeto bacana ai.

https://github.com/ltb-project/self-service-password


6. Re: Criar e alterar usuários através de pagina PHP [RESOLVIDO]

Vitor Silveira Rosa
vitorsrosa

(usa Debian)

Enviado em 02/03/2017 - 12:09h

amarildosertorio escreveu:

Projeto bacana ai.

https://github.com/ltb-project/self-service-password


Então cara... eu ja vi esse projeto porém, ele não funciona com o Samba4 provisionado como AD.
O próprio site do Samba diz que o Samba4 como AD não é compatível com LDAP. Por esse motivo me surgiu essa necessidade de criar essa pagina que altere as 2 bases.
Eu ja tenho uma pagina funcionando que troca a senha na base LDAP... eu só preciso mesmo é de um codigo PHP que conecte via SSH em outra maquina e execute a seguinte Linha:

shell_exec(('( echo ').$Senha.(' ; echo ').$Senha_c.(' ) | ').('sudo smbpasswd -a ').$Usuario); 



7. Re: Criar e alterar usuários através de pagina PHP

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/03/2017 - 12:42h

vitorsrosa escreveu:

amarildosertorio escreveu:

Projeto bacana ai.

https://github.com/ltb-project/self-service-password


Então cara... eu ja vi esse projeto porém, ele não funciona com o Samba4 provisionado como AD.
O próprio site do Samba diz que o Samba4 como AD não é compatível com LDAP. Por esse motivo me surgiu essa necessidade de criar essa pagina que altere as 2 bases.
Eu ja tenho uma pagina funcionando que troca a senha na base LDAP... eu só preciso mesmo é de um codigo PHP que conecte via SSH em outra maquina e execute a seguinte Linha:

shell_exec(('( echo ').$Senha.(' ; echo ').$Senha_c.(' ) | ').('sudo smbpasswd -a ').$Usuario); 


A incompatibilidade é relacionado ao esquema de diretórios né?! Você utiliza o esquema do AD. O projeto mencionado suporta.


8. Re: Criar e alterar usuários através de pagina PHP

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/03/2017 - 12:49h

Em relação ao shell_exec, o sudo foi contextualizado com a diretiva NOPASSWD para o(s) usuário(s)? O disable_functions no php.ini não está negando exec e shell_exec? Já analisou algum log?


9. Re: Criar e alterar usuários através de pagina PHP [RESOLVIDO]

Vitor Silveira Rosa
vitorsrosa

(usa Debian)

Enviado em 02/03/2017 - 17:58h

amarildosertorio escreveu:

Em relação ao shell_exec, o sudo foi contextualizado com a diretiva NOPASSWD para o(s) usuário(s)? O disable_functions no php.ini não está negando exec e shell_exec? Já analisou algum log?


Amarildo, quanto ao que vc perguntou, tudo o que eu faço localmente via exec e shel_exec funciona. Inclusive comandos com o sudo.
O problema está quando eu tento rodar algo com o ssh... tipo:
seto a variavel $Usuario com o comando ssh root@xxx.xxx.xxx.135;ifconfig
O retorno que recebo é esse:
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
eth0 Link encap:Ethernet HWaddr 1a:76:a3:0e:e7:5c
inet addr:xxx.xxx.xxx.210 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::1876:a3ff:fe0e:e75c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:61630178 errors:0 dropped:0 overruns:0 frame:0
TX packets:227148 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:22890988306 (21.3 GiB) TX bytes:46142562 (44.0 MiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:7869 errors:0 dropped:0 overruns:0 frame:0
TX packets:7869 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:473380 (462.2 KiB) TX bytes:473380 (462.2 KiB)

OBS: O ip final 135 é o que eu quero acessar a partir da maquina final 210. O sudo já está inserido no contexto do comando onde está a variável $Usuario;

Eu só quero rodar o comando smbpasswd -a via ssh. O problema é que mesmo conectando, o comando é executado localmente


10. Re: Criar e alterar usuários através de pagina PHP

Perfil removido
removido

(usa Nenhuma)

Enviado em 02/03/2017 - 18:52h

* Teste

root@servidor ~]# cat /etc/sudoers.d/servicos
# Permissoes Usuario de servico 

amarildo ALL=(ALL)NOPASSWD: /sbin/ifconfig


root@servidor ~]# chmod 440 /etc/sudoers.d/servicos

$ ssh-keygen -t rsa -b 4096
$ ssh-copy-id amarildo@servidor

$ vim /tmp/teste.php
<?php
echo shell_exec("ssh amarildo@servidor 'hostname; sudo ifconfig'");
?>


$ php /tmp/teste.php
servidor.local
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.10 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::30c:29ff:gthb:47b7 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:db:47:b7 txqueuelen 1000 (Ethernet)
RX packets 41733939 bytes 10076133587 (9.3 GiB)
RX errors 0 dropped 604 overruns 0 frame 0
TX packets 23414087 bytes 12951115684 (12.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Loopback Local)
RX packets 31654587 bytes 341362906531 (317.9 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 31654587 bytes 341362906531 (317.9 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0




11. Re: Criar e alterar usuários através de pagina PHP

Vitor Silveira Rosa
vitorsrosa

(usa Debian)

Enviado em 03/03/2017 - 12:29h

amarildosertorio escreveu:

* Teste

root@servidor ~]# cat /etc/sudoers.d/servicos
# Permissoes Usuario de servico 

amarildo ALL=(ALL)NOPASSWD: /sbin/ifconfig


root@servidor ~]# chmod 440 /etc/sudoers.d/servicos

$ ssh-keygen -t rsa -b 4096
$ ssh-copy-id amarildo@servidor

$ vim /tmp/teste.php
<?php
echo shell_exec("ssh amarildo@servidor 'hostname; sudo ifconfig'");
?>


$ php /tmp/teste.php
servidor.local
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.10 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::30c:29ff:gthb:47b7 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:db:47:b7 txqueuelen 1000 (Ethernet)
RX packets 41733939 bytes 10076133587 (9.3 GiB)
RX errors 0 dropped 604 overruns 0 frame 0
TX packets 23414087 bytes 12951115684 (12.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Loopback Local)
RX packets 31654587 bytes 341362906531 (317.9 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 31654587 bytes 341362906531 (317.9 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0



entendi o que vc quis dizer ai... esses procedimentos eu ja tinha feito menos essa parte do ssh-copy-id... eu executei um script com o codigo que vc colocou ai e deu certo!
O unico problema agora é inserir variáveis que vêm de uma pagina html.
Segue o codigo que eu quero usar:
<?php
$Usuario = $_POST["comando"];
$Senha = $_POST["senha"];
$Senha_c = $_POST["senha_c"];
$ssh = "sudo ssh root@192.168.1.135"


$Result = shell_exec(("sudo ssh root@192.168.1.135").("'( echo '").$Senha.("') ; echo '").$Senha_c.("' ) | sudo smbpasswd -a").$Usuario.("'"));
echo "<pre>$Result</pre>";

//Eu sei que tem erro aqui... só não sei qual é e como eu devo usar a quebra por aspas
//Não sei se da pra entender mas, o que eu quero é que a saída pro shell seja essa:
//Supondo que as variáveis $Senha e $Senha_C seja Teste@123 e $Usuario seja teste
//sudo ssh root@192.168.1.135 '( echo 'Teste@123' ; echo 'Teste@123' ) | sudo smbpasswd -a teste'


?>

<a href="PHPCommands.php">Voltar</a>

Diretamente pelo terminal, o comando mencionado retorna o seguinte:
$ sudo ssh root@192.168.1.135 'ifconfig;hostname'

eth0 Link encap:Ethernet HWaddr b2:3f:12:ef:0d:ad
inet addr:192.168.1.135 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::b03f:12ff:feef:dad/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:76354532 errors:0 dropped:0 overruns:0 frame:0
TX packets:10102238 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25784979076 (24.0 GiB) TX bytes:1634341461 (1.5 GiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:175203 errors:0 dropped:0 overruns:0 frame:0
TX packets:175203 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:16245634 (15.4 MiB) TX bytes:16245634 (15.4 MiB)

SV-AD-01

Tem alguma ideia de como faz?


12. Re: Criar e alterar usuários através de pagina PHP

Perfil removido
removido

(usa Nenhuma)

Enviado em 03/03/2017 - 17:55h

Você não precisa do sudo para o ssh. A dica que dou é nunca utilizar o root para essa demanda e nunca passar senha como parâmetro. Crie um usuário de serviço, configure o sudoers somente com o contexto necessário (smbpasswd ), e realize troca de chaves SSH entre as duas maquinas para que não solicite senha.



01 02