В backuppc отсутствуют пункты меню после установки
Проблема: в веб-интерфейсе backuppc отсутствуют важные пункты меню. Пункты "Редактировать хосты", "Редактировать конфигурацию" и т. Д. Отсутствуют.
backuppc установлен на Unbuntu 14.04.4 LTS. Я даже полностью удалил backuppc приложение (используя dpkg --purge backupppc) и переустановил его (apt-get install backuppc). Пункты меню по-прежнему отсутствуют.

При запуске /usr/lib/backuppc/cgi-bin/index.cgi непосредственно в интерфейсе командной строки я получаю недостающие пункты меню. HTML-вывод из index.cgi включает в себя:
<a href="?action=editConfig">Edit Config</a>
<a href="?action=editConfig&newMenu=hosts">Edit Hosts</a>
Я попытался запустить de index.cgi в командной строке от имени пользователя root, backuppc и www-data, и все они имели одинаковый вывод. (Мне пришлось включить оболочку входа для www-данных)
Однако при доступе к backuppc Админ из консоли в браузере.
Файл /etc/backuppc/config.pl содержит:
$Conf{CgiAdminUserGroup} = 'backuppc';
$Conf{CgiAdminUsers} = 'backuppc';
Когда я меняю $Conf{CgiAdminUsers} в '*' вместо 'backuppc'Это работает, но я предпочитаю не предоставлять доступ администратора всем пользователям, так что это может служить только временным решением проблемы.
Конфигурация apache используется по умолчанию при установке пакета 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>
Содержание выше в /etc/backuppc/apache.conf который символически связан с /etc/apache2/conf.d/backuppc.conf,
Для анализа проблем я добавил следующий скрипт в /usr/lib/backuppc/cgi-bin/debug.cgi:
#!/usr/bin/perl
printf("My userid is $> (%s)\n", (getpwuid($>))[0]);
Вывод, написанный в апаче error.logпосле аутентификации было:
My userid is 33 (www-data)
Поэтому идентификатор пользователя неправильно передается в BackupPc. Идентификатор пользователя передан www-data где я ожидал, что идентификатор аутентифицированного пользователя, переданный в BackupPc, будет backuppc так как последний - тот, который я использовал для входа в систему. Так что, вероятно, это проблема конфигурации Apache.
Я добавил второй скрипт cgi printenv.cgi которые выводят переменные среды. Скрипт содержит:
#!/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";
}
Вывод содержал:
REMOTE_USER="$REDIRECT_REMOTE_USER="
где backuppc требует, чтобы эта переменная среды REMOTE_USER содержит аутентифицированного пользователя (backuppc в моем примере). Оказывается, неверный REMOTE_USER является причиной проблемы.
Диагностические сценарии были размещены в /usr/lib/backuppc/cgi-bin/ и были символически связаны с /usr/share/backuppc/cgi-bin/, Их собственность была backupc:www-data и им дали чмод a+x а также u+s разрешения.
1 ответ
С выходом REMOTE_USER="$REDIRECT_REMOTE_USER="Я сделал grep на REMOTE_USER в скриптах конфигурации ниже /etc/apache2/conf-enabled, Я нашел .conf файл, который содержал:
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
.conf Скрипт не был связан с backuppc. Префикс строки REMOTE_USER с #, а затем перезапустить службы
# apachtectl restart
# service backuppc restart
решил проблему.