Problème: backuppc manque des éléments de menu essentiels dans son interface Web. Les éléments "Modifier les hôtes", "Modifier la configuration", etc. sont manquants.
backuppc
est installé sur Ubuntu 14.04.4 LTS. J'ai même complètement supprimé l'application backuppc
(en utilisant dpkg --purge backupppc
), Et l'ai réinstallée (apt-get install backuppc). Les éléments du menu sont toujours manquants.
Lorsque vous exécutez /usr/lib/backuppc/cgi-bin/index.cgi directement dans la CLI, j'obtiens les éléments de menu manquants. La sortie HTML de index.cgi comprend:
<a href="?action=editConfig">Edit Config</a>
<a href="?action=editConfig&newMenu=hosts">Edit Hosts</a>
J'ai essayé d'exécuter de index.cgi sur la ligne de commande en tant que root, backuppc et www-data, tous ayant la même sortie. (J'ai dû activer un shell de connexion pour www-data)
Cependant, cela manque lors de l'accès à l'administrateur backuppc
à partir de la console dans le navigateur.
Le fichier /etc/backuppc/config.pl contient:
$Conf{CgiAdminUserGroup} = 'backuppc';
$Conf{CgiAdminUsers} = 'backuppc';
Lorsque je change $Conf{CgiAdminUsers}
En '*'
Au lieu de 'backuppc'
, Cela fonctionne, mais je préfère ne pas donner l'accès administrateur à tous les utilisateurs, donc cela ne peut servir que de solution temporaire.
La configuration d'Apache est par défaut en installant le package 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>
Le contenu ci-dessus est dans /etc/backuppc/Apache.conf
Qui est symboliquement lié à /etc/Apache2/conf.d/backuppc.conf
.
Pour l'analyse des problèmes, j'ai ajouté le script suivant à /usr/lib/backuppc/cgi-bin/debug.cgi
:
#!/usr/bin/Perl
printf("My userid is $> (%s)\n", (getpwuid($>))[0]);
Le résultat, écrit dans Apache error.log
, Après authentification, était:
My userid is 33 (www-data)
L'ID utilisateur est donc incorrectement transmis à BackupPc. L'ID utilisateur transmis est www-data
Où je m'attendais à ce que l'ID utilisateur authentifié, transmis à BackupPc soit backuppc
car ce dernier est celui avec lequel je me connectais. Il s'agit donc probablement d'un problème de configuration d'Apache.
J'ai ajouté un deuxième script cgi printenv.cgi
Qui produit les variables d'environnement. Le script contient:
#!/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";
}
La sortie contenait:
REMOTE_USER="$REDIRECT_REMOTE_USER="
où backuppc requiert que cette variable d'environnement REMOTE_USER
contienne l'utilisateur authentifié (backuppc
dans mon exemple). Il s'avère qu'un REMOTE_USER
Incorrect est la cause du problème.
Les scripts de diagnostic ont été placés dans /usr/lib/backuppc/cgi-bin/
Et ont été liés symboliquement à partir de /usr/share/backuppc/cgi-bin/
. Leur propriété était backupc:www-data
Et ils ont reçu les autorisations chmod a+x
Et u+s
.
Avec la sortie de REMOTE_USER="$REDIRECT_REMOTE_USER="
, J'ai fait un grep sur REMOTE_USER
dans les scripts de configuration ci-dessous /etc/Apache2/conf-enabled
. J'ai trouvé un .conf
fichier contenant:
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
Le .conf
le script n'était pas lié à backuppc. Préfixer la ligne REMOTE_USER avec #
, puis redémarrage des services
# apachtectl restart
# service backuppc restart
résolu le problème.