Problema: o backuppc está faltando itens de menu essenciais em sua interface da web.
Itens "Edit Hosts", "Edit Config" etc estão faltando.
backuppc
está instalado no Unbuntu 14.04.4 LTS.
Eu mesmo removi completamente o aplicativo backuppc
(usando dpkg --purge backupppc
), e o reinstalei (apt-get install backuppc). Itens de menu ainda estão faltando.
Aoexecutar/usr/lib/backuppc/cgi-bin/index.cgidiretamentenaCLI,receboositensdemenuausentes.AsaídaHTMLdeindex.cgiinclui:
<ahref="?action=editConfig">Edit Config</a>
<a href="?action=editConfig&newMenu=hosts">Edit Hosts</a>
Eu tentei executar de index.cgi na linha de comando como root, backuppc e www-data, todos com a mesma saída. (Eu tive que habilitar um shell de login para www-data)
No entanto, isso está faltando ao acessar o backuppc
admin do console no navegador.
O arquivo /etc/backuppc/config.pl contém:
$Conf{CgiAdminUserGroup} = 'backuppc';
$Conf{CgiAdminUsers} = 'backuppc';
Quando altero $Conf{CgiAdminUsers}
para '*'
em vez de 'backuppc'
, funciona, mas prefiro não conceder acesso de administrador a todos os usuários, de modo que isso só sirva temporariamente como solução alternativa.
a configuração do apache é padrão instalando o pacote backuppc:
<Directory /usr/share/backuppc/cgi-bin/>
AllowOverride None
Allow from all
Options ExecCGI FollowSymlinks
AddHandler cgi-script .cgi
DirectoryIndex index.cgi
AuthUserFile /etc/backuppc/htpasswd
AuthType basic
AuthName "BackupPC admin"
require valid-user
</Directory>
O conteúdo acima está em /etc/backuppc/apache.conf
, que está simbolicamente vinculado a partir de /etc/apache2/conf.d/backuppc.conf
.
Para análise de problemas, incluí o seguinte script em /usr/lib/backuppc/cgi-bin/debug.cgi
:
#!/usr/bin/perl
printf("My userid is $> (%s)\n", (getpwuid($>))[0]);
A saída, escrita no apache error.log
, após a autenticação, foi:
My userid is 33 (www-data)
Assim, o ID do usuário é passado incorretamente para BackupPc. O ID do usuário passado é www-data
, onde eu esperava que o ID do usuário autenticado, passado para o BackupPc, fosse backuppc
, pois o último é o que eu usei para efetuar login. Então, provavelmente, esse é um problema de configuração do apache.
Eu adicionei um segundo script cgi printenv.cgi
que gera as variáveis de ambiente. O script contém:
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
foreach $var (sort(keys(%ENV))) {
$val = $ENV{$var};
$val =~ s|\n|\n|g;
$val =~ s|"|\"|g;
print "${var}=\"${val}\"\n";
}
A saída contida:
REMOTE_USER="$REDIRECT_REMOTE_USER="
em que backuppc exige que essa variável de ambiente REMOTE_USER
contenha o usuário autenticado ( backuppc
em meu exemplo). Acontece que um incorreto REMOTE_USER
é a causa do problema.
Os scripts de diagnóstico foram colocados em /usr/lib/backuppc/cgi-bin/
e foram simbolicamente vinculados de /usr/share/backuppc/cgi-bin/
. Sua propriedade era backupc:www-data
e eles receberam permissões chmod a+x
e u+s
.