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.
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:
Pronto, o usuário "apache" agora tem privilégios de root para manipular os programas useradd, userdel, chpasswd e 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údo abaixo e abra-o com seu browser. Se ele lhe exibir as tabelas com a configuração do PHP é porque está tudo OK.
[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.