2012-07-12 67 views
3

agetty.c將特殊字符視爲@。當在登錄提示符處輸入@符號時,它將刪除所有文本。它與安全性有什麼關係,還是按照設計他們被視爲特殊字符?agetty.c中的特殊字符

回答

1

如果你正在尋找的源代碼,你會看到,無論@Ctrl鍵U是行終止字符的同義詞。

這是一個歷史悠久的遺物,TTY線訓練使用控制字符如NAK(Ctrl-U)進行流量控制。儘管仍然存在對可用字符集施加硬件限制的少數系統,但對於3個設備仍然存在的歷史遺蹟(如@)仍然存在,您無法發送實際的Ctrl-U並將其接收爲0x15。您還將看到作爲BS的歷史同義詞。

即使您忽略瞭如此有限的老式設備,舊習慣,特別是getty和stty仍然存在,因爲「我們一直這樣做」。

+0

所以基本上這不是出於安全原因,而是因爲「我們一直這樣做」? – 2012-07-12 05:59:17

+0

我可以想象沒有任何安全考慮因素會依賴'@'的特殊行爲,並且歷史原因是真實的。 – msw 2012-07-12 06:10:03

1

宏:int VKILL這是 特殊控制字符數組中的KILL字符的下標。 termios.c_cc [VKILL]擁有 字符本身。 KILL字符僅在規範 輸入模式下識別。當用戶輸入殺死字符時,當前輸入行的整個內容將被丟棄。殺人 人物本身也被丟棄。

KILL角色通常是C-u。 more...

另外一個解釋@

作爲一個歷史說明,擦除字符原是#和 殺字原是@。這些作業可追溯到古代的 ,當真正的紙張和 真正的墨水打印終端製造了很多噪音。但是,有人告訴我,有一些現代 系統上這些設置仍然是默認的more...

+0

你是對的,更新了答案 – perreal 2012-07-12 05:47:36

+0

感謝您的更新:) – 2012-07-12 05:50:51