В 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&amp;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

решил проблему.

Другие вопросы по тегам