22 FreeBSD连载:调整控制台设置

调整系统设置在FreeBSD系统中 , 很多设置都需要直接更改设置文件 , 例如系统启动脚本rc.conf , 控制终端设置文件/etc/ttys等 。虽然大部分很多系统的参数可以通过安装程序Sysinstall来设置 , 但是改动配置文件更为直接 。并且对于管理员来讲 , 只有了解配置文件是如何控制系统的表现 , 才能从根本上解决在实际操作中遇到的各种问题 。
调整控制台设置
控制台是个人用FreeBSD系统使用者最常进行操作的位置 , 因此应该调整控制台设置 , 使其最适合使用者的习惯 。可以在控制台上调整显示使用的字体、键盘映射、屏幕保护、虚拟终端等设置 。其中一些设置可以通过安装程序sysinstall来进行 , 然而有的设置必须通过命令方式或更改配置文件来完成 , 而且命令行方式具有更大的灵活性 。
虚拟终端与ttys设置
FreeBSD的控制台上有多个虚拟终端 , 可以在系统启动之后使用Alt键加上功能键来切换虚拟终端 。系统缺省只激活四个虚拟终端 , 这已经满足绝大多数的需要 。其中第四个虚拟终端在缺省情况下没有运行登录程序 , 这是因为X Server运行时也需要一个虚拟终端 , 因此必须将一个没有进程占据的控制台终端留给X Window使用 。
而通过更改内核的设置 , FreeBSD可以支持16个虚拟终端设备 , 由于通常个人计算机只有F1-F12共12个功能键 , 事实上只能使用12个虚拟终端 。其设备文件从ttyv0到ttyv15 , 可以使用MAKEDEV来创建这些设备文件 。为了增加虚拟终端的数量 , 除了更改内核设置、创建设备文件之外 , 还需要编辑系统文件/etc/ttys 。这个文件中有下面的内容是与此相关的:
# namegettytypestatuscomments
#
# This entry needed for asking passWord when init goes to single-user mode
# If you want to be asked for password, change "secure" to "insecure" here
console noneunknown off secure
#
ttyv0"/usr/libexec/getty Pc"cons25onsecure
ttyv1"/usr/libexec/getty Pc"cons25onsecure
ttyv2"/usr/libexec/getty Pc"cons25onsecure
ttyv3"/usr/libexec/getty Pc"cons25off securettyv3对应的行的第四列为 “off” , 这说明这个终端并没有运行getty程序 , 不会出现登录提示 。增加虚拟终端就意味着在这个文件中增加相应的设置行 , 例如要增加一个虚拟终端 , 就应该修改这个文件中的相应项为:
ttyv3"/usr/libexec/getty Pc"cons25onsecure
ttyv4"/usr/libexec/getty Pc"cons25off secure修改完这个文件之后需要重起系统 , 在内核支持的条件下 , 系统将增加一个虚拟终端 。
如果用户在控制台上运行了X Window , 由于X Server也需要控制Alt加功能键这样的组合键 , 因此控制台将这类组合键留给X Window , 不再使用它们来切换到其他虚拟终端 。此时切换到其他虚拟终端的热键为Ctrl加Alt再加上相应功能键 , 而从其他虚拟终端切换回X Window仍然为Alt 功能键F4 。这样的方式甚至不限于X Server , 也适用于其他直接使用控制台、截留键盘的程序 。
在/etc/ttys文件中 , 可以看到每个虚拟终端最后一个参数为 “secure” , 这表示这个终端位于安全可信赖的物理位置上 , 因此在这个终端上可以允许直接使用root帐号登录 , 如果将其改为 “insecure” , 那么root用户将不能在这个终端上直接登录 。由于控制台为系统最基本的终端设备 , 一般只有管理员或其他可信赖的用户才能使用 , 因此对应于这些虚拟终端 , 设置都为 “secure”。
这样一旦控制台的物理安全受到危害 , 系统安全就受到严重的影响 。正由于系统信赖控制台 , 当系统使用单用户模式启动时 , 不会询问root的口令 , 这个设置是由ttys文件中的console项来进行控制的 , 可以将ttys文件中的console项中对应的 “secure” 改为 “insecure” , 就表示控制台是不能信赖的 , 那么系统在进入单用户状态时 , 将验证root的口令 。在控制台的物理访问控制不能保证的情况下 , 这个设置虽然不能完全保证非法使用者不能进入单用户状态并获得系统的控制权 , 但提供了相当重要的保护能力 。

推荐阅读