Fiz um pequeno servidor Samba com o Slackware 11, o cliente queria poder administrar os usuários por meio de uma página web, tarefa até muito simples para quem é habituado com programação em shell, PHP ou Perl, mas para mim e muitos administradores não. Depois de pesquisar consegui implementar scripts PHP para realizar estas tarefas.
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.
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.
[3] Comentário enviado por capitainkurn em 09/02/2007 - 02:31h
Jgama, concordo com você mas quem vai administrar o sistema é o dono da empresa, que não sabe nada de Linux ou Shell e precisava de uma interface amigável.
[5] Comentário enviado por lord_roxton em 09/02/2007 - 11:33h
Para administração de um ambiente com SAMBA/OpenLDAP já existem muitas ferramentas gráficas que são muito intuitivas, como por exempo phpldapadmin e GOSA! Neste caso específico usando apenas SAMBA acho que a idéia foi muito boa!
[6] Comentário enviado por capitainkurn em 10/02/2007 - 10:07h
Ah... mas só o trabalho que ia dar... como disse no artigo é um servidor pequeno, para uma empresa pequena e um orçamento menor ainda! Rssssssss é só um quebra galhos
O script não filtra os valores recebidos pela aplicação web. Uma pessoa mais criativa poderia digitar algo como "jose > /etc/passwd" para a variável $_POST['login'] no script e corromper o servidor. Por favor, nem me falem de validação via Javascript, porque isso não funciona.
A iniciativa de desenvolver algo e liberar para outros utilizarem é muito legal, mas a primeira regra deveria ser verificar se já não existe um projeto iniciado dessa forma e tentar trabalhar nele. Além de evitar o desperdício de energia você tem a oportunidade de aprender com outras pessoas.
Existem vários sistemas de gerenciamento de usuários do Samba via web, a maioria para manipular servidores que usam LDAP como base de dados. Eu mesmo desenvolvi um em http://faus.sourceforge.net.
Esse projeto está parado há alguns meses quando eu percebi que a execução dos comandos do próprio Samba dá várias dores de cabeça além dos problemas de segurança. A melhor maneira de fazer isso seria integrar o código do próprio Samba para fazer chamadas RPC e manipular os usuários, da mesma forma que o UserManager do Windows faz. Claro que identificar quais bibliotecas do Samba usar e como usar requer um tempo considerável do qual não disponho.
É nessas horas que eu gostaria de receber mais ajuda com codificação. :-)
[8] Comentário enviado por coffani em 12/02/2007 - 14:03h
Parabéns pela iniciativa, como vc disse, empresa pequena, servidor pequeno e orçamento nem se fala...
Para quem num tem nada em mãos esse é um bom começo.. Vlw
[9] Comentário enviado por capitainkurn em 13/02/2007 - 11:16h
Conheço o FAUS, mas isso é um quebra galhos, apenas o dono da empresa que usa, quanto aos crackers que possam corromper o servidor isso pode ser fcilmente resolvido colocando-se os scripts e páginas de formulário dentro de um diretório protegido por um .htaccess em um servidor https. Na verdade eu ia postar como uma dica e não como um artigo, mas dada a quntidade de passos achei melhor postar como artigo.
[11] Comentário enviado por quartodazona em 20/09/2010 - 07:50h
Caro amigo, sei que já faz tempo este post, porém eu não consigo fazer o Debian 5 criar usuário pelo PHP de forma alguma.
Fiz todos os seus passos.
Criei um usuário apache e o coloquei num grupo específico como você mencionou, mas ele só consegue criar diretórios e arquivos quando eu o executo no php, ou seja, executo uma página em php passando um comando ou mandando executar um script que já faz isso.
Já tentei de várias formas e nada, mas como eu disse acima, se eu quiser criar diretórios ou arquivos usando os comandos abaixo, funciona numa boa:
Já o coloquei no arquivo sudoers de várias formas:
- apache ALL=NOPASSWD: useradd smbpasswd userdel chpasswd <-- Este não rola nada destes comandos
- apache ALL=NOPASSWD: ALL <-- Totalmente inseguro este e não funciona o comando useradd
- apache ALL=NOPASSWD: /usr/sbin/useradd, /usr/bin/passwd, /usr/bin/openssl, /bin/false
- apache ALL=(ALL) ALL <-- Totalmente inseguro também, mas não funciona o comando useradd
O que eu descobri foi que se eu crio um usuário no Linux e dou privilégios no arquivo sudoers como fiz acima e executo o comando useradd dentro do Linux, consigo fazer tudo o que o root faz como descrito no arquivo sudoers, porém se eu pego este mesmo usuário e o coloco no grupo do apache como você falou e tento executar o comando useradd, não funciona.
Já revirei a net e não encontrei nada mais interessante que este e outro post aqui no Viva o Linux. Preciso implementar uma solução em uma determinada empresa e só preciso executar o comando useradd via browser para que este sufoco termine.