web-dev-qa-db-ja.com

インストール後、backuppcにメニュー項目がない

問題:backuppcのWebインターフェイスに必須のメニュー項目がありません。 「ホストの編集」、「構成の編集」などの項目がありません。

backuppcはUbuntu14.04.4LTSにインストールされます。 backuppcアプリケーションを完全に削除し(dpkg --purge backupppcを使用)、再インストールしました(apt-get install backuppc)。メニュー項目がまだありません。

link-to-screenshot

CLIで/usr/lib/backuppc/cgi-bin/index.cgiを直接実行すると、不足しているメニュー項目が表示されます。 index.cgiからのHTML出力には次のものが含まれます。

<a href="?action=editConfig">Edit Config</a>
<a href="?action=editConfig&amp;newMenu=hosts">Edit Hosts</a>

コマンドラインでroot、backuppc、www-dataとしてde index.cgiを実行してみましたが、すべて同じ出力です。 (www-dataのログインシェルを有効にする必要がありました)

ただし、ブラウザのコンソールから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]);

認証後にApacheerror.logで記述された出力は、次のとおりです。

My userid is 33 (www-data)

そのため、ユーザーIDが誤ってBackupPcに渡されます。渡されるユーザーIDはwww-dataです。ここで、BackupPcに渡される認証済みユーザーIDはbackuppcであると予想しました。後者は、私がログインに使用したものであるためです。したがって、おそらくこれはApache構成の問題です。

環境変数を出力する2番目の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権限が付与されていました。

1

REMOTE_USER="$REDIRECT_REMOTE_USER="の出力を使用して、REMOTE_USERの下の構成スクリプトで/etc/Apache2/conf-enabledに対してgrepを実行しました。次を含む.confファイルを見つけました:

SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER

.confスクリプトは、backuppcとは無関係でした。 REMOTE_USER行の先頭に#を付けてから、サービスを再起動します

# apachtectl restart
# service backuppc restart

問題を解決しました。

0