Neste artigo mostrarei como utilizar dos recursos do PHP para cadastrar usuários no Linux e no Samba. Isso é útil porque nos permite cadastrar usuários no sistema a partir de sua intranet ou até mesmo via internet.
Segue trecho do script PHP usado para criar a tabela "usuarios".
Estou partindo do princípio que sua variável de conexão com o
MySQL já foi criada e definida em $conexao:
$cria_usuario = "CREATE TABLE usuarios (
id BIGINT NOT NULL AUTO_INCREMENT,
nome varchar(50) NOT NULL,
senha varchar(50) NOT NULL,
nivel varchar(1) NOT NULL,
PRIMARY KEY(id)
)";
mysql_query ($cria_usuario, $conexao) or die (mysql_error());
$insert = "INSERT INTO usuarios (id, nome, senha, nivel) values ('', 'admin', 'admin', '1')";
mysql_query($insert, $conexao) or die ("Erro ao inserir o usuario admin");
$cria_alunos = "CREATE TABLE alunos (
id BIGINT NOT NULL AUTO_INCREMENT,
nome varchar(50) NOT NULL,
login varchar(50) NOT NULL,
senha varchar(50) NOT NULL,
PRIMARY KEY(id)
)";
mysql_query ($cria_alunos, $conexao) or die (mysql_error());
No meu caso, criei este script para uma escola, por isso esses nomes
para as tabelas.
[4] Comentário enviado por gustavo_marcon em 01/12/2003 - 19:40h
Tucs, eu tentei mas não dá certo nem assim...
O erro que dá diz que a linha 17 tem erros, mas ela está certa pois eu só copiei e colei do seu artigo.. Já tentei até desinstalar e reinstalar o sudo.
[5] Comentário enviado por tucs em 02/12/2003 - 09:13h
hackwiz, Obrigado pelo icentivo, mas na verdade todos estamos de parabens , pois sem vcs pra que ei e outros iriam postar nosso trabalhos ?
Obrigado pela forca.
gustavo_marcon, que distro vc esta utilizando, apesar de naum ter problemas a naum ser no sudo,
faz assim me mande o seu soduers pra mim dar uma olhada (mail-me)
[7] Comentário enviado por string em 22/01/2004 - 18:00h
e ae..blz.
Meu apache+php+mysql estao funcionando perfeitamento, porem da dando seguinte erro, ja tentei de tudo, v ai se alguem tem um dica:
// validacao.php
Warning: Cannot send session cache limiter - headers already sent (output started at /var/www/html/cadastro/validacao.php:2) in /var/www/html/cadastro/validacao.php on line 3
Warning: Cannot add header information - headers already sent by (output started at /var/www/html/cadastro/validacao.php:2) in /var/www/html/cadastro/validacao.php on line 25
[9] Comentário enviado por webkiller em 21/06/2004 - 16:56h
Achei muito interessante o script, mas gostaria de saber se existe uma forma mais segura de executá-lo, não posso dar permissão para o apache executar qualquer comando como root.
Como eu faço para dar permissão ao usuário www com acesso local somente ao comando chpasswd? Isso é possível?
[11] Comentário enviado por pr02nl em 18/02/2005 - 23:43h
Sei que estou um pouco atrsado, pois o artigo foi submetido ja ha algum tempo, mais, eu comecei a gerenciar um servidor na faculdade que ja estava com tudo rodando, "samba, php, mysql", e eu realmente tinha essa nessecidade, porém antes de aplicar essa ideia gostaria de saber do autor como eu posso colocar todos os usuarios ja existentes no sistema e no samba no banco de dados automaticamente.
Outra, quero tambem saber como posso fazer para colocar esse sistema de cadastramento para min, Administrador e outro sistema de recadastramento onde o proprio usuario possa entar no site e atualizar seu cadastro, ou seja, ao inicio de um novo semestre o usuario vai ao site e se recadastra, assim ele pode usar sua conta por mais um semestre, caso ele não se recadastre sua conta é bloqueada e depois de outro semestre sem recadastro sua conta é excluida!!
Não sei se minha ideia esta correta mais imaginei colocar mais alguns campos no db e ir incrementando ao final de cada semestre e zerar ao usuario se recadastrar, mais como faco para o proprio sistema incremetar e deletar a conta do usuario quando o campo chegar a dois?
[13] Comentário enviado por alyssoncma em 12/11/2006 - 16:55h
Blz Tucs?
Seguinte, olha o codigo que tenho... (ou melhor seu código..hehe)
//ADD O USUARIO NO LINUX
$adduser = "useradd -g alunos -d /home/$login -m -s /bin/bash $login |echo $login:$senha |chpasswd";
$comando = shell_exec($adduser);
Não estou utilizando o sudo pois vou cadastrar o aluno na maquina que vou estar logado como root.
Uso o ubuntu. Ele cria o usuário certinho. Mais nao cria a senha, quando vo criar um usuario no ubuntu (ou debian), ele pede a senha e uma confirmaçao. Será qe é por isso??? Se eu lterar a senha no usuario. Funciona perfeito, é só logar com o usuario criado.
[14] Comentário enviado por liviocf em 28/06/2007 - 18:58h
Mesmo bem atrasado, gostaria de dizer parabéns pelo artigo!
Sobre esse mesmo tema tenho uma dúvida que parece boba, mas não consigo resolver!
Tenho que executar um comando no servidor! Tenho tudo pronto em php, mas o servidor não executa o comando que estipulo pra ele!
Se faço direto no shell funciona perfeitamente, mas quando executo via shell_exec("/local/comando ....") não funciona! Nem utilizando o sudo, como descrito no seu artigo!
Pra qualquer outro comando ele funciona!
Não sei o que pode ser!!
Se alguém puder me ajudar sobre isso, agradeço muito!!
pois você tem que separar os comandos que deseja atribuir ao usuário que irá utilizar sudo sem senha separados por vírgulas e com o caminho completo de onde está o comando.
[17] Comentário enviado por quartodazona em 20/09/2010 - 07:53h
Caro amigo o seu método de criar usuários pelo browser é parecido com outro aqui do Viva o Linux, mas eu já me utilizei dos 2 e continuo tendo tendo problema, 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.