Joob 1 Denunciar post Postado Janeiro 21, 2015 Boas, Estou a tentar fazer com que, quando clico em "submit", que ele faça a criação do usuário e que crie a password.. echo $ssh->exec("sudo useradd -d $dirusercsgo -m $user -g ftp-users -s /usr/sbin/nologin"); echo $ssh->exec("sudo chown $user:ftp-users $dirusercsgo"); echo $ssh->exec("sudo passwd $user"); echo $ssh->exec("sudo $password"); Faço estes comandos, mas ele só me cria a pasta do usuário, não faz o acesso ao ftp (com a password)... Abraço, Joob Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 21, 2015 Acho que seu problema é com o comando "passwd". Ele é interativo. Você precisa de um comando que não seja interativo. Veja estas soluções propostas: http://serverfault.com/questions/336298/can-i-change-a-user-password-in-linux-from-the-command-line-with-no-interactivit PS: o chown deveria ser recursivo, não? Considere usar a opção -R Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Janeiro 21, 2015 Obrigado Beraldo.. Vou dar uma olhadela ;) Abraço Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Janeiro 21, 2015 Coloquei destas formas: echo $ssh->exec("sudo $user:12345 | chpasswd"); echo $ssh->exec("sudo $user:12345 | /usr/sbin/chpasswd"); Mas não resultou.. Acabei de testar desta forma: echo $ssh->exec("sudo passwd $user"); echo $ssh->read("New UNIX password:"); $ssh->write("12345\n"); echo $ssh->read("Retype new password:"); $ssh->write("12345\n"); echo $ssh->read('passwd: all authentication tokens updated successfully.'); Quando clico no "submit" ele fica sempre a pensar.. e tenho que dar restart ao apache para que volte.. parece que fica a fazer um loading sem fim. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 21, 2015 Você testou os comandos diretamente no terminal, sem usar o PHP? Sempre teste diretamente na linha de comando antes de usar dentro do script Acho que o chpasswd não vem instalado por padrão. Você verificou se seu sistema possui esse programa? Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Janeiro 21, 2015 Sim, na verdade não o tinha instalado.. Já o instalei, mas ainda não me dei muito bem com ele na configuração das pass's.. Até porque, eu ao colocar ScriptAlias /var/www/cgi-bin/ /usr/lib/apache2/modules/ AddHandler cgi-script .cgi .pl Options +ExecCGI SetHandler cgi-script no apache2, o apache2 não fica como deve de ser... Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Janeiro 21, 2015 Não existe uma outra forma de fazer rodar o "passwd" no script ? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 21, 2015 Até porque, eu ao colocar ScriptAlias /var/www/cgi-bin/ /usr/lib/apache2/modules/ AddHandler cgi-script .cgi .pl Options +ExecCGI SetHandler cgi-script no apache2, o apache2 não fica como deve de ser... por que está alterando o apache? apenas instale o chpasswd e teste-o pela linha de comando. O apache não precisa saber da existência dele Não existe uma outra forma de fazer rodar o "passwd" no script ? Até onde sei, não. Faça uma busca por "linux passwd non-interactive" no google. Verá que todos citam o chpasswd como alternativa. Aparentemente, é a única. Uma saída pode ser tentar definir a senha no próprio comando useradd. Nunca fiz isso, mas veja estas soluções: http://www.vivaolinux.com.br/topico/Shell-Script/useradd-+-passwd http://stackoverflow.com/questions/2150882/how-to-automatically-add-user-account-and-password-with-a-bash-script Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Janeiro 21, 2015 Utilizei o apache, para ver se o chpasswd estava em funcionamento.. como também testei pelo comando, mas ocorre-me sempre este tipo de erro.. chpasswd: (user tester) pam_chauthtok() failed, error: Authentication token manipulation error chpasswd: (line 1, user tester) password not changed tenho andado a pesquisar sobre tal, mas ainda não obtive uma solução.. ando aqui a tentar ver.. Vou dar uma espreita nisso ;) Beraldo.. já sei qual o problema.. O problema é que o script não está a fazer a criação do usuário.. e quando testo o "chpasswd", dá-me esse erro, devido ao usuário não existir.. descobrir agora mesmo.. Tenho que ver como o fazer criar o usuário, visto não estar a fazê-lo... Agora também reparei que estava a usar "useradd" em vez de "adduser" .. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 21, 2015 O problema é que o script não está a fazer a criação do usuário.. e quando testo o "chpasswd", dá-me esse erro, devido ao usuário não existir.. descobrir agora mesmo.. Uma dica: se os comandos forem dependentes entre si, você pode executar o segundo apenas se o primeiro ocorrer com sucesso. Você pode fazer com &&, desta forma: comando1 && comando2 Assim, se o comando1 falhar, o comando2 não será executado, sem gerar erros. Agora também reparei que estava a usar "useradd" em vez de "adduser" .. Eu também me confundo com os dois. De fato, o certo é usar adduser :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Janeiro 21, 2015 Certo.. é boa dica essa ;) Irei utilizar dessa forma.. Joob, em 21 Jan 2015 - 8:28 PM, disse: Agora também reparei que estava a usar "useradd" em vez de "adduser" .. Eu também me confundo com os dois. De fato, o certo é usar adduser :thumbsup: É verdade, de facto também confundo sempre e fico na dúvida com o "adduser" e o "useradd".. kakak :p .. Já consegui gerar o utilizador e a password.. ^^ Agora falta é redirecciona-lo para a pasta que eu quero e não para o "home".. o meu "-d" até resultou, o utilizador "tester" até foi criada onde eu mandei.. mas quando faço login no "FTP", ele já entra no "/home/tester", ou seja, no fundo não fez login directamente na pasta que eu mandei.. estive a pesquisar e se utilizar desta forma "-D --base-dir", é bem possível que resulte.. Vou testar desta forma.. Já agora, consegues-me dizer, como fazer o bloqueio de não conseguir ir para as pastas fora do utilizador ? (tipo voltar pra trás) só para que seja permitido ficar na pasta do utilizador.. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 21, 2015 Já agora, consegues-me dizer, como fazer o bloqueio de não conseguir ir para as pastas fora do utilizador ? (tipo voltar pra trás) só para que seja permitido ficar na pasta do utilizador.. Nunca configurei FTP (até porque prefiro ssh/rsync :P ), mas, pelo que vi, isso depende de qual servidor ftp você usa. É possível configurar um chroot para cada login. Veja: http://www.cyberciti.biz/tips/vsftp-chroot-users-limit-to-only-their-home-directory.html Mas, como eu disse, isso pode variar conforme o servidor ftp que você está usando Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Janeiro 22, 2015 Exacto.. também gosto de utilizar esse modo.. mas de momento estou a querer testar com o VSFTPD, tenho ele instalado etc.. Secalhar o problema é na zona do "chroot", vou dar uma vista de olhos.. tenho que verificar melhor em relação ao VSFTPD Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Janeiro 22, 2015 Tenho novamente o problema do "adduser / useradd".. o script não está a fazer a criação do user.. brrr echo $ssh->exec("sudo adduser $user -d $dirusercsgo -g ftp-users"); Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 22, 2015 1. Já executou esse comando direto no terminal? Funciona? 2. Executando pelo PHP, o shell não retorna nenhuma mensagem de erro? Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Janeiro 22, 2015 O -d e o -g estavam mal, teria que usar o --home ... Até ai tudo bem, consegui fazer a criação do user pelo ssh.. Mas ao fazendo pelo script "sudo adduser $user" só assim, ele não cria o user.. será por causa da password ? É que ainda não tenho o chpasswd a funcionar como deve de ser, ele não assume a password afinal.. realmente não está a executar o comando.. :s agora estou a usar desta forma echo $ssh->exec("sudo useradd $user -d $dirusercsgo"); ele desta forma funciona no ssh.. mas pelo script.. nada.. o user não é criado :s Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Janeiro 23, 2015 Reparei aqui numa coisa, com os vários testes que andei a fazer.. Se eu aqui, usar os dados do root... if($ip == "IPdoServer") { $rootuser = "root"; $rootpass = "passroot"; Já tenho permissão para fazer a criação do user, usando o "useradd".. o user é criado, mas sem password.. Se colocar o "adduser", quando faço submit, o script fica a pensar a pensar.. e não sai do mesmo sitio.. Se usar os dados do user.. if($ip == "IPdoServer") { $rootuser = "user"; $rootpass = "passuser"; Não consigo fazer a criação do user, usando o "useradd & adduser" com o "sudo" antes do comando... Ou seja, parece que o user não tem permissão para utilizar o sudo.. Será isso.. ? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 23, 2015 Se colocar o "adduser", quando faço submit, o script fica a pensar a pensar.. e não sai do mesmo sitio..O comando é interativo e fica esperando digitar a senha. Creio que seja essa a razão. Ou seja, parece que o user não tem permissão para utilizar o sudo.. Será isso.. ? É só testar diretamente no terminal pra ver se é essa a razão. Compartilhar este post Link para o post Compartilhar em outros sites
Joob 1 Denunciar post Postado Janeiro 23, 2015 hmm então demora um pouco.. vou testar esperando um pouco.. quanto ao sudo.. ele com o user dá-me este erro is not in the sudoers file. This incident will be reported. mas se eu editar o /etc/sudoers e adicionar o user como ALL, igual ao root, o user não fica com permissão para tudo, tal como o root ? ou é só mesmo para o sudo ? mas fazendo sudo tem sempre acesso a tudo.. correct ? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 23, 2015 Se estiver no sudoers, o usuário tem permissão de root, mas precisa usar o comando sudo, sim. Compartilhar este post Link para o post Compartilhar em outros sites