В 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
решил проблему.