/etc/network/interfacesのエスケープ文字

/etc/network/interfacesのエスケープ文字

私が行に渡した文字列が設定を破るために使用できwpa-ssid "abc"ないことを確認したいと思います。/etc/network/interfaces

マニュアルで見つけることができるのは、\1行の終わりから次の行に進むために使用できることです。

\"しかし、行の途中にある場合はどうですか?

私が気になるのはSSIDとかそういうことです。

A"
up rm -rf /\

SSIDフィールドの任意の文字に使用できる汎用エンコーディングはありますか?

ベストアンサー1

Debian /etc/network/interfaces(またはDebianのifupdownユーティリティを使用する他のディストリビューション)では、バックスラッシュ改行シーケンスが削除され、バックスラッシュは他の場所では特別ではありません。二重引用符文字も特別ではありません。この文字は、(非連続)行で空白ではなく最初の文字の場合は#コメントを開始します。 Nullバイトは改行文字として扱われます(パーサーはC文字列を使用し、Nullバイトを特に処理しないため、追加の問題が発生する可能性があると思います)。

構成行は、オプション名の後にスペースで区切られた値の形式を取ります。先行および末尾のスペースは無視されます。一部の組み込みオプションは、行を単語としてさらに解析し、常にiface行の最後まで実行されます。

たとえば、行

wpa-ssid  "a  b"  "cd"  

オプションをwpa-ssid12文字の文字列に設定します"a  b"  "cd"(内部スペースを保持)。

WPA Supplicantのifupdownスクリプトは、構成文字列の先頭と末尾から二重引用符を削除します。wpa-ssid上記の行はと同じですwpa-ssid a  b"  "cd。これにより、SSIDに前後のスペースを含めることができます。

WPA アプリケーション ifupdown スクリプトで参照の問題が見つからないため、ifupdown が生成するすべてが安全なようです。

/etc/network/interfacesしたがって、改行またはnullバイトが含まれていない限り、すべての文字列をSSIDとして挿入することができます。文字列の周りに二重引用符を追加します(そうしないと、\先頭または末尾のスペース、次に終わる、または次に始まるまたは終わるSSIDが"壊れます)。

おすすめ記事