Debian

/etc/network/interfaces 中的轉義字元

  • April 3, 2014

我想確保我傳入該行wpa-ssid "abc"的任何字元串/etc/network/interfaces都不會用於中斷配置。

我在手冊中可以找到的只是\可以在一行的末尾使用以繼續下一行。

但是\"在一條線的中間呢?

我擔心的是SSID之類的

A"
up rm -rf /\

是否有任何通用編碼可用於 SSID 欄位中的任意字元?

在 Debian /etc/network/interfaces(或使用 Debian 的 ifupdown 實用程序的任何其他發行版)中,刪除了反斜杠換行符序列,並且反斜杠在其他任何地方都不是特殊的。雙引號字元也不特殊。#如果字元是(非繼續)行上的第一個非空白字元,則該字元開始註釋。空字節被視為換行符(我認為 - 解析器使用 C 字元串並且對空字節沒有特殊處理,因此它們可能會導致額外的惡作劇)。

配置行採用選項名稱後跟一個值的形式,由空格分隔。忽略前導和尾隨空格。一些內置選項進一步將行解析為單詞;選項的值iface總是執行到行尾。

例如,線

wpa-ssid  "a  b"  "cd"  

將選項wpa-ssid設置為 12 個字元的字元串"a  b"  "cd"(保留內部空格)。

WPA Supplicant 的 ifupdown 腳本在配置字元串的開頭和結尾去除雙引號,wpa-ssid上面的行相當於wpa-ssid a  b"  "cd. 這樣,您可以在 SSID 中包含前導和尾隨空格。

我在 WPA Supplicant ifupdown 腳本中找不到引用問題,因此看起來 ifupdown 生成的任何內容都是安全的。

因此,您可以允許將任何字元串作為 SSID 注入到/etc/network/interfaces中,前提是它不包含任何換行符或空字節。在字元串周圍添加雙引號(如果不這樣做,帶有前導或尾隨空格的 SSID,或者以 結尾\,或者以 開頭或結尾的SSID"將被損壞)。

引用自:https://unix.stackexchange.com/questions/102530