Post on 27-Jun-2015
Administrando usuários no GNU/Linux e Samba via web com PHP [Ar... http://www.vivaolinux.com.br/artigos/impressora.php?codigo=6048
1 de 5 08/02/2007 Eduardo - 17:31
Administrando usuários no GNU/Linux e Samba via web com PHP
Autor: Carlos Eduardo A. Henriques. <carlos at ahenriques.eti.br>Data: 08/02/2007
Configurando o Apache:
Primeiramente crie um usuário e um grupo para o Apache, ou seja, o "apache" será no sistema um usuário queatuará como as "mãos" do interpretador PHP para atuar no sistema operacional criando, deletando, habilitando edesabilitando usuários, tanto no Linux como no Samba.
# groupadd -g 48 -o apache# useradd -u 48 -o -g apache -d /var/www -s /bin/false apache
Feito isso vamos definir no /etc/apache/httpd.conf o usuário "apache" bem como seu diretório raiz(DocumentRoot). Verifique os parâmetros abaixo se estão de acordo com seu httpd.conf, caso não estejam,coloque-os como está listado abaixo.
DocumentRoot "/var/www"<Directory "/var/www/">User apacheGroup apacheLoadmodule php4_module libexec/apache/libphp4.so # Obs: No Slackware 11 é desnecessária esta linhaInclude /etc/apache/mod_php.conf<IfModule mod_dir.c> DirectoryIndex index.html index.php index.htm default.php</IfModule>
Pronto, seu servidor Apache já está pronto para comunicar-se com o seu interpretador PHP!
Considerações sobre segurança
ATENÇÃO: Estes scripts são muito simples e a configuração do PHP está default, não há qualquer implemento desegurança, portanto a página deve ficar em um diretório protegido por algum .htaccess, pois por tratar-se de umarede pequena de uma pequena empresa de orçamento menor ainda, não foi necessário uma implementação maissofisticada, portanto cuidado ao empregá-los em ambientes de produção mais sofisticados.
Configurando o seu arquivo /etc/sudoers
O /etc/sudoers é o arquivo de configuração do sudo, pois o usuário "apache" do Apache precisa manipulararquivos com o privilégio de root. No caso do Slackware 11 a linha fica da seguinte forma:
apache ALL=NOPASSWD: ALL
Embora não seja recomendável como está acima, somente funcionou assim e não tive tempo de pesquisar mais arespeito e ficou assim mesmo. Há versões do sudo que a linha pode ser feita da seguinte forma:
Administrando usuários no GNU/Linux e Samba via web com PHP [Ar... http://www.vivaolinux.com.br/artigos/impressora.php?codigo=6048
2 de 5 08/02/2007 Eduardo - 17:31
apache ALL=NOPASSWD: useradd smbpasswd userdel chpasswd
Pronto, o usuário "apache" agora tem privilégios de root para manipular os programas useradd, userdel, chpasswde smbpasswd. Basta agora levantar o Apache com o comando:
# apachectl start
Para verificar se o interpretador PHP está rodando perfeitamente, crie um arquivo phpinfo.php com o conteúdoabaixo e abra-o com seu browser. Se ele lhe exibir as tabelas com a configuração do PHP é porque está tudo OK.
<?phpinfo();?>
Página e script para adicionar usuários
<html><head><title>Adduser</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body><form action="http://127.0.0.1/testadm/add_tux.php" method="post" name="comando" id="comando"> <input name="login" type="text" id="login" size="30" maxlength="30"> L<br> <input name="senha" type="text" id="senha" size="30" maxlength="30"> P <br> <input type="submit" name="Submit" value="Submit"> <input type="reset" name="Submit2" value="Reset"></form></body></html>
Observem acima o path para onde está apontando para o script PHP, este é o script que adiciona usuários ao Linuxe ao Samba.
Segue adiante o código PHP responsável pela adição de usuários (arquivo add_tux.php):
<?$adduser = "sudo useradd -g users -d /home/{$_POST['login']} -m -s /bin/bash {$_POST['login']} | echo {$_POST['login']}:{$_POST['senha']} |sudo chpasswd";$cmd = shell_exec($adduser);
$addsmb = "( echo {$_POST['senha']} ; echo {$_POST['senha']} ) | sudo smbpasswd -as {$_POST['login']}";$cmd = shell_exec($addsmb);
Administrando usuários no GNU/Linux e Samba via web com PHP [Ar... http://www.vivaolinux.com.br/artigos/impressora.php?codigo=6048
3 de 5 08/02/2007 Eduardo - 17:31
echo "O usuário {$_POST['login']} foi adicionado com êxito no sistema";
#$insertGoTo = "./okadd.htm";#if (isset($_SERVER['QUERY_STRING'])) {#$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";#$insertGoTo .= $_SERVER['QUERY_STRING'];#}#header(sprintf("Location: %s", $insertGoTo));?>
As linhas comentadas logo acima são para caso você deseje que o PHP redirecione após adicionar um usuário parauma página com uma mensagem de sucesso, preferi usar apenas uma mensagem de echo, caso você opte por usaruma página de sucesso, comente a linha de echo de descomente as demais. O mesmo vale para os demais scriptsque seguirão adiante.
Página e script para remover usuários
<html><head><title>rmuser</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body><form action="http://127.0.0.1/testadm/rm_tux.php" method="post" name="comando" id="comando"><input name="login" type="text" id="login" size="30" maxlength="30">L<br><input type="submit" name="Submit" value="Submit"><input type="reset" name="Submit2" value="Reset"></form></body></html>
Segue abaixo o código PHP responsável pela remoção de usuários (arquivo rm_tux.php):
<?$rmsmb = "sudo smbpasswd -x {$_POST['login']}";$cmd = shell_exec($rmsmb);
$rmuser = "sudo userdel -r {$_POST['login']}";$cmd = shell_exec($rmuser);
echo "O usuário {$_POST['login']} foi removido com êxito no sistema";
#$insertGoTo = "./okrm.htm";#if (isset($_SERVER['QUERY_STRING'])) {#$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";#$insertGoTo .= $_SERVER['QUERY_STRING'];#}#header(sprintf("Location: %s", $insertGoTo));?>
Administrando usuários no GNU/Linux e Samba via web com PHP [Ar... http://www.vivaolinux.com.br/artigos/impressora.php?codigo=6048
4 de 5 08/02/2007 Eduardo - 17:31
Página e script para desabilitar usuários
<html><head><title>blockuser</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body><form action="http://127.0.0.1/testadm/disable_tux.php" method="post" name="comando" id="comando"><input name="login" type="text" id="login" size="30" maxlength="30">L<br><input type="submit" name="Submit" value="Submit"><input type="reset" name="Submit2" value="Reset"></form></body></html>
Segue abaixo o código PHP responsável por desabilitar usuários (arquivo disable_tux.php):
<?$disblesmb = "sudo smbpasswd -d {$_POST['login']}";$cmd = shell_exec($disblesmb);
echo "O usuário {$_POST['login']} foi desabilitado com êxito no sistema";
#$insertGoTo = "./okdis.htm";#if (isset($_SERVER['QUERY_STRING'])) {#$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";#$insertGoTo .= $_SERVER['QUERY_STRING'];#}#header(sprintf("Location: %s", $insertGoTo));?>
Página e script para habilitar usuários
<html><head><title>Unblockuser</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><form action="http://127.0.0.1/testadm/enable_tux.php" method="post" name="comando" id="comando"><input name="login" type="text" id="login" size="30" maxlength="30">L<br><input type="submit" name="Submit" value="Submit"><input type="reset" name="Submit2" value="Reset"></form></body></html>
Segue abaixo o código PHP responsável por habilitar usuários (arquivo enable_tux.php):
Administrando usuários no GNU/Linux e Samba via web com PHP [Ar... http://www.vivaolinux.com.br/artigos/impressora.php?codigo=6048
5 de 5 08/02/2007 Eduardo - 17:31
<?$enablesmb = "sudo smbpasswd -e {$_POST['login']}";$cmd = shell_exec($enablesmb);
echo "O usuário {$_POST['login']} foi habilitado com êxito no sistema";
#$insertGoTo = "./oken.htm";#if (isset($_SERVER['QUERY_STRING'])) {#$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";#$insertGoTo .= $_SERVER['QUERY_STRING'];#}#header(sprintf("Location: %s", $insertGoTo));?>
Bibliografia, fontes de consulta e agradecimentos
Alterando a senha com apenas uma linha de comandoCadastro de usuários no SambaCadastrando usuários no Linux e Samba via PHPhttp://br.groups.yahoo.com/group/admintux/http://www.codigolivre.com.br/abrefontes.php?...tid=231http://www.php.net/
Agradeço especialmente aos companheiros vhprice, snale_to e tucs daqui mesmo do Viva o Linux, de ondeconsegui agrupar as informações necessárias para este trabalho, que devolvo na forma deste pequeno artigo àcolaboração de todos.
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=6048
Voltar para o site