启动TUX
TUX可以通过/etc/rc.d/init.d/tux脚本启动。
这个官方提供的教本可以用于在单处理器和多处理器的服务系统上启动TUX。
如果你想要使用自己编写的脚本启动TUX或者直接运行/usr/sbin/tux二进制执行文件启动它,那么你可以使用以下的参数:
表 3-3: /usr/sbin/tux 的选项:
选项描述
-t, --threads=N :tux线程数目
-d, --docroot=path :文档根目录
-m, --modpath=path:可加载用户空间扩充模块路径
-d, --daemon: 作为守护进程运行
-D, --date-interval=seconds:更新数据串的频率,单位为秒。
-?, --help 显示帮助信息
--usage 显示用法信息摘要
IRQ绑定能够带来少量的性能提高.如果你没有任何性能方面的经验,不推荐你尝试下列的做法。
IRQ绑定
将IRQ绑定到一组CPU中是2.4核心的一个新的特色。虽然它原来是作为 TUX的一部分发展,而现在则成为一般的、独立的系统核心的特色。每个IRQ源在linux中有一入口,即/proc/irq目录。例如:,IRQ 40的设定保存在/proc/irq/40下。IRQ绑定,或 IRQ联编,通过在该目录中smp_affinity的设置来配置。例如:,IRQ 40的smp_affinity保存在/proc/irq/40/smp_affinity下。smp_affinity的值设置为一个按照所有CPU编排的位掩码,该掩码被允许作为一个IRQ资源而使用。smp_affinity的缺省值是那十六进制值0xffffffff。这意味着IRQ的处理被发给全部的CPU。你不允许为了一个IRQ关闭全部的CPU掩码。如果IRQ控制器不支持IRQ绑定,那就不能从缺省值改变出来。如果多CPU被定义,那么IRQ源将使用最不繁忙的中央处理器。这被称作'最低优先级APIC(高级可编程中断控制器)路由选择.' IRQ绑定通过联编一个IRQ到具体的CPU或一组CPU来完成,联编按照回显一个十六进制值到对应的smp_affinity来实现。
因此,TUX的N个线程被联编到N个CPU上。如果单个TUX线程被使用(推荐情况)并且仅存在唯一的网络接口卡,那么那网络接口卡的IRQ将应与 cpu0联编在一起。
停止TUX
如果使用/etc/rc.d/init.d/tux start脚本来启动TUX ,那么必须使用/etc/rc.d/init.d/tux stop 来停止TUX服务。这样才会自动的将所有的用户空间加载模块卸载。
如果你没有使用上述的脚本停止TUX,请执行命令
/usr/sbin/tux -s 或者
/usr/sbin/tux --stop
调试TUX
如果你想要打印出TUX的状态、变量以及其他信息,可以执行gettuxconfig脚本。但你必须以root身份执行该命令。
MIME 类型
TUX在2.0.13版本(Linux内核patch 2.4.2-P3版本)支持三种MIME类型,他们在 /etc/tux.mime.types中有完整定义。
表 3-4: MIME 类型列表
MIME类型: 文件扩展名 :描述
TUX/redirect :*.pl *.php :所有以该扩展名结尾的文件都将重定向到第二服务器执行。
TUX/CGI :*.cgi *.pl :所有使用TUX/CGI后列出的扩展名的文件都将由TUX自带的CGI解释引擎执行CGI脚本。
TUX/module: *.tux *.x :所有的该类文件都作为TUX的用户空间扩展模块处理。
TUX/redirect 这一MIME 类型将所有符合扩展名的文件重定向到Apache服务器上,并且不对 文件的访问权限做任何检查。
TUX/CGI MIME 类型指明了必须存放在$DOCROOT/cgi-bin目录下的文件类型,或者由cgiroot参数指定的路径。详见参数列表说明。
关于模块类型参见第五小节。
TUX作为FTP服务器
从TUX的版本2.0.21开始到版本2.4.2 - u7(TUX核心修补程序),TUX可以被配置为一台匿名FTP服务器来运行。
为了将 TUX配置为FTP服务器,使用下面的命令∶
echo 1
/proc/sys/net/tux/application_protocol
echo 21
/proc/sys/net/tux/serverport
echo 0
/proc/sys/net/tux/nonagle
service tux restart
在执行这些命令以后,TUX FTP服务器将运行在端口21上,从文件根目录进行文件服务。
为让它显示目录列表,从FTP的文档根目录运行generatetuxlist脚本。这个脚本创造.TUX-LIST文件和.TUX-NLIST文件,用来高速缓存目录列表。每次当FTP文档根目录变化,脚本必须被重新运行以产生更新的目录列表。
注解
TUX FTP服务器已经通过大量的压力测试和FTP-客户程序兼容性测试。然而,它仍然是一个不成熟的软件。目前 tux/ftp没有已知的程序错误的或安全漏洞。然而它没有被广泛的大量的进行FTP客户程序测试(这一点恰恰是最重要的)。
TUX FTP服务器安全特色
下面的是TUX FTP服务器的安全特性∶
1、因为TUX以每-客户进程的方式启动,为每个FTP客户程序进行存储器分配的系统开销小于10 KB,这允许数以千计的并发连接。
2、Paranoid分析程序和paranoid命令评估。
3、chroots到docroot。
4、决不从任何外部的用户空间进程来启动TUX FTP服务。全部的FTP函数功能在一个运行于核心的大约900行的C语言模块内完成,非常小巧。
5、即使在内核工作方式下,TUX FTP服务器丢弃全部的特权行为,并转为nobody的UID和GID。
6、仅仅支持的最通常的下载命令(mget*),并且不提供递归支持。
第四章:安全性
TUX被设计成为具有非常高的安全性。这可能是因为在体系结构上,采用了用户空间的守护进程来处理TUX的部分复杂请求的缘故。
TUX仅在以下的几种条件下进行文件的服务:
1、URL中不包含”?“。
2、URL不以”/“开头。
3、URL指向一个已经存在的文件。
4、文件必须是nobody可读的。[1]
5、该文件不是一个目录,或是一个指向目录的链接。[1]
6、该文件不能被执行。[1]
7、该文件没有sticky-bit设置。[1]
8、URL不包含任何禁止的子字符串。[1]
备注:
[1]通过sysctl在/proc/sys/net/tux中设置
第五章、用户-空间可装入模块
除了运行在核心空间的那一部分TUX之外,还有运行于用户空间的为TUX编写的模块。
用户可装载模块的API目前正在不断发展中。当API变为可用时,本节的文档也相应地将要被更新。
用户-空间可装载模块是通常单个.c文件并且被编译.so的共享库文件。TUX允许有无限数目的用户空间HTTP模块,并且他们可以被选择编译成某种语言。他们有完全的地址空间保护,无法引起核心的崩溃,并且被非特权化。
用户-空间可装载的TUX模块和它们的位置必须在/etc/sysconfig/tux中用tuxmodules参数指定。这里可以参考第三章的相关细节。
从TUX版本2.0.13开始(Linux核心修补程序2.4.2 - p3),用户空间可装载模块不需要通过专门的权限激活。相反,模块使用公共的MIME类型定义文件来指定。用户空间可装载的TUX模块必须以.tux或.x作为文件扩展名,在/etc/sysconfig/tux用tuxmodules参数指定。该文件必须被root拥有,root作为创建组并且要能够被完全可读。该文件无须是可执行的文件。例如:为使用demo.tux用户空间可装载模块,你可以有下列的文件∶
[root@m /]# ls -l /var/www/html/demo.tux
-rw-rw-r-- 1 root root 0 Sep 3 04:42 /var/www/html/demo.tux
如果TUX发现一个URL对象具有这个MIME类型,它将搜索内部的模块列表,列表定义在/etc/sysconfig/tux的tuxmodules参数中。如果发现类型匹配的话,TUX发送请求到用户空间可装载模块中。