Administrando usuários no GNU_Linux e Samba via web com PHP

5
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 que atuará como as "mãos" do interpretador PHP para atuar no sistema operacional criando, deletando, habilitando e desabilitando 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 apache Group apache Loadmodule php4_module libexec/apache/libphp4.so # Obs: No Slackware 11 é desnecessária esta linha Include /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 de segurança, portanto a página deve ficar em um diretório protegido por algum .htaccess, pois por tratar-se de uma rede pequena de uma pequena empresa de orçamento menor ainda, não foi necessário uma implementação mais sofisticada, 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 manipular arquivos 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 a respeito e ficou assim mesmo. Há versões do sudo que a linha pode ser feita da seguinte forma:

Transcript of Administrando usuários no GNU_Linux e Samba via web com PHP

Page 1: Administrando usuários no GNU_Linux e Samba via web com PHP

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:

Page 2: Administrando usuários no GNU_Linux e Samba via web com PHP

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);

Page 3: Administrando usuários no GNU_Linux e Samba via web com PHP

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));?>

Page 4: Administrando usuários no GNU_Linux e Samba via web com PHP

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):

Page 5: Administrando usuários no GNU_Linux e Samba via web com 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