問題:backuppcのWebインターフェイスに必須のメニュー項目がありません。 「ホストの編集」、「構成の編集」などの項目がありません。
backuppc
はUbuntu14.04.4LTSにインストールされます。 backuppc
アプリケーションを完全に削除し(dpkg --purge backupppc
を使用)、再インストールしました(apt-get install backuppc)。メニュー項目がまだありません。
CLIで/usr/lib/backuppc/cgi-bin/index.cgiを直接実行すると、不足しているメニュー項目が表示されます。 index.cgiからのHTML出力には次のものが含まれます。
<a href="?action=editConfig">Edit Config</a>
<a href="?action=editConfig&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
権限が付与されていました。
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
問題を解決しました。