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



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts