Apache, Permissões de Grupo e Uploads de Usuários

5

Eu tenho uma pasta chamada "digitalgoods" com a seguinte propriedade - apache: apache residindo fora da pasta htdocs e, portanto, não está acessível ao público. No entanto, eu preciso que a mesma pasta seja acessível por um grupo definido de usuários (Jack, John, James) - vamos chamá-los todos de "uploaders".

Eu quero que os "uploaders" possam fazer upload de arquivos o mais facilmente possível para a pasta "digitalgoods", onde o apache pode acessar para veiculação por meio de compra.

Minha pergunta é qual é a melhor maneira de configurar isso ?? Atualmente estou usando o SSH para acessar o servidor, mas faria mais sentido instalar um servidor ftp para os usuários obterem acesso; e se sim, o que devo fazer de lá em relação a contas e permissões? Ou devo definir o diretório pessoal de cada usuário como "produtos digitais" e, de alguma forma, modificar as permissões adequadamente para acesso via SSH?

Estou tentando tornar o upload de arquivos o mais simples possível para o cliente. Qualquer ajuda nesse sentido é apreciada.

    
por Ryan Prentiss 29.04.2014 / 22:14

1 resposta

3

Existem 2 soluções usando 2 servidores ftp diferentes

1 - Use o proftpd com o recurso VirtualServer e com uma força de usuário local. Snippet de um arquivo de configuração meu:

ServerType standalone
DefaultServer on
AccessGrantMsg "User %u logged in."
DeferWelcome off

# Use pam to authenticate (default) and be authoritative
AuthPAMConfig proftpd
AuthOrder mod_auth_pam.c* mod_auth_unix.c


<VirtualHost xxx.xxx.xxx.xxx>
ServerAdmin [email protected]
ServerName  "FTP"
TransferLog /var/log/proftpd/transfer.log
ExtendedLog /var/log/proftpd/full.log ALL
DefaultRoot /var/www/digitalgoods
User                    apache
Group                   apache
AllowOverwrite          yes
MaxLoginAttempts        3
RequireValidShell       no
</VirtualHost>

Crie os 3 usuários e deixe-os usar o ftp. Eles serão "chrooted" para /var/www/digitalgoods e qualquer arquivo enviado terá as permissões definidas como apache:apache

2 - Use vsftpd chroot, e crie 3 usuários com o mesmo userid que o apache E o mesmo diretório inicial que será chrooted (sim, é um kludge, mas deve funcionar):

Conteúdo de /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
check_shell=NO
syslog_enable=YES
connect_from_port_20=YES
xferlog_std_format=NO
idle_session_timeout=3600
ftpd_banner=FTP XXX
chroot_local_user=YES
ls_recurse_enable=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=NO
userlist_deny=NO
tcp_wrappers=YES

Como estamos usando menos privilégios, teremos que declarar os logins que acessarão este ftp em /etc/vsftpd/user_list

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
#
devel
manuals

Crie 2 usuários ( /etc/passwd ) e use o mesmo userid do usuário apache (novamente, é um kludge maldito, mas pelo menos você terá 2 usuários fazendo o upload para suas casas chrooted com a mesma permissão). Com o check_shell=NO você não precisa dar um shell válido para esses usuários

[root@]# grep 'apache\|desenv\|man\|' /etc/passwd
apache:x:48:48:Apache:/var/www:/sbin/nologin
devel:x:48:48::/var/www/digitalgoods:/sbin/nologin
manuals:x:48:48::/var/www/digitalgoods:/sbin/nologin
    
por 29.04.2014 / 22:55