agetty.c中的特殊字符

时间:2012-07-12 05:31:01

标签: linux login

agetty.c将某些字符视为@,视为特殊字符。在登录提示符处输入@符号时,将删除所有文本。它与安全性有什么关系,或者根据设计它们是否被视为特殊字符?

2 个答案:

答案 0 :(得分:1)

  

宏:int VKILL这是KILL中KILL字符的下标   特殊控制字符数组。 termios.c_cc [VKILL]持有   性格本身。 KILL字符仅在规范中被识别   输入模式。当用户键入kill字符时,整个   当前输入行的内容被丢弃。杀人   角色本身也被丢弃了。

     

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

另一个解释@的人:

  

作为一个历史记录,擦除字符最初是#,而且   杀人角色原本是@。这些作业可以追溯到   古老的日子,终端用真正的墨水印在真纸上   发出很大的声音。但是,我被告知有一些现代的   这些设置仍然是默认more...

的系统

答案 1 :(得分:1)

如果您正在查看源代码,您会看到 @ Ctrl U 都是行终止字符的同义词。

这是TTY线路规则使用NAK(Ctrl-U)等控制字符进行流量控制的历史遗迹。尽管仍然存在很少的系统,这些系统对可用的字符集施加了硬件限制,但@等历史遗迹仍然存在于那里的3个设备中,在那里您无法发送实际的Ctrl-U并将其作为一个0x15。您还将看到与相同的功能,作为 BS 的历史同义词。

即使你忽略了那些如此有限的老式设备,老习惯,特别是在getty和stty中仍然存在,因为“我们总是这样做”。