システム:Ubuntu 16.04.3 LTS
あらすじ:
#chmod 777 /etc/bind/slave
#chmod 777 /etc/bind
#service bind9 restart
#tail /var/log/syslog | grep dump
Aug 23 07:14:45 appserver named[25251]: dumping master file: /etc/bind/slave/tmp-IDIdwXAG2I: open: permission denied
ここで何が起きてるの???
何が起こっているのかというと、named
プロセスは/etc/bind/slave/
ディレクトリにファイルを作成できません。
まず第一に、/etc
は、通常のサービスが書き込みアクセス権を持つための、実際にはかなり異例の場所です。
通常、データのタイプに応じて、/var/lib
または/var/cache
の下のディレクトリを使用します。
あなたの非常に寛大な許可(まったく良い考えではない)が役に立たない理由に関して、私は推測しますApparmor(Ubuntuの可能性が高い)またはSELinuxはBINDのプロファイルを持っていますファイルパスがnamed
によって書き込み可能である必要がある合理的な仮定(上記を参照)に基づいています。これは、ファイルシステムのアクセス許可に加えて適用されます。
書き込み可能なファイルをより適切な場所に移動することをお勧めします。
上記の答えは、原因をうまく説明しています。 /etc/bind/named.conf.options
で定義された相対パスがあります。これはdirectory "/var/cache/bind
です。
したがって、私が提案するのは、スレーブゾーンフィールドをnamed.conf.local
ファイルで定義されているより適切なディレクトリに保存し、ディレクトリの所有権をバインドグループに付与するか、書き込み権限をバインドグループに付与することです。
お気に入り:
mkdir /var/cache/bind/slaves
chown bind:bind /var/cache/bind/slaves