Проблема: backuppc пропускает существенные пункты меню в своем веб-интерфейсе. Объекты "Хосты Редактирования", "Конфигурация Редактирования" и т.д. отсутствует.
backuppc
установлен на Ubuntu 14.04.4 LTS. Я даже полностью удалил backuppc
приложение (использование dpkg --purge backupppc
), и переустановленный это (склонный - получают установку backuppc). Пункты меню все еще отсутствуют.
При выполнении/usr/lib/backuppc/cgi-bin/index.cgi непосредственно в CLI, я действительно получаю недостающие пункты меню. Вывод HTML от index.cgi включает:
<a href="?action=editConfig">Edit Config</a>
<a href="?action=editConfig&newMenu=hosts">Edit Hosts</a>
Я пытался выполнить de index.cgi на командной строке как корень, backuppc и www-данные, все вывод относительно того же. (Я должен был включить оболочку входа в систему для www-данных),
Однако это отсутствует при доступе backuppc
администратор от консоли в браузере.
Файл/etc/backuppc/config.pl содержит:
$Conf{CgiAdminUserGroup} = 'backuppc';
$Conf{CgiAdminUsers} = 'backuppc';
Когда я изменяюсь $Conf{CgiAdminUsers}
кому: '*'
вместо 'backuppc'
, это работает, но я предпочитаю не давать доступ администратора всем пользователям, таким образом, это может только служить временно обходное решение.
апачская конфигурация является значением по умолчанию путем установки 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
поскольку последний является тем, с которым я раньше входил в систему. Так, вероятно, это - апачская проблема конфигурации.
Я добавил второй 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
и им предоставили chmod a+x
и u+s
полномочия.
С выводом 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
решили вопрос.
last --time-format=iso | grep "2017-0[0-6]"
– Ravexina 28 June 2017 в 20:05