远程登录环境选项
摘录
这文档指定一在客户与服务器之间传送环境信息的机制。
//Use of this mechanism enables a telnet user to propagate configuration
information to a remote host when connecting.
这项机制允许一telnet客户在连接时将设置信息发送给服务器
1.命令名和代码
ENVIRON 36
IS 0
SEND 1
INFO 2
VAR 0
VALUE 1
ESC 2
ESC 2
USERVAR 3
2.命令含义
IAC WILL ENVIRON
命令发送者愿意发送环境变量。
IAC WONT ENVIRON
命令发送者拒绝发送环境变量。
IAC DO ENVIRON
命令发送者同意接收环境变量.
IAC DONT ENVIRON
命令发送者拒绝接收环境变量.
IAC SB ENVIRON SEND [ type ... [ type ... [ ... ] ] ] IAC SE
命令发件端请求远程服务器发送它的环境变量。 "type" 可能是 VAR 或者
USERVAR, 来指明是否是通用变量或用户自定义,只有DO方才能对SEND命令初始化
。如果变量名列表已经指定, 那么只能发送这些变量。反之,发送通用或缺省变量
。如果变量名列表已经指定, 那么只能发送这些变量。反之,发送通用或缺省变量
。如果变量之一未被命名,那么缺省环境中的所有这一类变量必须被全部发送。
IAC SB ENVIRON IS type ... [ VALUE ... ] [ type ... [ VALUE ... ] ]
命令发送端正在发送环境变量,这个命令是作为SEND的应答,只有WILL方才可
以发送IS命令。一对对的“type”/value必须按照send命令指定的顺序返回,
而且每个详细要求的类型都必须被回应。 "type" 将是 VAR or USERVAR.可以发送
多个环境变量。两个"type"之间的字符或VALUE指定了变量名. "type"到"VALUE"之
间的字符指定了变量的值.如果"type"后没有VALUE(例如,"type"后跟的是VAR,
USERVAR或者IAC SE) ,则此变量未定义.如果VALUE是紧跟着一个"type"或者
IAC,那么该变量是被定义的,但还未被赋值。如果在IS和IAC SE之间有一个IAC,
那么必须发送两个IAC IAC。如果变量或者值包含了VAR,必须以ESC VAR的形式发送
。如果一个变量或值包含一个USERVAR、VALUE、ESC,那么必须以ESC再加上以上三
者的形式发送。
IAC SB ENVIRON INFO type ... [ VALUE ... ] [ type ... [ VALUE ... ]
[
命令发送者发送以被改变了的环境变量信息。它与IS命令是一致的,除了用
INFO代替IS。只有WILL ENVIRON一方才可以发送INFO命令。不用INFO命令发送初始
信息,而是用SEND/IS序列。INFO命令是用来传送环境变量的改变,也可能是自动
产生的。
产生的。
3. 默认格式
这个选项的默认格式是
WONT ENVIRON
DONT ENVIRON
意味着不交换任何环境信息。
4.目的
许多操作系统在建立TELNET连接时会将启动信息和环境变量等传送给远程主机
。与其在每次新建立一次TELNET对话时都要传送与TELNET对话无关的信息,不如使
用一个一般的信息选项。
5.常用变量
USER
这个变量用来传送用户登陆的账号名,USER的值的格式是独立于系统的,由远
这个变量用来传送用户登陆的账号名,USER的值的格式是独立于系统的,由远
程主机决定的。
JOB
该变量用来传送用户登陆时的任务ID。格式同USER.
ACCT
该变量用来传送登录时的帐号ID,格式同USER.
PRINTER
该变量用来标志打印输出的默认定位,一般未定义。
SYSTEMTYPE
用来传送操作系统的类型。值与FTP[2]中的SYSTEM (SYST)命令
值
相同。格式第一个字见Assigned Numbers document [3].
DISPLAY
用来传送客户端的X显示定位。值的格式是
<host>:<dispnum>[.<screennum>]
它与使用 Telnet X-DISPLAY-LOCATION选项的信息传送是一致的。
如果DISPLAY变量和X-DISPLAY-LOCATION选项[4]都被接收到,同时
他们含有冲突信息,则最近收到的信息有效。
因为用户希望交换的变量是不可预料的,USERVAR类型允许用户传送任意的变
量/值组合。
比较偏激的做法是将来自远程主机软件和用户的值置于相同的可靠度而不信任
它们,但如果
使用添加的类型可以区分它们的区别,虽然这样在名字空间产生有可能冲突
6. 实现规则
WILL和 DO 只被用来在连接初期取得和赋予未来协商权。
一旦两台主机交换了WILL 和DO,DO ENVIRON 的发送者可以要求接收环境变量
。
只有DO一方可以发送请求(IAC SB ENVIRON SEND IACSE),只有WILL一方可
以
以
传送实际的环境信息(通过IAC SB ENVIRON IS ... IAC SE命令)。最然这个选
项
在连接的任何时候都可以使用,但环境信息的交换通常发生在连接启动时。这是
因为许多操作系统只在创建进程时才可以传送环境信息,用户在登陆前需要这些
信息。本章中,任何字符串必须是ASCII值的序列,例如,"joe"实际上是三个
字节序列(十进制)106 111 101。
接收端不必要接受所有接收到的变量。例如,如果客户发送USERVAR"TERM"值为
"xterm",
而且第一个TERMINAL-TYPE选项已经被接受了,服务器就可以忽略TERM变量。
同样的,
一些启动信息也可以有其他用途,例如,"USER","ACCT"和"PROF"的值可能被用
来决定
登陆哪一个账号,也可能不被送到用户环境中。一般来说,如果服务器已经通过
了某些
特定的方法赋予了某些变量的值。或者它不理解一个变量名,那么它便会忽略送
到ENVIRON
选项的值。服务器也可能将所有未知信息送入用户环境。这是推荐的实现方法,
因为它给与
了用户更大的灵活性。
了用户更大的灵活性。
下面是用户选项的一个示例
Host1 Host2
IAC DO ENVIRON IAC WILL ENVIRON
[用户一现在可以要求发送环境信息]
IAC SB ENVIRON SEND VAR "USER"
VAR "ACCT" VAR USERVAR IAC SE
[服务器向用户要求详细的USER、ACCT、默认的常用环境变量和默认的用户自定
义变量,
表示客户就要提供两次USER信息;一次是因为是服务器要求的,一次是因
为是默认环
境的一部分]
IAC SB ENVIRON IS VAR "USER"
VALUE "joe" VAR "ACCT" VALUE
"kernel" VAR "USER" VALUE
"joe"
VAR "DISPLAY" VALUE "foo:0.0"
USERVAR "SHELL" VALUE
"/bin/csh"
IAC SE
当定义有问题或者用户自定义无效时,一个客户用一个空的环境(IAC SB和IAC
SE
没有数据做回应是合法的,例如:
IAC SB ENVIRON IS IAC SE
响应以下命令,都是可以的
1
IAC SB ENVIRON SEND IAC SE
IAC SB ENVIRON SEND VAR IAC SE
IAC SB ENVIRON SEND USERVAR IAC SE
IAC SB ENVIRON SEND VAR USERVAR IAC SE
(最后一个例子和第一个例子是等同的)
建议,telnet ENVIRON选项的使用要符合规定
7.安全性考虑
一个系统的ENVIRON选项能否理解设置选项的交互作用和登入/验证过程是很
重要的
应该要有更加小心的分析手段来判断是否哪个变量对设置用户登入的优先权比
较安全,
较安全,
例如允许登入/验证程序本身的某个变量改变就是一个错误,他允许入侵者绕
过或者同登入/验证程序妥协。
--
期限的话,我希望是 ━━━ 一万年
━━━━━━━━━━━━━━━━━━━━━━━━━━━?