Setup / var / www para dois grupos

0

Eu tenho dois grupos. ftpgroup e www-data. Estou usando o proftpd e o mysql para armazenar os usuários do ftp e suas casas. Quando o usuário se registra, ele cria a pasta primeiro e cria a conta do usuário no MySQL. Meu problema está no fato de que o apache parece não ter problemas para criar o diretório. Os usuários podem fazer login, mas depois não têm acesso de gravação. O mesmo vale para o diretório inicial. Os usuários herdam o grupo ftpgroup e ftpuser quando eles são criados no banco de dados SQL e, em seguida, restritos aos seus diretórios base. Eu também vi que meu usuário principal não pode escrever em seu diretório pessoal.

Permissões para / var / www:

drwxr-xr-x 4 www-data ftpgroup 4096 Jan 22 21:28 /var/www

É claro que posso chown -R ftpuser:ftpgroup /var/www , mas o Apache não pode mais gravar em /var/www/html/accounts

Eu tentei definir chown -R ftpuser:www-data /var/www , mas ainda não consegui criar o arquivo com o apache e, quando definido como chown -R www-data:ftpgroup , não posso modificar nenhum arquivo com ftp. Outra preocupação levantada é que tipo de questões serão levantadas pelo apache com permissões quando o php criar o novo diretório depois de olhar as permissões.

Script atual para criar pasta

public function CreateUserFolder($arg,$arg2,$arg3) {
    if(file_exists(ROOT_PATH.'/accounts/'.$arg)) {
        echo "User Exists";

    }
    else {
    mkdir(ROOT_PATH.'/accounts/'.$arg, 0777, true);
    self::CreateFTPAccount($arg,$arg2,$arg3);
    }
}
    
por Morgan Green 23.01.2016 / 22:41

1 resposta

0

Não tenho certeza se isso seria realmente uma correção ou não, mas foi o que fiz para que os usuários pudessem escrever em seu diretório.

chown -R ftpuser:ftpgroup /var/www

Depois, dentro de /etc/apache2/envvars

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data //Replaced
export APACHE_RUN_GROUP=www-data //Replaced

E simplesmente o substituiu por

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=ftpuser
export APACHE_RUN_GROUP=ftpgroup

Até agora não vi problemas e tudo está funcionando muito bem.

    
por Morgan Green 24.01.2016 / 01:07