PHP5研究室 - 国内Android用户的第一选择! http://www.phpv.net/ 为Android手机提供免费应用软件,ROM,免费游戏,破解刷机,汉化工具! 同时为Android开发者提供交流平台. Wed, 17 Jan 2018 18:13:44 +0000 Chiron ver1.0 zh-cn hourly 1 Linux 服务器忘记用户名&密码取回办法 http://www.phpv.net/html/1715.html http://www.phpv.net/html/1715.html#comment Sun, 09 Jan 2011 00:01:25 +0000 http://www.phpv.net/html/1715.html 今天遇到的问题,服务器版本是 ubuntu9.04  我发神经去改了 /etc/passwd 文件里的用户UID

一改了以后,sudo就出错了:

sudo: uid 1000 does not exist in the passwd file!
who are you?

结果啥事也不能做,别的用户又没有sudo的权限。试过PHP木马,找过这个系统版本的BUG下载 full-nelson.c 并编译想提权至ROOT都未成功。

最后只能请机房解决。操作步骤如下:
----------------------------------------------------------------

1.  按电源键关机,等待正常关机后重新开机。
2.  开机时按ESC键,在引导菜单中光标移至第二项【ubuntu 9.04 , kernel 2.6.28-11 server (recovery mode) 】回车。
3.  在recovery menu 中,选择最后一项【root Drop to root shell prompt】后回车。
4.  执行命令
       mount -o remount,rw /
       sed -i "s#1876#1000#g" /etc/passwd  (这命令是把UID改回来,如果要改密码这里的命令就是 passwd 您的用户名 然后输入新密码,要是你连自己用户名都不记得,可以ls /home 看看)
5. 最后按Ctrl+Alt+Del 三键重启服务器。

----------------------------------------------------------------

我在操作到第3步时遇到错误 Give root password for maintenance (or type Control-D to continue)

解 决办法是第2步时按 e 键进入编辑模式,选择kernel 那行再次按e 键,将ro single替换为rw single init=/bin/bash后回车确认,按 b 键引导boot。这样就不会报Give root password for maintenance错误了。

机器是用 lilo 来引导的话,这么改 boot: linux init=/bin/bash

 

PS:此方法适于所有LINUX的机器,所以取了这么个标题。

 

]]>
如何判断你的Linux系统是否被黑 http://www.phpv.net/html/1684.html http://www.phpv.net/html/1684.html#comment Thu, 16 Apr 2009 09:14:07 +0000 admin http://www.phpv.net/html/1684.html
  一不留神而被黑确实让人感到为难,更严重的是某些脚本小鬼还会下载一些众所周知的“root kits”或者流行的刺探工具,这些都占用了你的CPU,存储器,数据和带宽。这些坏人是从那里开始着手的呢?这就要从root kit开始说起。

  一个root kit其实就是一个软件包,黑客利用它来提供给自己对你的机器具有root级别的访问权限。一旦这个黑客能够以root的身份访问你的机器,一切都完了。唯一可以做就是用最快的效率备份你的数据,清理硬盘,然后重新安装操作系统。无论如何,一旦你的机器被某人接管了要想恢复并不是一件轻而易举的事情。

  你能信任你的ps命令吗?

  找出root kit的首个窍门是运行ps命令。有可能对你来说一切都看来很正常。图示是一个ps命令输出的例子。真正的问题是,“真的一切都正常吗?”黑客常用的一个诡计就是把ps命令替换掉,而这个替换上的ps将不会显示那些正在你的机器上运行的非法程序。为了测试个,应该检查你的ps文件的大小,它通常位于 /bin/ps。在我们的Linux机器里它大概有60kB。我最近遇到一个被root kit替换的ps程序,这个东西只有大约12kB的大小。

  另一个明显的骗局是把root的命令历史记录文件链接到/dev/null。这个命令历史记录文件是用来跟踪和记录一个用户在登录上一台Linux机器后所用过的命令的。黑客们把你的历史纪录文件重定向到/dev/null的目的在于使你不能看到他们曾经输入过的命令。

  你可以通过在 shell提示符下敲入history来访问你的历史记录文件。假如你发现自己正在使用history命令,而它并没有出现在之前使用过的命令列表里,你要看一看你的~/.bash_history 文件。假如这个文件是空的,就执行一个ls -l ~/.bash_history命令。在你执行了上述的命令后你将看到类似以下的输出:

  -rw------- 1 jd jd 13829 Oct 10 17:06 /home/jd/.bash_history

  又或者,你可能会看到类似以下的输出:

  lrwxrwxrwx 1 jd jd 9 Oct 10 19:40 /home/jd/.bash_history -> /dev/null

  假如你看到的是第二种,就表明这个 .bash_history 文件已经被重定向到/dev/null。这是一个致命的信息,现在就立即把你的机器从Internet上断掉,尽可能备份你的数据,并且开始重新安装系统。

  寻找未知的用户账号

  在你打算对你的Linux机器做一次检测的时候,首先检查是否有未知的用户账号无疑是明智的。在下一次你登录到你的Linux机器时,敲入以下的命令:

  grep :x:0: /etc/passwd

  只有一行,我再强调一遍,在一个标准的Linux安装里,grep命令应该只返回一行,类似以下:

  root:x:0:0:root:/root:/bin/bash

  假如在敲入之前的grep命令后你的系统返回的结果不止一行,那可能就有问题了。应该只有一个用户的UID为0,而如果grep命令的返回结果超过一行,那就表示不止一个用户。

  认真来说,虽然对于发现黑客行为,以上都是一些很好的基本方法。但这些技巧本身并不能构成足够的安全性,而且其深度和广度和在文章头提到的入侵检测系统比起来也差得远。
]]>
取代squid的高性能开源HTTP加速器Varnish配置教程 http://www.phpv.net/html/1585.html http://www.phpv.net/html/1585.html#comment Sat, 08 Dec 2007 22:37:56 +0000 抽烟的蚊子 http://www.phpv.net/html/1585.html http://www.vg.no) 使用3台Varnish代替了原来的12台squid,性能居然比以前更好。

varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一,他认为现在的计算机比起1975年已经复杂许多。在1975年时,储存媒介只有两种:内存与硬盘。但现在计算 机系统的内存除了主存外,还包括了cpu内的L1、L2,甚至有L3快取。硬盘上也有自己的快取装置,因此squid cache自行处理物件替换的架构不可能得知这些情况而做到最佳化,但操作系统可以得知这些情况,所以这部份的工作应该交给操作系统处理,这就是 Varnish cache设计架构。


安装配置教程:

1.下载源码包编译安装:

cd /usr/local/src && wget http://nchc.dl.sourceforge.net/sourceforge/varnish/varnish-1.1.1.tar.gz
tar zxvf /usr/local/src/varnish-1.1.1.tar.gz
cd /usr/local/src/varnish-1.1.1
./autogen.sh
./configure --enable-debugging-symbols --enable-developer-warnings --enable-dependency-tracking

注:如果你的gcc版本是4.2.0或更高的版本,可以加上--enable-extra-warnings编译参数,在出错时,得到附加的警告信息。
我 这里是用源码包安装的,如果你是redhat或centos可以用rpm包来安装


2. 建立cache目录:

mkdir -p /cache/varnish/V  && chown -R nobody:nobody /cache

3.编写启动文件:

cd /usr/local/varnish/sbin
vi start.sh

内容如下:
#!/bin/sh
# file: start.sh
date -u
/usr/local/varnish/sbin/varnishd \
-a 10.0.0.129:80 \
-s file,/cache/varnish/V,1024m \
-f /usr/local/varnish/sbin/vg.vcl.default \
-p thread_pool_max=1500 \
-p thread_pools=5 \
-p listen_depth=512 \
-p client_http11=on \

注:-a 是指定后端服务器的ip或hostname,就象squid做revese proxy时的originserver.

不过这个也可以在vcl里面写。
-f 是指定所用的vcl的文件。
-s 指定cache目录的存储类型,文件位置和大小。
-p 是指定varnish的启动的一些启动参数,可以根据自己的机器配置来优化varnish的性能。
其他参数已经参数的具体含义可以用varnishd --help 来查看。

4.编写vcl:

我的vcl如下:

backend default {
        set backend.host = "127.0.0.1";
        set backend.port = "http";
}

#我用的是一台机器做测试,使用的backend用的是127.0.0.1:80.如果varnish机器和后台的机器分开的。
写上对应的机器的ip或hostname就可以了。

sub vcl_recv {

        if (req.request != "GET" && req.request != "HEAD") {
                pipe;
        }

        if (req.http.Expect) {
                pipe;
        }

        if (req.http.Authenticate || req.http.Cookie) {
                pass;
        }

        if (req.request == "GET" && req.url ~ "\.(gif|jpg|swf|css|js)$") {
                lookup;
        }
                lookup;
        }

sub vcl_pipe {
        pipe;
        }

sub vcl_pass {
        pass;
        }

sub vcl_hash {
             hash;
         }

sub vcl_hit {
        if (!obj.cacheable) {
                pass;
        }
                deliver;
        }

sub vcl_timeout {
        discard;
}

sub vcl_discard {
        discard;
}

如果是多个站点在不同的originserver时,可以使用下面配置:

backend www {
       set backend.host = "www.abc.com";
       set backend.port = "80";
         }

backend images {
      set backend.host = "images.abc.com";
      set backend.port = "80";
         }

sub vcl_recv {
      if (req.http.host ~ "^(www.)?abc.com$") {
            set req.http.host = "www.abc.com";
            set req.backend = www;
      } elsif (req.http.host ~ "^images.abc.com$") {
            set req.backend = images;
      } else {
            error 404 "Unknown virtual host";
}

5.启动varnish:

/usr/local/varnish/sbin/start.sh

Mon Sep  3 03:13:19 UTC 2007
file /cache/varnish/V/varnish.tEKXXx (unlinked) size 1073741824 bytes (262144 fs-blocks, 262144 pages)
Using old SHMFILE

ps waux | grep varnish
root     16254  0.0  0.0 11200  708 ? Ss   10:43   0:00 /usr/local/varnish/sbin/varnishd -a 10.0.0.129:80 -s /varnish/V,1024m

-f /usr/local/varnish/sbin/vg.vcl.default -p thread_pool_max 1500 -p thread_pools 5 -p listen_depth 512 -p client_http11 on
nobody   16255  0.0  0.1 1152552 1808 ?      Sl   10:43   0:00 /usr/local/varnish/sbin/varnishd -a 10.0.0.129:80 -s

file,/cache/varnish/V,1024m -f /usr/local/varnish/sbin/vg.vcl.default -p thread_pool_max 1500 -p thread_pools 5 -p

listen_depth 512 -p client_http11 on

看到上面信息说明varnish正确启动,恭喜你,你已经配置成功了。


------------------------
本文转自Leftleg's Blog,为阅读方便,有部分增删. ]]>
基于apache mod_vhost_alias模块的虚拟主机配置教程 http://www.phpv.net/html/1584.html http://www.phpv.net/html/1584.html#comment Mon, 26 Nov 2007 00:20:57 +0000 admin http://www.phpv.net/html/1584.html 前言:我有几台服务器托在机房,连年亏损. 我想我应该考虑将他们向外出租.准备明年运营,以扭转几年来尴尬的局面.于是,就有了这个教程.

目标:

1.用户开通FTP后,自动在/www/下创建一个与域名同名的目录.
(假如phpv.net的管理员购买空间后,他的主目录将是 /www/phpv.net)
2.空间知道泛域名绑定.
(即:访问者在浏览器内输入www.phpv.net将会自动访问/www/phpv.net/www.phpv.net目录下的index文件.而输入bbs.phpv.net则访问/www/phpv.net/bbs.phpv.net/这个目录.....)


按以前的,我得挨个绑虚拟主机.然后再restart apache
像这样:

<VirtualHost *:80>
    ServerAdmin webmaster@phpv.net
    DocumentRoot /www/phpv.net/www.phpv.net
    ServerName www.phpv.net
    ErrorLog logs/phpv-error_log
    CustomLog logs/phpv-access_log common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@phpv.net
    DocumentRoot /www/phpv.net/bbs.phpv.net
    ServerName bbs.phpv.net
    ErrorLog logs/bbs-phpv-error_log
    CustomLog logs/bbs-phpv-access_log common
</VirtualHost>

...............

#apache restart

简直太烦人太累了.

后来经过自己的测试和多位好友的帮助,我使用Apache 的 mod_vhost_alias模块.完美实现了这个要求.


我是这样开始的:

1.把原来的虚拟主机配置都删除掉, NameVirtualHost *:80 这句也加上个#在它前面.

2.接着,在httpd.conf使用下面的mod_vhost_alias配置

UseCanonicalName Off
VirtualDocumentRoot /www/%2+/%0

(注意:以上/www/是我的网站根目录,在实现操作中请按自己要求更改.)

重启apache.
#apache restart

3.测试
   使用FTP服务器的功能,使得用户登录时,自动以其域名创建主目录.(我用的是 pureftpd 具体配置请参阅相关文献)  
   以刚刚创建好的FTP用户登录,在目录下创建文件夹www.phpv.net 上传一个phpinfo的index.php
   输入http://www.phpv.net 看看是否正常. (域名的A记录要指向本机IP) 如果能正常显示出info信息,就表明成功了.

4.但,问题来了,使用http://phpv.net 访问的却是 /www/net/phpv.net这个目录.
想使用rewirte做一个自动跳转来解决这个问题,使得用户输入http://phpv.net时能访问到/www/phpv.net/www.phpv.net 这个目录

rewirte解决方式:

加以下rule到http.conf中

RewriteEngine On
#RewriteCond %{HTTP_HOST} ^w+.w{1,3}$
RewriteCond %{HTTP_HOST} ^[a-z-0-9]+.w{1,3}$RewriteRule (.*) http://www.%{HTTP_HOST}$1 [R=301,L]


再次重启Apache,访问http://phpv.net,自动跳转到http://www.phpv.net


5.相关问答:
如果把不需要执行PHP的目录禁用PHP解析?

这样:
<Directory "/www/phpv.net/manual.phpv.net">
php_flag engine off
</Directory>

好了.配置基本OK.

感谢:fluck boban 吴洪声 对本文的贡献.

附后:此配置基本能满足大部分用户的需求.
但有以下缺点:不能根据虚拟主机做个性化设置,比如,设置一个虚拟主机的PHP执行目录范围.
还有不能自动绑定两个域名到同一目录.
]]>
*nix服务器前台常出现的提示及含意 http://www.phpv.net/html/1557.html http://www.phpv.net/html/1557.html#comment Sun, 16 Sep 2007 01:00:49 +0000 easy http://www.phpv.net/html/1557.html eth1: Too much work at interrupt, IntrStatus=0x0001
这条提示的含意为. 某网卡的中断请求过多. 如果只是偶尔出现一次可忽略. 但这条提示如果经常出现或是集中出现,那涉及到的可能性就比较多有可能需要进行处理了. 可能性比较多,如网卡性能;服务器性能;网络攻击..等等.

一般类的提示
IPVS: incoming ICMP: failed checksum from 61.172.0.X!
服务器收到了一个校验和错误的ICMP数据包. 这类的数据包有可能是非法产生的垃圾数据.但从目前来看服务器收到这样的数据非常多.一般都忽略.
一般代理服务器在工作时会每秒钟转发几千个数据包.收到几个错误数据包不会影响正常的工作.
这是问我最多的一类提示了.

一般类的提示
NET: N messages suppressed.
服务器忽略了 N 个数据包.和上一条提示类似.服务器收到的数据包被认为是无用的垃圾数据数据. 这类数据多是由攻击类的程序产生的.
这条提示如果 N 比较小的时候可以忽略.但如果经常或是长时间出现3位数据以上的这类提示.就很有可能是服务器受到了垃圾数据类的带宽攻击了.

一般类的提示
UDP: bad checksum. From 221.200.X.X:50279 to 218.62.X.X:1155 ulen 24
UDP: short packet: 218.2.X.X:3072 3640/217 to 222.168.X.X:57596
218.26.131.X sent an invalid ICMP type 3, code 13 error to a broadcast: 0.1.0.4 on eth0
服务器收到了一个错误的数据包.分别为 UDP校验和错误; 过短的UDP数据包; 一个错误的ICMP类型数据. 这类信息一般情况下也是非法产生的.
但一般问题不大可直接忽略.

一般类的提示
kernel: conntrack_ftp: partial 227 2205426703+13
FTP_NAT: partial packet 2635716056/20 in 2635716048/2635716075
服务器在维持一条FTP协议的连接时出错. 这样的提示一般都可以直接忽略.

网络通信严重问题!
NETDEV WATCHDOG: eth1: transmit timed out
eth1: link down
eth1: link up, 10Mbps, half-duplex, lpa 0x0000
eth2: link up, 100Mbps, full-duplex, lpa 0x41E1
setting full-duplex based on MII #24 link partner capability of 45e1
这些提示是网络通信中出现严重问题时才会出现. 故障基本和网络断线有关系. 这几条提示分别代表的含意是 某块网卡传送数据超时; 网卡连接down; 网卡连接up,连接速率为10/100Mbps,全/半双功.
这里写到的最后三行的提示比较类似. 出现这类提示时必须注意网络连接状况进行处理!!!

网络通信严重问题!
NIC Link is Up 100 Mbps Full Duplex
情况和 kernel: eth1: link up,...相同.指某块网卡适应的连接速率. 一般认为没有说明哪个网卡down,只是连续出现网卡适应速率也是通信有问题.
如果是网线正常的断接可以忽略这类的信息.

网络通信严重问题!
eth0: Transmit timed out, status 0000, PHY status 786d, resetting...
eth0: Reset not complete yet. Trying harder.
第一条提示 网卡关送数据失败. 复位网卡. 第二条提示 网卡复位不成功.... 这些提示都属于严重的通信问题.

报警程序的提示
0001 ##WMPCheckV001## 2005-04-13_10:10:01 Found .(ARP Spoofing sniffer)! IP:183 MAC:5
0002 ##WMPCheckV001## 2005-04-07_01:53:32 Found .(MAC_incomplete)! IP:173 mac_incomplete:186
0003 ##WMPCheckV001## 2005-04-17_16:25:11 Found .(HIGH_synsent)! totl:4271 SynSent:3490
0004 ##WMPCheckV001## 20......
这是由报警程序所引起的提示. 详细的信息需要用报警程序的客户端进行实时接收.详细情况请查看"告警模块和日志".

一般类的提示
eth1: Promiscuous mode enabled.
device eth1 entered promiscuous mode
device eth1 left promiscuous mode
这几行提示指. 某块网卡进入(离开)了混杂模式. 一般来说混杂模式是当需要对通信进行抓包时才用到的. 当使用维护或故障分析时会使用到(比如consoletools中的countflow命令). 正常产生的这类提示可以忽略.
如果在前台和远端都没有进行维护时出现这个提示倒是应该引起注意,但这种可能性不大.

基本无关
keyboard: unknown scancode e0 5e
键盘上接收到未定义的键值. 如果经常出现.有可能是键盘有问题. linux对于比较特殊的键或是组合键,有时也会出这样的提示.
要看一下服务器的键盘是不是被压住了. 其它情况一般忽略.

基本无关
uses obsolete (PF_INET,SOCK_PACKET)
系统内核调用了一部分功能模块,在第一次调入时会出现. 一般情况与使用调试工具有关. 可直接忽略.

网络通信故障
Neighbour table overflow.
出现这个提示.一般都是因为局域网内有部分计算机被病毒感染. 情况严重时会影响通信. 必须处理内部网通信不正常的计算机.

网络通信故障
eth1: Transmit error, Tx status register 82.
Probably a duplex mismatch. See Documentation/networking/vortex.txt
Flags; bus-master 1, dirty 9994190(14) current 9994190(14)
Transmit list 00000000 vs. f7171580.
0: @f7171200 length 800001e6 status 000101e6
1: @f7171240 length 8000008c status 0001008c
....
这个提示是3com网卡特有的. 感觉如果出现量不大的话也不会影响很严重. 目前看维一的解决办法是更换服务器上的网卡. 实在感觉3com的网卡有些问题...

服务器系统严重故障
CPU0: Temperature above threshold
CPU0: Running in modulated clock mode
服务器CPU工作温度过高. 必须排除硬件故障.]]>
FreeBSD6.1 +CARP+IPVS双机热备份负载均衡技术 http://www.phpv.net/html/1529.html http://www.phpv.net/html/1529.html#comment Tue, 26 Dec 2006 17:59:23 +0000 easy http://www.phpv.net/html/1529.html FreeBSD6.1 +CARP+IPVS双机热备份负载均衡


经过一个星期的找资料….测试….找资料….再测试……,终于测试成功Freebsd6.1+IPVS+CARP,实现双机热备份和负载均衡功能。其中:
IPVS: 实现负载均衡功能
CARP: 实现双机热备份

一 系统环境

FreeBSD 6.1 Release 最小化安装(完全安装也可以) + Kernel Source (ALL)

SRV01 192.168.2.133 255.255.255.0 (双机热备 主)
SRV02 192.168.2.130 255.255.255.0 (双机热备 辅)
Share IP 192.168.2.144 255.255.255.0 (主辅机器共享)

二 安装过程

a.在核心配置文件中添加对CARP的支持和options NF_SOCKOPT(ipvs需要) 选项
Srv01# cd /usr/src/sys/i386/conf/
Srv01# cp GENERIC LVS
Srv01# vi LVS
添加以下选项:
options                NF_SOCKOPT
device                 carp

 

b. Freebsd6.1 的uipc_socket.c中没有#include "opt_nfsockopt.h" ,需手动添加否则编译将出错。
vi /usr/src/sys/kern/uipc_socket.c
找到#include "opt_compat.h"这一行,在下面加上 #include "opt_nfsockopt.h"

c. 打ipvs for freebsd6.1补丁(patch)。
Srv01# cd /usr/ports/net/ipvs
Srv01# make patch-system         #具体说明可以查看当前目录下的Makefile

d. 编译核心
Srv01# cd /usr/src/sys/i386/conf
Srv01# config LVS
Srv01# cd ../compile/LVS
Srv01# make depend
Srv01# make
Srv01# make install
Srv01# reboot

以上操作在srv02上同样做一遍

 

 

三 具体配置

CARP 部分 (如果只需双机备份功能只配这部分就可以了)
SRV01
srv01# sysctl net.inet.carp.preempt=1
srv01# ifconfig carp0 create
srv01# ifconfig carp0 vhid 1 pass password 192.168.2.144/24 up     #password随便输入,但srv01和srv02必需一致。
SRV02
srv02# sysctl net.inet.carp.preempt=1
srv02# ifconfig carp0 create
srv02# ifconfig carp0 vhid 1 advskew 100 pass yourpassword 192.168.2.144/24 up

 

IPVS 部分

srv01# kldload /boot/modules/ipvs.ko
srv01# kldload /boot/modules/rr/ip_vs_rr.ko
srv01# ipvsadm ]]> qmail防止垃圾邮件方案 http://www.phpv.net/html/1502.html http://www.phpv.net/html/1502.html#comment Mon, 13 Mar 2006 15:30:12 +0000 easy http://www.phpv.net/html/1502.html 2, 配合smtp auth需要进行对ip地址的控制。比如对本地地址就不再限制其权限了。
3, 修改ucspi-tcp-x.xx的代码,编辑文件rblsmtpd.c。
原文件中的"rbl.maps.vix.com",修改为"relays.ordb.org"。编译后使它支持对垃圾邮件服务器的查询。其工作原理是将一台服务器的IP地址反向书写,然后向提供服务的服务器查询,如果被登记为垃圾服务器,就返回127.0.0.2,这样本机服务器就无法和垃圾服务器通信了,举例说明,某服务器1.2.3.4来连接你的服务器,于是查询4.3.2.1.relays.ordb.org,如果返回127.0.0.2就表明是垃圾服务器,否则就是正常的服务器。如果你自己的IP也能够返回127.0.0.2的话,就要赶快和www.ordb.org联系了,这说明你的服务器由问题了。
4, 编译了代码之后,修改smtpd.sh启动脚本。1002,1001对应qmaild的uid与gid.
/usr/local/bin/tcpserver -q -p -R -c 100 -u 1002 -g 1001 -x /vmail/etc/tcp.smtp.cdb 0 smtp /usr/local/bin/rblsmtpd -b -r 'relays.ordb.org:Open relay problem - see <URL:http://ordb.org/lookup/?host=%IP%>' /var/qmail/bin/qmail-smtpd /vmail/bin/vchkpw /usr/bin/true /bin/md5checkpw  /usr/bin/true 2>&1  &
5, 对qmail中增加badrcptto控制。
Qmail中缺省有一个配置文件叫做badmailfrom,字面意思很简单,只要列进这个列表就是要干掉的邮件。Mailfrom自然是源地址,同样我们可以控制目标地址,也就是对rcpt to的控制,所以把空文文件命名为badrcptto。
先修改一个简单的文件qmail-showctl.c,查找badmailfrom,复制该行,将badmailfrom改为badrcptto,编译后,就可以显示badrcptto控制文件中的内容了,不过这个修改中看不中用。
接下来修改qmail-smtpd.c,这就动真格的了。还是跟着badmailfrom走,查找bmf相关的单词,对应复制,并将其修改为brt。
并在void smtp_mail(arg) char *arg;函数中增加对brtcheck的调用。
  if (flagbarf) { err_bmf(); return; }
  if (relayclient) {
    --addr.len;
    if (!stralloc_cats(&addr,relayclient)) die_nomem();
    if (!stralloc_0(&addr)) die_nomem();
  }
  else
    if (!addrallowed()) { err_nogateway(); return; }
  if (!env_get("RELAYCLIENT") && brtcheck()) { err_brt(); return; }
  if (!stralloc_cats(&rcptto,"T")) die_nomem();
  if (!stralloc_cats(&rcptto,addr.s)) die_nomem();
  if (!stralloc_0(&rcptto)) die_nomem();
  out("250 ok\r\n");
}
6, 针对垃圾邮件的特征定制代码。
前人的经验介绍了不少,自己也不能太懒惰,也整理了一些不顺眼的邮件。
正常来讲,邮件地址的开头应该是字母,不应该是数字,尽管现在很多服务器能够支持全数字的邮件地址,所以我的做法是只要是@前只有数字的就横刀砍死。
我们来看这样一个地址 a@b.cn,尽管我不知道是不是有这样的域名,但是这应该是最短的邮件地址了,所以一个邮件地址至少有6个字节,低于的杀,a@b.c显然不合法,自然不用理会他的内容。邮件地址超短有问题,超长也不多好,定义一个长度,太长的同样有问题。
其实我想说的就是对发信人的地址进行分析,合法通过,非法干掉。
对应以上分析修改了qmail-smtpd.c的addrparse函数。

都是前人的经验,整理了一下,千万不要追究我侵权。
]]>
基于FreeBSD、BIND平台自动解析不同IP的智能DNS服务器架构过程 http://www.phpv.net/html/1500.html http://www.phpv.net/html/1500.html#comment Tue, 07 Mar 2006 02:19:37 +0000 easy http://www.phpv.net/html/1500.html


本文档基于FreeBSD、BIND平台,Win用户请回避,没有FreeBSD基础的用户请回避。Linux或者其他Unix用户可以作为参考文档。

配置步骤:
1. 前言
2. 软件列表
3. 安装BIND 9
4. 配置BIND 9
5. 测试BIND 9
6. 添加一个NS地址
7. 添加一个域名
8. 测试域名

一、 前言
本文假设你有一定的FreeBSD操作经验,懂得日常的FreeBSD操作,有良好的耐心,可以
把文档看完,可以处理突发的问题。
本文再假设你已经有了一个域名,并且已经指向所操作的服务器,服务器的/etc/rc.conf
已经正确的设置此域名。在本文里面,此域名为ns.naizhao.com,IP为219.132.1.1。
/etc/rc.conf如下所设置
hostname="ns.naizhao.com" #机器的域名,请酌情修改
ifconfig_fxp0="inet 219.132.1.1 netmask 255.255.255.0" #此行可能有所不同,
请别照抄。fxp0为我机器上面的网卡。

二、 软件列表
本文所用到的软件可从以下地址获取。连接地址最后更新为2005/12/12

BIND 9.3.1
ftp://ftp.isc.org/isc/bind9/9.3.1/bind-9.3.1.tar.gz

三、 安装BIND 9
我们假设你已经把BIND 9使用fetch或者wget到/root/下,并且已经su为root。
# tar zxvf bind-9.3.1.tar.gz
# cd bind-9.3.1
# ./configure
# make
# make install
# make clean
到此,BIND 9已经安装上了。如果安装过程中出现什么问题,一般不会是你的人品有问题,
请分析错误信息,把缺少的包给安装上。

四、 配置BIND 9
先别急,看看你的BIND版本再说。
# named -v
如果你是FreeBSD 4,估计你看到的提示类似下面的
named 8.3.7-REL Sun Dec 12 04:15:36 CST 2004
如果你是FreeBSD 5,估计你不会看到上面的信息。然后我们再来输入
# /usr/local/sbin/named -v
这次,不管你是FreeBSD 4还是FreeBSD 5,都会看到下面的信息
BIND 9.3.1
所以在这里,我们统一使用/usr/local/sbin/named
废话少说,开始配置吧。
# cd /etc/namedb
# chmod +x make-localhost
# ./make-localhost
会在当前目录生成一个localhost.rev和localhost-v6.rev。后者是用于IPv6
生成rndc的key
# /usr/local/sbin/rndc-confgen >rndc.conf
打开rndc.conf,把
# Use with the following in named.conf, adjusting the allow list as needed:
......
# End of named.conf
之间的内容,去掉注释#,添加到named.conf中
编辑named.conf
# ee named.conf
找到
zone "." {
type hint;
file "named.root";
};

zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "localhost.rev";
};

// RFC 3152
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA" {
type master;
file "localhost-v6.rev";
};

// RFC 1886 -- deprecated
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" {
type master;
file "localhost-v6.rev";
};
把上面的内容全部用/**/注释
/*
zone "." {
type hint;
......
file "localhost-v6.rev";
};
*/
在named.conf文件的最后,把刚才rndc.conf里面的内容添加进去
key "rndc-key" {
algorithm hmac-md5;
secret "ILzfx8ONk2444ix9jnDfKA==";
};

controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
(上面的内容只供参考)
接下来的,就是文章里面的重头戏了。把下面的内容,原封不动的添加到named.conf的最后
//add cnc acl by naizhao
acl "CNC" {
58.16.0.0/16;
58.17.0.0/17;
58.17.128.0/17;
58.18.0.0/16;
58.19.0.0/16;
58.20.0.0/16;
58.21.0.0/16;
58.22.0.0/15;
58.240.0.0/15;
58.242.0.0/15;
58.244.0.0/15;
58.246.0.0/15;
58.248.0.0/13;
60.0.0.0/13;
60.8.0.0/15;
60.10.0.0/16;
60.11.0.0/16;
60.12.0.0/16;
60.13.0.0/18;
60.13.128.0/17;
60.14.0.0/15;
60.16.0.0/13;
60.24.0.0/14;
60.30.0.0/16;
60.31.0.0/16;
60.208.0.0/13;
60.216.0.0/15;
60.218.0.0/15;
60.220.0.0/14;
61.48.0.0/13;
61.133.0.0/17;
61.134.96.0/19;
61.134.128.0/17;
61.135.0.0/16;
61.137.128.0/17;
61.138.0.0/17;
61.138.128.0/18;
61.139.128.0/18;
61.148.0.0/15;
61.156.0.0/16;
61.159.0.0/18;
61.161.0.0/18;
61.161.128.0/17;
61.162.0.0/16;
61.163.0.0/16;
61.167.0.0/16;
61.168.0.0/16;
61.176.0.0/16;
61.179.0.0/16;
61.181.0.0/16;
61.182.0.0/16;
61.189.0.0/17;
125.32.0.0/16;
125.40.0.0/13;
202.96.0.0/18;
202.96.64.0/21;
202.96.72.0/21;
202.97.128.0/18;
202.97.224.0/21;
202.97.240.0/20;
202.98.0.0/21;
202.98.8.0/21;
202.99.64.0/19;
202.99.96.0/21;
202.99.128.0/19;
202.99.160.0/21;
202.99.168.0/21;
202.99.176.0/20;
202.99.208.0/20;
202.99.224.0/21;
202.99.232.0/21;
202.99.240.0/20;
202.102.128.0/21;
202.102.224.0/21;
202.102.232.0/21;
202.106.0.0/16;
202.107.0.0/17;
202.108.0.0/16;
202.110.0.0/17;
202.111.128.0/18;
203.93.8.0/24;
203.93.192.0/18;
210.13.128.0/17;
210.14.160.0/19;
210.14.192.0/19;
210.15.32.0/19;
210.15.96.0/19;
210.15.128.0/18;
210.21.0.0/16;
210.52.128.0/17;
210.53.0.0/17;
210.53.128.0/17;
210.74.96.0/19;
210.74.128.0/19;
210.82.0.0/15;
218.8.0.0/14;
218.12.0.0/16;
218.21.128.0/17;
218.24.0.0/14;
218.56.0.0/14;
218.60.0.0/15;
218.67.128.0/17;
218.68.0.0/15;
218.104.0.0/14;
219.154.0.0/15;
219.156.0.0/15;
219.158.0.0/17;
219.158.128.0/17;
219.159.0.0/18;
220.252.0.0/16;
221.0.0.0/15;
221.2.0.0/16;
221.3.0.0/17;
221.3.128.0/17;
221.4.0.0/16;
221.5.0.0/17;
221.5.128.0/17;
221.6.0.0/16;
221.7.0.0/19;
221.7.32.0/19;
221.7.64.0/19;
221.7.96.0/19;
221.8.0.0/15;
221.10.0.0/16;
221.11.0.0/17;
221.11.128.0/18;
221.11.192.0/19;
221.12.0.0/17;
221.12.128.0/18;
221.13.0.0/18;
221.13.64.0/19;
221.13.96.0/19;
221.13.128.0/17;
221.14.0.0/15;
221.192.0.0/15;
221.194.0.0/16;
221.195.0.0/16;
221.196.0.0/15;
221.198.0.0/16;
221.199.0.0/19;
221.199.32.0/20;
221.199.128.0/18;
221.199.192.0/20;
221.200.0.0/14;
221.204.0.0/15;
221.206.0.0/16;
221.207.0.0/18;
221.207.64.0/18;
221.207.128.0/17;
221.208.0.0/14;
221.212.0.0/16;
221.213.0.0/16;
221.216.0.0/13;
222.128.0.0/14;
222.132.0.0/14;
222.136.0.0/13;
222.160.0.0/15;
222.162.0.0/16;
222.163.0.0/19;
222.163.32.0/19;
222.163.64.0/18;
222.163.128.0/17;
};
//view add by naizhao
view "view_cnc" {
match-clients { CNC; };
zone "." {
type hint;
file "named.root";
};

zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "localhost.rev";
};

include "master/cnc.def";
};

view "view_any" {
match-clients { any; };
zone "." {
type hint;
file "named.root";
};

zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "localhost.rev";
};

include "master/telecom.def";
};

添加完成后,保存。
# mkdir master
# touch master/cnc.def
# touch master/telecom.def
完成,接着就是测试

五、 测试BIND 9
# /usr/local/sbin/named -gc /etc/namedb/named.conf
正常的情况下你会看到下面的信息
12-Dec-2005 13:55:46.772 starting BIND 9.3.1 -gc /etc/namedb/named.conf
12-Dec-2005 13:55:46.816 loading configuration from '/etc/namedb/named.conf'
12-Dec-2005 13:55:46.824 no IPv6 interfaces found
12-Dec-2005 13:55:46.825 listening on IPv4 interface fxp0, 219.132.1.1#53
12-Dec-2005 13:55:46.825 listening on IPv4 interface lo0, 127.0.0.1#53
......
12-Dec-2005 13:55:46.866 running
只要有最后一行,那么你的配置就算是基本成功了。
按一下键盘的ctrl+c,先把BIND 9停掉。

六、 添加一个NS
平时大家修改域名信息的时候,都会发现有一个DNS信息的修改,里面会有一些类似
ns7.hichina.com一样的东西。添加这个东西不难,在新网的后台就可以添加。添加
的时候要注意,域名状态设置里面的域名必须不能在锁定状态。
登陆新网的后台->域名管理->注册本域名下的DNS->DNS名字:ns->IP地址219.132.1.1
(按照自己要求修改IP地址)->确定->MyDNS功能->添加新的A记录->ns->IP地址
219.132.1.1->提交。
对于一些收费的(如万网)或者不提供DNS服务器注册的管理后台,我们一样有办法去
解决。首先按照上面的,先添加一个A记录,然后打开
http://domain.cnic.ac.cn/domain/nameserver/createhost.jsp
按照上面的提示注册一下就行。
OK,等待DNS生效吧

七、 添加一个域名
# cd /etc/namedb/master
# mkdir cnc
# mkdir telecom
# ee cnc.def
添加
zone "wuhongsheng.com" {
type master;
file "master/cnc/wuhongsheng.com";
};

# ee telecom.def
添加
zone "wuhongsheng.com" {
type master;
file "master/telecom/wuhongsheng.com";
};
添加网通的解析,解析到的IP为202.111.1.1
#ee cnc/wuhongsheng.com
添加
$TTL 3600
$ORIGIN wuhongsheng.com.
@ IN SOA ns.naizhao.com. root.ns.naizhao.com.(
2005121013 ;Serial
3600 ; Refresh ( seconds )
900 ; Retry ( seconds )
68400 ; Expire ( seconds )
15 );Minimum TTL for Zone ( seconds )
;
@ IN NS ns.naizhao.com.
@ IN A 202.111.1.1
www IN A 202.111.1.1
;
;end
添加电信的解析,解析到的IP为219.132.1.2
#ee telecom/wuhongsheng.com
添加
$TTL 3600
$ORIGIN wuhongsheng.com.
@ IN SOA ns.naizhao.com. root.ns.naizhao.com.(
2005121013 ;Serial
3600 ; Refresh ( seconds )
900 ; Retry ( seconds )
68400 ; Expire ( seconds )
15 );Minimum TTL for Zone ( seconds )
;
@ IN NS ns.naizhao.com.
@ IN A 219.132.1.2
www IN A 219.132.1.2
;
;end
添加一个脚本,用于在系统启动的时候自动把DNS服务器启起来
# ee /usr/local/etc/rc.d/named.sh
添加内容
/usr/local/sbin/named -gc /etc/namedb/named.conf &
# chmod 777 /usr/local/etc/rc.d/named.sh
把服务器启起来
# /usr/local/etc/rc.d/named.sh
OK,到此你的DNS服务器就算是跑起来了。试一下分别用网通和电信的线路ping一下吧,嘿嘿。

八、 测试域名
除了用简单的ping来测试域名外,你还可以使用nslookup来测试域名
# nslookup
>server ns.naizhao.com
>set q=a
>wuhongsheng.com

 

转载注明出处:wuhongsheng.com

]]>
linux下利用Squid构建高速的Proxy Server http://www.phpv.net/html/1498.html http://www.phpv.net/html/1498.html#comment Wed, 15 Feb 2006 11:19:07 +0000 easy http://www.phpv.net/html/1498.html 一、什么是Proxy Server(代理服务器),Proxy的作用。

    在真实世界中我们常常会去帮人家办一些事情,例如帮人家交电费什么的,在这种情况下你不是电表的主人,而是代办者(代理者)的身份。在网络世界中Proxy就是相当于那个帮人家交电费的人了,当我们发出连接请求的时候,就会通过Proxy去帮我们直接与目标服务器沟通,帮我们取得资料。

    通常我们所说的高速缓存代理,就是以空间换时间,就如下图那样。
 

client通过Proxy Server上网的步骤如下:

①client端向Server发出请求。
②Server收到请求后比较判断Cache中时候存在client想要的资料,如果没有则向远程Server发送数据请求。
③将请求回来的资料先存放到Cache中,再将资料传送给client端。
④当client发出的请求中所需要的资料在Cache中有,则将Cache中的资料直接传送给client端。

虽然当第一访问这向Proxy请求的数据Cache中没有时,Proxy抓取数据后会先保存在Cache中,这样访问速度变慢了,可是第二个访问者以及后来的访问者需要该资料的时候,proxy都不要想远程服务器请求,直接将cache中的资料发送给后来的请求者就行了,这样就减少了连接远程服务器的流量,另外由于proxy是在本地的,所以传输速度也更快。


二、使用Squid在构建Proxy Server

本文中笔者所使用的环境是:
操作系统: Redhat 9.0,内核:2.4.20-31.9,其他系统套件已经通过apt更新到最新了


1.编译安装Squid

由于Squid对系统硬件要求比较高,所以我们安装的时候应尽量优化。

CODE:
#groupadd squid
#useradd squid
添加suqid用户和用户组

CODE:
#export CFLAGES='-O2 -mcpu=pentium4 -march=pentium4 -mmmx -msse -msse2'
可以根据你的CPU选择相应的参数
GCC-3.1以上可]]>
【FreeBSD Developers' Handbook】中的IPv6部分 http://www.phpv.net/html/1488.html http://www.phpv.net/html/1488.html#comment Tue, 06 Dec 2005 10:59:41 +0000 easy http://www.phpv.net/html/1488.html Chapter 8 IPv6 Internals

8.1 IPv6/IPsec Implementation

由Yoshinobu Inoue投稿。

本节将讨论一些与IPv6 和IPsec 相关的实现内幕。这些功能来自KAME 项目。

8.1.1 IPv6

8.1.1.1 Conformance

与IPv6 相关的功能总是试图保持和最新的IPv6 规范的一致性。为了下面引用方便,我们把一些相关文档列在下面(注意:这不是一个完整的列表,那太难于维护了. . .)。

如果想知道进一步的细节,请参考相关文档、RFC 、manual page 或者是源代码中的注释。

一致性测试是在TAHI 项目中对KAME STABLE 套件进行的。可以在这里看到结果:http://www.tahi.org/report/KAME/

RFC1639: FTP Operation Over Big Address Records (FOOBAR)
    RFC2428 is preferred over RFC1639. FTP clients will first try RFC2428, then RFC1639 if failed.

RFC1886: DNS Extensions to support IPv6

RFC1933: Transition Mechanisms for IPv6 Hosts and Routers
    IPv4 compatible address is not supported.
    automatic tunneling (described in 4.3 of this RFC) is not supported.
    gif(4) interface implements IPv[46]-over-IPv[46] tunnel in a generic way, and it covers "configured tunnel" described in the spec. See 23.5.1.5 in this document for details.

RFC1981: Path MTU Discovery for IPv6

RFC2080: RIPng for IPv6
    usr.sbin/route6d support this.

RFC2292: Advanced Sockets API for IPv6
    For supported library functions/kernel APIs, see sys/netinet6/ADVAPI.

RFC2362: Protocol Independent Multicast-Sparse Mode (PIM-SM)
    RFC2362 defines packet formats for PIM-SM. draft-ietf-pim-ipv6-01.txt is written based on this.

RFC2373: IPv6 Addressing Architecture
    supports node required addresses, and conforms to the scope requirement.

RFC2374: An IPv6 Aggregatable Global Unicast Address Format
    supports 64-bit length of Interface ID.

RFC2375: IPv6 Multicast Address Assignments
    Userland applications use the well-known addresses assigned in the RFC.

RFC2428: FTP Extensions for IPv6 and NATs
    RFC2428 is preferred over RFC1639. FTP clients will first try RFC2428, then RFC1639 if failed.

RFC2460: IPv6 specification

RFC2461: Neighbor discovery for IPv6
    See 23.5.1.2 in this document for details.

RFC2462: IPv6 Stateless Address Autoconfiguration
    See 23.5.1.4 in this document for details.

RFC2463: ICMPv6 for IPv6 specification
    See 23.5.1.9 in this document for details.

RFC2464: Transmission of IPv6 Packets over Ethernet Networks

RFC2465: MIB for IPv6: Textual Conventions and General Group
    Necessary statistics are gathered by the kernel. Actual IPv6 MIB support is provided as a patchkit for ucd-snmp.

RFC2466: MIB for IPv6: ICMPv6 group
    Necessary statistics are gathered by the kernel. Actual IPv6 MIB support is provided as patchkit for ucd-snmp.

RFC2467: Transmission of IPv6 Packets over FDDI Networks

RFC2497: Transmission of IPv6 packet over ARCnet Networks

RFC2553: Basic Socket Interface Extensions for IPv6
    IPv4 mapped address (3.7) and special behavior of IPv6 wildcard bind socket (3.8) are supported. See 23.5.1.12 in this document for details.

RFC2675: IPv6 Jumbograms
    See 23.5.1.7 in this document for details.

RFC2710: Multicast Listener Discovery for IPv6

RFC2711: IPv6 router alert option

draft-ietf-ipngwg-router-renum-08: Router renumbering for IPv6

draft-ietf-ipngwg-icmp-namelookups-02: IPv6 Name Lookups Through ICMP

draft-ietf-ipngwg-icmp-name-lookups-03: IPv6 Name Lookups Through ICMP

draft-ietf-pim-ipv6-01.txt: PIM for IPv6
    pim6dd(8) implements dense mode. pim6sd(8) implements sparse mode.

draft-itojun-ipv6-tcp-to-anycast-00: Disconnecting TCP connection toward IPv6 anycast address

draft-yamamoto-wideipv6-comm-model-00
    See 23.5.1.6 in this document for details.

draft-ietf-ipngwg-scopedaddr-format-00.txt : An Extension of Format for IPv6 Scoped Addresses


8.1.1.2 Neighbor Discovery

邻居发现(Neighbor Discovery )功能已经相当稳定了。目前已提供对地址解析(Address Resolution )、重复地址检测(Duplicated Address Detection )和邻居不可达检测(Neighbor Unreachability Detection )的支持。在不久的将来,我们将在内核中添加对代理邻居公告(Proxy Neighbor Advertisement )的支持,同时还以管理工具的形式提供主动邻居公告(Unsolicited Neighbor Advertisement)的发送命令。

如果DAD 失败,则地址将被标识为“重复”,同时发送一个消息给syslog(通常也会发给控制台)。“重复”标志可以通过ifconfig(8)命令进行查看。管理员有责任去检查DAD 失败并从中恢复。这种机制在不久的将来应该会得到改进。

有些网络驱动程序会将组播包环回给它自己,哪怕你告诉它别这样也无济于事(尤其是在混杂模式中)。在这种情况下DAD 就会失败,因为DAD引擎看到了输入的NS 包(实际上是这个节点自己发的),认为是出现了重复的情况。你可以去看看sys/netinet6/nd6 nbr.c:nd6 dad timer() 函数中用注释为“heuristics”的#if条件编译宏包括起来的部分(注意,在“heuristics”部分中的代码段是不符合规范的)。

邻居发现(Neighbor Discovery )规范(RFC2461 )并未述及以下情况中的
邻居缓存处理:

1. 当没有邻居缓存条目的时候,节点收到未经请求的不带有链路层地址的RS/NS/NA/redirect包

2. 在没有链路层地址的媒质上的邻居缓存处理(我们需要一个邻居缓存条目用于IsRouter bit)

对于第一种情况,我们基于IETF ipngwg 邮件列表上的讨论进行了实现。如果想知道进一步的细节的话,可以参看源代码中的注释,并通过email 查看从1999年2月6日的(IPng 7155)开始的讨论线索。

IPv6 的on-link 判决规则(RFC2461 )已经和BSD 网络代码中的假设大为不同。目前,当默认路由器列表为空时,并不支持on-link 判决规则(RFC2461,5.2 节,第二段的最后一句话―]]> linux SSH 的一些安全小技巧 http://www.phpv.net/html/1479.html http://www.phpv.net/html/1479.html#comment Wed, 21 Sep 2005 09:27:26 +0000 easy http://www.phpv.net/html/1479.html


SSH
的一些安全小技巧

----------------------------------------------------

, 前言

关于 ssh 的好处, 相信不用我多说了吧?
简而言之, 之前的 rpc command telnet 都全可用 ssh 代替
.
比方如下的这些常见功能
:
-
远程登录

ssh user@remote.machine
-
远程执行
ssh user@remote.machine 'command ...'
-
远程粗?
scp user@remote.machine:/remote/path /local/path
scp /local/path
user@remote.machine:/remote/path
- X forward
ssh -X
user@remote.machine
xcommand ...
- Tunnel / Portforward
ssh -L 1234:remote.machine:4321
user@remote.machine
ssh -R 1234:local.machine:4321
user@remote.machine
ssh -L 1234:other.machine:4321
user@remote.machine

至于详细的用法, 我这就不说了. 请读者自行研究吧.
我这里要说的, 是针对 ssh 服务为大家介绍一些安全技巧, 希望大家用得更安心些
.


, 实作


(
实作以 RedHat 9 为范例)

1)
禁止 root 登录

# vi /etc/ssh/sshd_config
PermitRootLogin no


2)
废除密码登录, 强迫使用 RSA 验证(假设 ssh 账户为 user1 )

# vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile     .ssh/authorized_keys
PasswordAuthentication no
# service sshd restart
# su - user1
$ mkdir ~/.ssh 2>/dev/null
$ chmod 700 ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 644 ~/.ssh/authorized_keys

--------------------------------------------------
转往 client :
$ ssh-keygen -t rsa
(
按三下 enter 完成]]> 帮您找回丢失的freebsd&linux密码 http://www.phpv.net/html/1476.html http://www.phpv.net/html/1476.html#comment Mon, 12 Sep 2005 11:52:58 +0000 easy http://www.phpv.net/html/1476.html

密码丢了,怎么办?

1.freebsd
FreeBSD 4.7
当显示 boot ... 9 seconds按任意健
输入:boot -s 
登录以后
#/sbin/mount -a
#passwd
输入新密码.

FreeBSD 5.*
当要求选择启动模式时按4进入单用户模式登录以后
#/sbin/mount -a
#passwd
输入新密码.

2.solaris

ROOT密码遗忘的处理方法
1,如果还能用普通用户登陆的话,%df /etc,确定包含/etc目录分区的设备名
%df /etc
/ /dev/dsk/c0t0d0s0...
此例中是c0t0d0s0,如果你的根目录分区设备不一样的话,替换一下就可以啦
2,把系统盘插入cdrom中
3,出现提示符后,使用sync命令刷新文件系统
4,按下stop+A
5,ok状态下键入boot cdrom -s
6,在#提示符下键入mkdir /temp ,然后键入mount /dev/dsk/c0t0d0s0 /temp
如果出现挂接不上的情况时,那么就运行fsck先 fsck /dev/rdsk/c0t0d0s0,然后在mount
7,cd /temp/etc
8,cp shadow shadowbak
9,cat shadow
得到root的口令字符串
root:djglcj0J:6453::::(其中djglcj0J就是root的加密后的口令字符串)
10,sed s/djglcj0J// shadow>shadownew
11,cat shadownew查看是否已经变为
root::6453::::
12,cp shadownew shadow
13,cd /
unmount /temp
sync
shutdown -i0 -g0 -y
14,取出CD后,重起系统,这时root就不需要密码啦!

这样也可以!
OK boot cdrom -s
#TERM=sun
#export TERM
#mount /dev/dsk/c0t0d0s0 /a
#vi /a/etc/shadow(删除root的加密后的密码)
#reboot

3.SCO UNIX

一旦运行SCO UNIX 机器的超级用户口令忘了,可以用这个方法解决。
  在另一台安装了SCO UNIX的机器上,以Root用户注册,进入系统,用 mkdev fd命令或命令scoadmin中的Filesystem之Floppy Filesystem Manager来制作应急启动盘,包括Boottable 盘和Root filesystem盘。
  将上述制作的Root filesystem盘安装到硬盘上。
  # mount /dev/fd0135ds18 /mnt
  再将硬盘上的/etc/passwd 和/tcb/files/auth/r/root两个文件拷贝到Root filesystem盘上。
  # cp /etc/passwd /mnt
  # cp /tcb/files/auth/r/root /mnt
  卸载机器1硬盘上的软盘。
  # umount /dev/rfd0135ds18
  用Boot软盘去启动遗忘口令的机器,根据提示插入Root filesystem软盘,待出现“#”时,进行下面操作,将硬盘挂到软盘上:
  # mount /dev/hd0root /mnt
  备份硬盘上的/etc/passwd和/tcb/files/auth/r/root两个文件。因为这两个文件中还包含其他用户的注册信息。
  用Root filesystem软盘上的两个文件,覆盖硬盘上的两个文件/etc/passwd 和/tcb/files/auth/r/root。
  # mkdir /cyh
  # mount /dev/fd0135ds18 /cyh
  # cd /cyh
  # cp passwd /mnt/etc
  # cp root /mnt/tcb/files/auth
  卸载安装上的两个文件系统。
  # umount /dev/hd0root
  # umount /dev/fd0135ds18
  取出软盘,重新启动机器,待出现Login时,以Root用户注册,键入第二台机器的超级用户口令,这样便可进入的超级用户了。
  进入超级用户后,用Passwd和Root这两个文件的备份覆盖原来的文件,接着用passwd命令修改超级用户的口令。
  用户可以用Alt+F2换一个窗口,以Root注册,现在用修改后的口令就能用了。

4.aix4.3.3(ibm) rs/6000


将第一张安装盘放入光驱,重起机器,按f5键,终端按5,进入maintance页面,选择mount rootvg的功能选项,调用password修改口令,退出即可

5.linux

三种办法:
1.在系统进入单用户状态,直接用passwd root去更改

2.用安装光盘引导系统,进行linux rescue状态,将原来/分区挂接上来,作法如下:
cd /mnt
mkdir hd
mount -t auto /dev/hdaX(原来/分区所在的分区号) hd
cd hd
chroot ./
passwd root

这样可以搞定

3.将本机的硬盘拿下来,挂到其他的linux系统上,采用的办法与第二种相同

6.redhat 8 redhat9

一. lilo法
1. 在出现 lilo: 提示时键入 linux single
画面显示 lilo: linux single
2. 回车可直接进入linux命令行
3. #vi /etc/shadow
将第一行,即以root开头的一行中root:后和下一个:前的内容删除,
第一行将类似于
root::......
保存
4. #reboot重启,root密码为空

二. grub法
1. 在出现grub画面时,用上下键选中你平时启动linux的那一项(别选dos哟),然后按e键
2. 再次用上下键选中你平时启动linux的那一项(类似于kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/),然后按e键
3. 修改你现在见到的命令行,加入single,结果如下:
kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/
4. 回车返回,然后按b键启动,即可直接进入linux命令行
5. #vi /etc/shadow
将第一行,即以root开头的一行中root:后和下一个:前的内容删除,
第一行将类似于
root::......
保存
6. #reboot重启,root密码为空

7.HP-UX 

启动时按esc 进入isl
进入ISL后:
isl>bo pri
(yes/no)y
ipl>hpux -is
ipl>vi /etc/passwd
去掉root 的密码即可


转载加部分修改编辑.

]]>
Linux 常见问题 1000 个详细解答 http://www.phpv.net/html/1475.html http://www.phpv.net/html/1475.html#comment Sun, 04 Sep 2005 02:55:55 +0000 easy http://www.phpv.net/html/1475.html
写在前面:
Linux 常见问题 1000 个详细解答 ,分三页.非常多内容.我没仔细看,但绝对是好资料.一些URL有可能不存在.大家真正要用到,请再搜索.


一、 如何建立多用户
  提醒大家一句,别一直使用root用户,因为root用户在系统中有着至高无上的权力,一不小心就可能破坏系统。比如我们想删除/temp目录下的文件却将命令不小心输成“rm / temp(在‘/’后多了一个空格)”,那么就极可能删去根目录下的所有文件。再者,“Linux是一个真正意义上的多任务、多用户系统”,不体会一下Linux的特色岂不可惜。为了方便自己和别人使用,就在Linux系统下多建几个用户吧。

  输入“adduser newuser”,回车,屏幕对命令没有一点儿反应,错啦?不,实际上,系统已接受了新用户。你应该接着输入命令 “passwd newuser”,屏幕将提示输入口令,再次输入确认, 一个新的用户就增加成功,真简单。马上登录试一试吧。

  Linux提供了六个虚拟控制台,用ALT+F1~F6切换(在X-window下用CRTL+ALT+F1~F6切换),每个控制台均可以用不同的用户登录,运行不同的程序。赶快为家人和朋友建个用户吧。

二、在Linux下如何使用软盘、光盘以及DOS等非Linux分区

  这是Linux初学者问得最多的问题。由于大家已习惯了微软的访问方法,总想用类似的思路来找到软盘和光盘。但在Linux下,却沿袭了UNIX将设备当作文件来处理的方法。所以要访问软盘和光盘,就必须先将它们装载到Linux系统的/mnt目录中来。

  装载的命令是mount,格式如下:mount -t 文件系统类型 设备名 装载目录

  文件系统类型就是分区格式,Linux支持的文件系统类型有许多:

  msdos DOS分区文件系统类型
  vfat 支持长文件名的DOS分区文件(可以理解为Windows文件)系统类型
  iso9660 光盘的文件系统类型
  ext2 Linux的文件系统类型
  ......

  设备名,指的是你要装载的设备的名称。软盘一般为/dev/fd0 fd1;光盘则根据你的光驱的位置来决定,通常光驱装在第二硬盘的主盘位置就是/dev/hdc;如果访问的是DOS的分区,则列出其设备名,如/dev/hda1是指第一硬盘的第一个分区。 装载目录,就是你指定设备的载入点。

  1. 装载软盘

  首先用mkdir /mnt/floppy 在/mnt目录下建立一个空的floppy目录,然后输入mount -t msdos /dev/fd0 /mnt/floppy 将DOS文件格式的一张软盘装载进来,以后就可以在/mnt/floppy目录下找到这张软盘的所有内容。

  2. 装载Windows所在的C盘

  mkdir /mnt/c 在/mnt目录下建立一个空的c目录;
  mount -t vfat /dev/hda1 /mnt/c 将Windows的C盘按长文件名格式装载到/mnt/c目录下,以后在该目录下就能读写C盘根目录中的内容。

  3.装载光盘

  mkdir /mnt/cdrom 在/mnt目录下建立一个空的cdrom目录;
  mount -t iso9660 /dev/hdc /mnt/cdrom 将光盘载入到文件系统中来,将在/mnt/cdrom目录下找到光盘内容。有的Linux版本允许用mount /dev/cdrom或mount /mnt/cdrom命令装载光盘。
  要注意的是,用mount命令装入的是软盘、光盘,而不是软驱、光驱。有些初学者容易犯一个毛病,以为用上面命令后,软驱就成了/mnt/floppy,光驱就成了/mnt/cdrom,其实不然,当你要换一张光盘或软盘时,一定要先卸载,再对新盘重新装载。

  4.卸载
  卸载的命令格式是:umonut 目录名,例如要卸载软盘,可输入命令umonut /mnt/floppy。要注意的是,在卸载光盘之前,直接按光驱面板上的弹出键是不会起作用的。

三、如何安装Linux的应用软件

  对于普通用户,安装或升级软件可以用Red Hat公司的软件包安装与管理工具RPM。使用后你就可以轻松安装软件、升级软件和卸载软件并查询软件信息。

  如果你安装的是Red Hat Linux,那么你就可以使用RPM了,如果不是,你可以先安装RPM。方法如下:
  1. 下载RPM软件包: ftp://ftp.redhat.com/pub/code/rpm/rpm-2.3.11.tar.gz
  2. 在Linux命令行下依次运行:
  cd/
  tar xzvf rmp-2.3.11.tar.gz
  cd rpm-2.3.11
  ./configure
  make
  make install
  mkdir /var/local /var/local/lib /var/local/lib/rpm /var/lib/rpm

  这样,你就完成了RPM的安装,以后便可以在网上或光盘上寻找软件的RPM安装版。然后使用RPM进行安装,RPM的使用方法很简单:
  1. 用RPM安装软件包 :rpm -ivh 软件文件名
  例如 rpm -ivh fvwm95-2.0.43a.chinese-1.i386.rpm 屏幕上就会输出该软件包的名称和安装的进度条:
  fvwm95 ###############
  当进度条走到底,中文fvwm95(一种X-Window的界面)就安装完了,再运行X-Window,啊,全中文的fvwm95就在我的眼前。

  2. 用RPM反安装软件包:rpm -e 软件名
  例如:rpm -e fvwm95

  3. 用RPM升级软件包:rpm -Uvh 软件升级版文件名
  例如:rpm -Uvh fvwm95-2.1.0a.chinese-1.i386.rpm,RPM自动反安装原来的老版本,将升级版的软件安装入系统。怎么样,不难吧!

四 、如何在Windows系统中查看Linux的文件

  通过使用装载命令mount,我们能够在Linux中轻松地查阅、使用Windows的文件。俗话说有来有往嘛,我们当然也希望在Windows中能看到Linux的文件。可是Windows可不像Linux那么友好,并未备有与Linux沟通的工具,怎么办呢?别急,网络上有个小工具叫Linuxdos,不到500K,运行在Windows下,专用于查看Linux的文件。运行之后,你可以选择驱动器,然后它就像资源管理器一样列出Linux的文件系统。

五、如何汉化Linux

  Linux的母语是英文,所以满屏幕都是“英国老鼠”,用起来特不方便,如果想输入中文更没辙。不过现在的中国软件人员可谓人才辈出,已经为Linux的汉化提供了全面的解决方案。

  1.中文模拟终端chdrv
  首先,总得让Linux能显示中文吧!chdrv是在命令行下的中文模拟终端,也就是说,只要你装上了它,你就可以在Linux的命令行状态下显示和输入汉字了。chdrv启动后在tty7(用Ctrl+Alt+F7)建立一个虚拟终端,用户在tty7上登录后就可以使用它提供的中文支持。tty1到tty6不会受到它的影响。
  如果你能找到RPM格式的安装包,就可以轻松地使用RPM安装程序安装它。否则你可以到ftp://ftp.ihep.ac.cn/pub/chinese/system分别取得 chdrv 的已编译的chdrvbin-0.23.gb.tar.gz和字体文件chdrvfont.tar.gz。 然后用root登录,依次执行以下命令:
  tar xvzf chdrvbin-0.23.gb.tar.gz 将编译好的chdrv解压到chdrv-0.23.gb目录
  mv chdrvfont.tar.gz chdrv-0.23.gb/ 将字体文件移到chdrv-0.23.gb目录
  cd chdrv-0.23.gb 进入此目录
  ./installbin 运行安装文件

  2.中文输入服务器xcin
  如果你常在X-Window中使用Linux,一定试试用XCIN来解决中文输入的问题。XCIN 是Xwindow Chinese INput的缩写,是一个在X-Window模式下运行的中文输入系统,安装它后,X-Window的所有终端都将提供中文服务。
  你可从ftp://ftp.ihep.ac.cn/pub/chinese/system/xcingb-2.2.tar.gz取得GB码版的XCIN文件包。然后用root登录,依次执行以下命令:
  tar xzvf xcingb-2.2.tar.gz  解压缩
  cd xcingb-2.2         进入目录
  ./configure          修改安装选项
  make             编译
  make install          安装
  同样,如果你能找到该软件的RPM安装版,可以用RPM来安装。
  到此为止,我们已经介绍了在命令行下和X-Window中使用中文的方法。可是在文本编辑软件中依然只能显示中文,却无法输入汉字。要解决这个问题必须自己动手修改两个地方:

  1) 为不同shell设置
  若使用Bash Shell:在 /etc/profile 增加下面的内容:
  stty cs8 -istrip
  stty pass8
  export LANG=C
  export LC_CTYPE=iso-8859-1
  若使用Tcsh Shell:在 /etc/csh.login 或 /etc/csh.cshrc 增加设定如下:
  stty cs8 -istrip
  stty pass8
  setenv LANG C
  setenv LC_CTYPE iso-8859-1

  2) 在自己主目录下的.inputrc文件中增加下面的内容:
  set convert-meta off
  set output-meta on

  3.中文的窗口管理器 C-fvwm95
  fvwm95就像是Linux英文Win95,中国的Linux用户一直期望有一天能在中文的窗口下使用Linux。这一愿望现在终于成为现实。中国科学院高能物理研究所计算中心的于明俭先生将fvwm95作了汉化,我们终于可以将fvwm95上那些讨厌的英文换成汉字了!
  大家可以到ftp.ihep.ac.cn/pub/chinese/packages/中下载汉化了的fvwm95的源代码。它所用的字库也可以在ftp.ihep.ac.cn/pub/chinese/fonts/pcf/中取得。下载文件中附带了安装说明。由于它的配置还是较麻烦的,所以最好去找找相应的RPM包。

  4.下载BluePoint Linux Star Preview(蓝点预览版)
   蓝点预览版基于Red Hat,内含:中文内核(kernel);控制台中文显示/输入;中文Xserver(CXWIN 0.6),X的中文显示/输入;汉化Message和相应库文件,经过中文化和本地化处理的NLS message和库文件。

   a. 中文内核
   1. 性能卓越, 内核实现中文支持,占用资源极少,速度极快.
   2. 多语言支持, 同屏显示多内码(GB/BIG5).
   3. 兼容性极好,内核兼容上层应用程序,最彻底的解决办法.
   4. 支持高分辨率, 完全取决与用户自己的硬件限制.
   5. 支持各种字体,支持简繁字体共14种.
   6. 热键切换语言环境(GB/BIG5/EN).

   b. 中文Xserver
   1. 兼容性好,至少95%的纯西文应用软件可以支持中文处理.
   2. 内置输入和显示支持,使用非常方便,无须另外安装输入模块.
   3. TTF字库支持.
   4. 支持GB/BIG5内码.

   c. 汉化Message和相应库文件
   1. 提示中文化,开机、关机和常用软件的消息提示全部中文显示。

   如果需要安装中文xwindow和输入法,则需要下载star-cxwin.tar.gz. 如果需要安装中文控制台及语言环境, 则需要下载star-zhcon.tar.gz 如果需要在控制台上使用24点阵汉字库, 请下载star-font24.tar.gz 注意: 别忘了下载Install安装脚本! 在安装前请仔细阅读README和 常见问题问答!

   安装方法

   1) 创建一个目录, 将所有下载来的文件放在里面.
   2) 以root身份执行安装脚本: # bash Install
   3) 安装脚本会先检查系统的配置,还会自动搜索TTF字库, 接下来就是对旧配置文件 进行备份, 最后开始安装.
   4) 完成安装, 如果安装了中文控制台环境, 则需要重新启动.

六、如何设置声卡

  不用我说,这可是十分要紧的工作!不过如果你安装了RED HAT Linux,则这项工作就简单了!

  用root登录系统,运行/usr/sbin/sndconfig。出现选择声卡类型的画面。一般声卡可以选取Sound Blaster 。

  选完声卡后再设置有关的资源。用TAB键结合方向键作出选择后,按OK,如果听到Linus(Linux的创始人)说话的声音,就说明声卡设置成功了。真像老式DOS游戏的声卡设置……

七、如何设置显卡

   要设置好你的显卡,首先,要知道你的显卡的型号,是什么公司出的,什么样的类型的显卡,显存有几MB,还要知道显卡的显示芯片是什么类型的,是ALG2302的,还是SIS6326的,还是Savage3D的,等;然后,在超级用户的权限下,你可以运行界面比较友好的Xconfigurator工具,这里的X记住一定要大写的,一步一步跟着指导来选择,应该不是很难的,当选择你的显卡的芯片的时钟时,不用选择它,让测试程序自动检查;最后,还要知道你的显示器的类型,是VGA的,还是SVGA的,以及水平和垂直分辩率。你还可以运行界面不友好的xfree86,如果你比较精通Linux的话,用xfree86命令配置的X Windows效果比Xconfigurator好很多的。界面最友好的,当属XF86Setup工具,若你有安装这个工具的话,不妨就用这个工具来设置你的显卡吧。

八、如何设置网卡

九、如何播放CD音乐

  声卡设置好了,可以在光驱中插入一张CD,用装载命令mount将光盘载入,然后输入cdp命令就可以播放了。在屏幕上可以看到CD的音轨清单,小键盘的9是播放,7是停止,6进到下一音轨,4退到前一音轨,0退出播放程序,2弹出CD,8是暂停。

  如果是在X-Window中,可以用xplaycd播放CD,这是一个有图形界面的播放器,按钮及功能一目了然,这里就不多说了。

10、如何播放VCD影碟

11、如何拨号上网

12、Linux下能玩游戏吗

  光盘中有bsd-games-2.1-3.src.rpm文件包,用RPM命令进行安装,然后到安装目录中去找游戏吧。不过这些游戏都不够精致,如果你想玩好的,就须要进入X-Window,acm是空战模拟游戏,paradise和xpilot是联网战斗游戏,xdemineur是挖地雷(没想到吧),xjewel是俄罗斯方块,xboard是国际象棋,xpat2是扑克牌游戏,xboing是弹珠台游戏,还有Doom――大名鼎鼎的第一人称射击游戏!这些游戏有的可以直接调出,有的须要用RPM命令安装。所有的RPM包都在安装光盘中的srpms目录下,自己去看看吧。

十.用xvidtune调整你的显示器
大家会发现装了linux之后在windows下用的好好的显示器有时进到linux的xwindows里后就歪掉了,调整好之后回到windows后windows的桌面也外调了,来回启动系统每次都要调整很麻烦的,这里介绍一个办法一劳永逸
j进入linux启动x在xterm里执行xvidtune,会弹出这个软件的窗口,点Auto然后点Left,Right等按钮调整你的显示器到最佳的位置,然后点界面上的Show按钮会得到类似这样的输出:
“1152x864“ 121.50 1152 1232 1360 1568 864 865 868 911 +hsync -vsync
然后退出这个软件,修改你的/etc/X11/XF86Config-4文件在
Section “Monitor“
Identifier “AS 786T“
VendorName “Unknown“
ModelName “Unknown“
HorizSync 30 - 87
VertRefresh 50 - 160
Option “dpms“
EndSection
里加上刚才的输出,我的是:
Section “Monitor“
Identifier “AS 786T“
VendorName “Unknown“
ModelName “Unknown“
HorizSync 30 - 87
VertRefresh 50 - 160
Modeline “1152x864“ 121.50 1152 1232 1360 1568 864 865 868 911 +hsync -vsync
Option “dpms“
EndSection
保存然后重起试试看吧

十一.问:我的机器是windows和linux双系统,如何改变grub默认启动的系统?
答:这需要修改/boot/grub/grub.conf。举一个例子你就明白了。假设你的/boot/grub/grub.conf是这样子的:

default=0
timeout=10
splashimage=(hd0,7)/grub/splash.xpm.gz
title Red Hat Linux (2.4.18-14)
root (hd0,7)
kernel /vmlinuz-2.4.18-14 ro root=LABEL=/
initrd /initrd-2.4.18-14.img
title DOS
rootnoverify (hd0,0)
chainloader +1

那么你的grub会默认启动Red Hat Linux (2.4.18-14)这个系统,把default=0改成default=1,那么grub会默认启动DOS这个系统。注意,这里的要点是:你想默认启动第n个title所指的系统,那么default应该是等于n-1

十二.问:我的文本控制台怎么总是出现乱码呢?

答:这是因为你安装了中文支持的缘故。解决的方法是安装一个zhcon(一个快速地外挂式CJK(中文/日文/韩文)的多内码平台),我把他放在附件中提供大家下载。关于zhcon的更进一步的消息,大家可以到他的官方主页zhcon.gnuchina.org查看。安装和使用请参考这个连接http://hepg.sdu.edu.cn/Service/tips/zhcon_manual.html

zhcon下载连接:http://zhcon.gnuchina.org/download/...on-0.2.1.tar.gz

十三.问:我在安装一个软件的时候,提示我缺少一个.so文件,安装无法继续,怎么办?

答:.so文件就像windows中的.dll文件一样,是库文件。一个程序的正常安装和运行需要特定的库文件的支持。所以你需要去找到包含这个.so的包装上。去www.rpmfind.net用你缺的那个.so文件?..剿

]]>
FreeBSD-Quota-Howto http://www.phpv.net/html/1421.html http://www.phpv.net/html/1421.html#comment Sat, 16 Apr 2005 23:49:37 +0000 easy http://www.phpv.net/html/1421.html Version 1.0
Author: Falko Timme <ft [at] falkotimme [dot] com>
中文乱译:esayr
Last edited 12/29/2003

本文档描述了在freebsd系统下如何打开磁盘配额功能. 不过请注意,照此文档配置可能出现的任何问题,我们不负责!

 

1 编译新内核

首先你需要编译/安装支持quota(磁盘配额)的内核(默认是不支持的) (更多关于编译新内核的信息,可参见: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-building.html).

cd /usr/src/sys/i386/conf
cp GENERIC MYKERNEL

编辑 MYKERNEL 文件,加入一行

options QUOTA

然后运行命令:

/usr/sbin/config MYKERNEL
cd ../compile/MYKERNEL

(FreeBSD  5.0之前的版本, 使用以下命令:

cd ../../compile/MYKERNEL )

make depend
make
make install

 

2 打开磁盘配额

编辑文件 /etc/fstab 找到你想对其做配额的根目录,像:

/dev/ad0s1d /home ufs rw 2 2

添加 userquota 和 groupquota :(像下面这样)

/dev/ad0s1d /home ufs rw,userquota,groupquota 2 2

为能让机器启动时打开此功能,我们在/etc/rc.conf 里加下面两行:

quota_enable="YES"
check_quotas="YES"

重启系统:

shutdown -r now

重启后运行以下两行命令:

quotacheck -a
quotaon -a

最后,安装 setquota-工具:

pkg_add -r setquota

 

译者PS:关于setquota(转自linuxforum.net)

NAME(名称)

setquota - 设置磁盘配额或时间限制  

SYNOPSIS(总览)

setquota [ -u | -g ] filesystem-name block-soft block-hard inode-soft inode-hard name...

setquota [ -u | -g ] filesystem-name -p model-name name...

setquota -p [ -u | -g ] filesystem-name block-time-limit inode-time-limit  

DESCRIPTION(描述)

setquota 是一个命令行配额编辑器.它允许针对特定(通过名字或id标识的)用户/组的配额设置. 配额可以直接指定,也可以从其它用户复制(参看选项 -p). 使用这个应用程序,同时可以设置超出软配额的可能的时间限制(参看选项 -t). 如果你想手工编辑配额,你也可以使用 edquota(8) 应用程序,倘若你觉得它更方便的话.

 

OPTIONS(选项)

-u
为指定的用户设置用户配额.这是默认的选项
-g
为指定的组设置组配额.
-p model-name
设置指定的用户/组的配额与 model-name 的用户/组相同.
-t
在指定的文件系统上针对特定的配额类型设置时间限制. 限制以秒计.

要禁止使用配额,可以设置相应的参数为0. 要对几个文件系统修改配额,可以对每个文件系统调用一次.

只有超级用户可以编辑配额.(为了在一个文件系统上建立配额,文件系统的 root目录下必须包含一个由root所有,叫做 aquota.useraquota.group 的文件. 参看 quotaon(8) 以了解详情.)  

FILES(相关文件)

aquota.user或aquota.group
位于文件系统root下的配额文件
/etc/mtab
已挂载的文件系统表
 

####======全文完--------下页为英文原版。------------------》》

]]>
linux下建立基于DNS的多机均衡负载 http://www.phpv.net/html/1418.html http://www.phpv.net/html/1418.html#comment Wed, 06 Apr 2005 15:21:45 +0000 easy http://www.phpv.net/html/1418.html 基于DNS的多机均衡负载的实现

前二天为一个客户添加了一台服务器。共同承担一个论坛的运作。但是。要实现负载均衡。的确是件难事。
之前有试过几个方法,
一、DNS轮值。。优点:简单实现。缺点:无法检测各个服务器的负荷。难控制访客的访问地址(一般DNS服务器都有缓存,所以。效果不明显)
二、前台程序。。使用了一个类似Zeus Load Balancer的服务程序。在前台接受访问请求。再分流到各个实际的服务器。

但以上二个方法都不太适用我的情况。。

 
第一种。无法正确分配访客流量。。。常发生一台服务器的负荷很大。而另一台就很低。。。
第二种。会占用更多的流量。资源也占用较大。 

最好。我还是采用了一个DNS均衡负载的方法---lbname。

它的主要效果介绍:
一、基于perl的dns服务端。应用简单。
二、自动检测各个服务器的负荷。然后再按结果优先分配DNS解析。
三、DNS解析实时生效。不会被DNS服务器缓存。
四、安装方法简单。。。

 

lbname网页介绍
http://www.stanford.edu/~schemers/docs/lbnamed/lbnamed.html
http://www.stanford.edu/~riepel/lbnamed/ 


下载:
http://www.stanford.edu/~riepel/lbnamed/lbnamed-1.2.1.tar.gz
http://www.stanford.edu/~schemers/dist/lb.tar

下载包说明:
内存数个目录
1)lbcd的源代码
lbcd是lbnamed所用到的服务器端检测服务器负荷程序.每个需要均衡负荷的服务器都需要安装、运行它的
建议下载使用最新的lbcd编译包http://www.stanford.edu/~riepel/lbnamed/lbcd-3.1.0.tar.gz  ]

之前的常有编译错误的(这个也有的.嘻)
编译这个包时。常会出错的。如何成功安装。就看你的本事了。(编辑util.c第123行。在前面加上//)

编译lbcd成功后。将它复制到/usr/sbin。那你就可以运行它了.不用加什么参数了(运行后要停止它就是lbcd -s)

2)lbnamed的服务器程序perl..分有二个版本。一个是perl4.另一个是perl5.我是使用perl5的。所以用它来说明

进入perl5目录。。。。。先要配置好lbnamed和poller程序

说明一下:
lbnamed程序是主程序。提供dns动态解析。严格来说。它已是一个dns服务器端程序了。

poller是为lbnamed提供各个均衡服务器的负荷情况。(配合我们之前安装的lbcd程序使用)
但二个程序可能都需要更改,请看程序第一行的perl程序地址。。改为你的perl地址。

然后就需要更改程序的配置文件了。

 
1,lbnamed.conf 要更改的地方有几个 
一、$hostmaster = "schemers.leland.stanford.edu"; 将schemers.leland.stanford.edu改为你服务器的域名。。比如host.abc.com 这个无太大关系

 
二、将所有stanford改为你域名的中段(比如bendy.com,就改为bendy),将所有edu改为域名的后缀(比如bendy.com,就改为com)。。这个很重要。。我建议不要更改best。当然你也可以改
2,sweet.config 这个文件可以是用其它文件名的,具体在lbnamed.conf有设置。我建议大家先清空这文件。再重新建立新的。
这个文件的配置方法是
负荷服务器host     负重   组

bbs1                    1       bbs
bbs2                    2       bbs
比如。我自己的情况。有二台服务器。分别是bbs1.***.com和bendy2.***.com那我的配置文件就是

bbs1 1 bbs
bbs2 2 bbs

配置好这个文件后。你需要一个能对bbs1这个域名进行解析的方法。就是修改/etc/hosts文件。我的情况就是
192.168.1.1 bbs1
192.168.1.2 bbs2

这样的话。poller程序就会检测111.222.333.001、111.222.333.002的负荷情况了

至此,DNS服务器和均衡负载的服务器的程序已完成。可能我的说明不太清楚。现在我就一一列表说明

bbs1服务器 lbserver1 192.168.1.1 编译运行lbcd
bbs2服务器 lbserver2 192.168.1.2 编译运行lbcd


dns服务器 dnsserver 10.0.0.1 配置lbnamed 在/etc/hosts配置bbs1、bbs2域名解析

这样的情况下。。在dns服务器运行lbnamed程序。系统就开始动作了。。lbnamed的启动参数主要是 -l logfile和-d(debug)
./lbnamed -l lb.log -d
查看记录(类似)
cat lb.log

-=====
05/30 00:59 21442 lbnamed starting poller
05/30 00:59 21442 lbnamed load_config
loading 1452 bbs2 192.168.1.2 bbs
loading 837 bbs1 192.168.1.1 bbs
05/30 00:59 21442 lbnamed ready to answer requests
05/30 00:59 21442 lbnamed do_maint
05/30 00:59 21442 lbnamed reloading config
05/30 00:59 21442 lbnamed load_config
loading 1671 bbs2 192.168.1.2 bbs
loading 1086 bbs1 192.168.1.1 bbs


  如果你没有那些记录。看文件sweet.config.unreach这是代表poller程序无法接收到对方服务器的负荷信息。。请检查lbcd程序是否运行。。

  如果程序运行正常。那你的DNS服务器就正常运行了。
  如果检查程序是否正常。。。用我们的nslookup就可以了。。。


C:\Documents and Settings\Administrator.XINGKONG-SERVER>nslookup
Default Server: ns.guangzhou.gd.cn
Address: 202.96.128.143

> server 10.0.0.1 //直接使用dns服务器
Default Server: [10.0.0.1]
Address: 10.0.0.1

> set type=all //设置查询类型

> bbs.best.bendy.com //bbs是sweet.config设置的组名,best.bendy.com是在lbnamed.conf设置的
Server: [10.0.0.1]
Address: 10.0.0.1

bbs.best.bendy.com canonical name = bbs2.bendy.com //返回的信息。是DNS系统分配了bbs2给你这次的查询(按二台服务器返回的负荷情况来分配的,并非随便分配的)
bbs2.***.com internet address = 192.168.1.2 //而bbs.***.com在该在DNS系统的A记录是192.168.1.2//最后结果bbs.best.***.com得到的IP地址是192.168.1.2


====
自此。。服务器方面的配置已经完成。
跟着是我们配置具体域名的dns解析。。。

方法也是很简单,以***.com为例,在***.com的DNS管理加上以下记录
一、加上二个best.***.com的ns记录为ns1.***.com和ns2.***.com(也可以不止二个的.取决你有多少台服务器运行lbnamed
二、加上第一条添加的ns记录的实际指向iP,分别指向各个运行lbnamed的服务器,比如ns1.***.com address 10.0.0.1/ns2.***.com address 10.0.0.2等。
三、添加bbs1.***.com和bbs2.***.com等的实际ip地址。。。正如刚才所说...bbs.best.***.com只将DNS记录转移为bbs1.***.com或者bbs2.***.com。而lbnamed是没权对bbs1.***.com和bbs2.***.com进行解析的。。。所以。需要***.com的NAMESERER对它进行解析。

 
(ps:bbs1.***.com的记录并不一定要求与lbnamed程序的相同。。。)
四、最后。。添加bbs.***.com cname to bbs.best.***.com。。。哈哈。。。大功告成。。。


关于本文:

作者:Bendy
原创于2004.5.30
Email & msn: Bendy@etang.com
发表于Discuz Unix 茶馆http://www.discuz.net/forumdisplay.php?fid=34&page=1
转载请保留版权和说明出处

]]>
如何在FreeBSD上用PHP实现在线添加FTP用户 http://www.phpv.net/html/1401.html http://www.phpv.net/html/1401.html#comment Wed, 16 Mar 2005 11:33:35 +0000 easy http://www.phpv.net/html/1401.html 近日领导要我策划一个网页设计大赛和Flash创作大赛,要求必须实现在线报名和上传作品。通过FreeBSD+Apache+PHP+Mysql+FTP我实现了该要求。

曾慧鹏 <zenghuipeng@163.net>

实现在线报名和上传作品的思路是利用网页表单收集用户填写的资料存储到Mysql数据库内,同时以该用户的注册名创建一个FTP上传账号并创建该用户的相应目录。

FTP服务器是系统默认带的,采用系统用户的用户名和密码,创建系统用户就等于创建FTP用户,FreeBSD是属于UNIX阵营的操作系统,它没有象Linux一样的useradd和groupadd等创建用户和组的命令,其取而代之的是pw命令加上相应参数来实现,在Freebsd上以管理员的身份创建一个用户的命令是

echo <passwd> | pw useradd <username> [-g][groupname] [-s][shelldir][-h 0]

参数g指定用户组,参数s指定用户的shell。

如果是普通用户登陆的话还必须用到su命令,调用的方法是

su root ]]> 给RedHat linux加上五笔输入法 http://www.phpv.net/html/1390.html http://www.phpv.net/html/1390.html#comment Fri, 25 Feb 2005 15:43:02 +0000 easy http://www.phpv.net/html/1390.html
    可先下载UNICON,如果已有那就可省下下载的时间了。(Unicon的下载地址http://www.linuxeden.com/)

    复制/usr/lib/unicon/modules/turbo/dict/bg/WuBi.tab到/usr/lib/Chinput/im/gb/目录下(如果目录不对,那就是你的Unicon或Chinput没有安装到默认目录,只需把路径改为你的Unicon或Chinput所在的目录就可以了)

    然后编辑/usr/lib/Chinput/Chinput.ad 找到[WB]这一项,更改其中的

  ENCODING  =  GB
  FILE      =  gb/WuBi.tab
  MODULE    =  /usr/lib/Chinput/im/TL.hzinput.so



    然后保存退出.(注意:在编辑Chinput.ad文件时字符的间隔是TAB键而不是空格)

    重新进入XWindow系统,ctrl+空格打开输入法就可以看到五笔输入法了,如看不到可按ctrl + shift组合键切换输入法,就可以看到五笔输入法了。

    经过这一番努力总算可以使用五笔了,笔者经过试用感觉挺好,单字输入和Windows下的五笔没什么两样,只不过此五笔词组不丰富,只能输入少量词组。(如果你有兴趣可以对WuBi.tab文件增加词组)

 

 

------------------------------------------------

转自赛迪网

]]>
redhat上安装oracle10g http://www.phpv.net/html/1381.html http://www.phpv.net/html/1381.html#comment Wed, 16 Feb 2005 16:54:31 +0000 easy http://www.phpv.net/html/1381.html

[Oracle] Installing Oracle 10g on RHEL AS 3 Step-by-Step

整理:Fenng
日期:06-Apr-2004  
出处:http://www.dbanotes.net
版本:1.01

不久前,Oracle(甲骨文)公司在美国加州的总部宣布, Oracle 10g 数据库 与 Oracle RAC 在 TPC-H 基准测试中创造了新的世界纪录.这是个令人震惊的消息.因为这个测试是在 Linux ( Red Hat Enterprise Linux Advanced Server 3) 的平台上进行的. 这充分显示了 Oracle 在低成本 Linux 集群服务器上高效管理大规模数据仓库的能力, 也表明 Linux 在性能价格比上显而易见的优势,标志着Linux在大规模企业应用上已经成熟.

相信很多朋友已经对10g跃跃欲试了,现在从这里让我们开始10g之旅.

本文描述了在Red Hat Enterprise Linux Advanced Server 3 (RHEL 3)上安装Oracle 10g 必要的步骤和相关知识. 本文假定你的Linux 操作系统已经安装完毕,并且您应该具有一定的 Unix 操作系统背景知识.

配置RedHat AS 3


操作系统版本:
Red Hat Enterprise Linux AS release 3 (Taroon)
Kernel 2.4.21-4.EL on an i686

按照常规来安装操作系统,记得要安装开发工具(gcc等必要工具).

必要的硬件信息检查


检查内容 最小值 检查命令参考
物理内存 512M # grep MemTotal /proc/meminfo
交换空间 1.0 GB或者2倍内存大小 # grep SwapTotal /proc/meminfo
/tmp 空间 400 MB # df -k /tmp
软件所需空间 2.5 GB # df -k (空间越大越好,如果是正式系统,应该进行详尽的规划)
数据库文件 1.2 GB # df -k (空间越大越好,如果是正式系统,应该进行详尽的规划)

检查完如上各项之后, 应该修改核心参数.执行如下命令:

#vi /etc/sysctl.conf

#注释:
#表示使用root用户操作,$表示使用oracle 用户进行操作.提示符后面的蓝色部分表示需要输入的命令,以下同.

在该文件末尾加入如下内容:
kernel.shmall = 2097152 
kernel.shmmax = 2147483648 
kernel.shmmni = 4096 
kernel.sem = 250 32000 100 128 
fs.file-max = 65536 
net.ipv4.ip_local_port_range = 1024 65000
编辑完之后,保存,执行 # /sbin/sysctl -p 命令操作来使我们所做的变更生效.

注:上面kernel.shmmax/kernel.sem等是典型的核心参数配置.您可能需要根据您的实际环境进行适当的变动.

关于这些核心参数的说明在Oracle的 Oracle9i Installation Guide Release 2 (9.2.0.1.0) for UNIX Systems 中有很详细的说明.( http://download-west.oracle.com/docs/html/A96167_01/toc.htm )

然后,应该检查一下上面的操作是否正确:
# /sbin/sysctl -a | grep sem 
# /sbin/sysctl -a | grep shm
# /sbin/sysctl -a | grep file-max
# /sbin/sysctl -a | grep ip_local_port_range

为Oracle用户设定Shell的限制

一般来说,出于性能上的考虑,还需要需要进行如下的设定,以便改进Oracle用户的有关 nofile(可打开的文件描述符的最大数)和nproc(单个用户可用的最大进程数量)

# vi /etc/security/limits.conf 
# 添加如下的行

*               soft    nproc   2047
*               hard    nproc   16384
*               soft    nofile  1024
*               hard    nofile  65536
添加如下的行到/etc/pam.d/login 文件:
session    required     /lib/security/pam_limits.so 
编辑 /etc/profile 文件,添加如下部分:
if [ $USER = "oracle" ]; then  
	if [ $SHELL = "/bin/ksh" ]; then  
		ulimit -p 16384  
		ulimit -n 65536  
	else  
		ulimit -u 16384 -n 65536  
	fi  
fi

之后,执行$ unlimit 验证一下.

检查并安装相关补丁

在这个版本的RHEL上安装Oracle,必须要有几个软件包. 确认以下 rpm包都已经安装:

make-3.79
binutils-2.11
openmotif-2.2.2-16
setarch-1.3-1 
compat-db-4.0.14.5
compat-gcc-7.3-2.96.122
compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122

# rpm -qa | grep compat 
# 在我的机器上输出如下:

compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122
compat-glibc-7.x-2.2.4.32.5
compat-db-4.0.14-5
compat-gcc-7.3-2.96.122

# rpm -qa | grep openmotif 
openmotif-devel-2.2.2-16
openmotif-2.2.2-16

# rpm -qa | grep setarch
setarch-1.3-1

上面显示的内容是在笔者已经安装了具体的RPM包之后的结果.一般情况下,你的系统上的输出结果和这个不同.如果个别包没有安装,把系统安装光盘mount上,找到具体的软件包(大多数在第三张光盘上),然后利用如下的命令来安装相应的包:
# rpm -ivh compat.....rpm 
要额外注意的是,这些软件包之间是有依赖性的,先后的顺序要找好.否则会报告不能安装的错误. 此外,最好验证一下 gcc和glibc的版本(要求是gcc-3.2.3-2 或者更高):
#gcc -v 
#rpm -q glibc

创建用户和相关的组

# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -g oinstall -G dba oracle 

如果只是测试目的的话,不创建oinstall组也没什么. 不过还是规范一点比较好.如果oracle 用户和dba组等已经存在,作适当的调整即可.

检查并调整环境变量

登录为oracle用户

# su - oracle
$ cd 
$ vi .bash_profile
#添加如下内容,你的具体值应该不会和这个完全相同.
export ORACLE_BASE=/u/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1
export ORACLE_SID=TEST
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export LC_CTYPE=en_US.UTF-8 
然后执行
$ source .bash_profile

使环境变量生效. /u/app/oracle 等目录应该建立好并做合适的授权.

开始安装10g

mount你的安装盘.(我一般都是把文件拷贝到系统中一个具体的位置,比如/u/install ) .执行:

$ sh /u/install/runInstaller 

如果不能出现安装画面,查看本文后面的FAQ。

非常值得称道的是,10g的安装相比以前的多了一个 Checking operating system certification 的步骤。特别实用。安装文件会自动检测所需的条件。如果有不符合的地方,安装程序会报告给你.并会给出具体原因。大大减少了出错的可能. 下面是检查成功输出的内容 :
Checking operating system certification 
Expected result: One of redhat-2.1,redhat-3,UnitedLinux-1.0 
Actual Result: redhat-3 
Check complete. The overall result of this check is: Passed 
======================================================================= 

Checking kernel parameters 
Checking for VERSION=2.4.9.25; found VERSION=2.4.21. Passed 
Checking for shmall=2097152; found shmall=2097152. Passed 
Checking for shmseg=10; found shmseg=4096. Passed 
Checking for semmsl=250; found semmsl=250. Passed 
Checking for semmni=128; found semmni=128. Passed 
Checking for filemax=65536; found filemax=65536. Passed 
Checking for shmmni=4096; found shmmni=4096. Passed 
Checking for semmns=32000; found semmns=32000. Passed 
Checking for semopm=100; found semopm=100.Passed 
Checking for shmmin=1; found shmmin=1. Passed 
Checking for shmmax=2147483648; found shmmax=2147483648. Passed
Check complete. The overall result of this check is: Passed 
======================================================================= 

Checking recommended operating system packages 
Checking for make-3.79; found make-3.79.1-17. Passed 
Checking for binutils-2.11.90.0.8-12; found binutils-2.14.90.0.4-26. Passed 
Checking for gcc-2.96; found gcc-3.2.3-20. Passed 
Checking for openmotif-2.1.30-11; found openmotif-2.2.2-16. Passed 
Check complete. The overall result of this check is: Passed 
======================================================================= 

Checking recommended glibc version 
Expected result: 2.2.4.31.7 
Actual Result: 2.3.2.95.3 
Check complete. The overall result of this check is: Passed 
======================================================================= 

Validating ORACLE_BASE location (if set) 
Check complete. The overall result of this check is: Passed 
======================================================================= 

其他的步骤比较清晰,不再赘述.

最后系统会提示你运行root.sh文件.按照提示做即可.

FAQ (在Linux平台安装Oracle比较常见的问题)

1. 不能启动安装界面

运行runInstaller提示信息类似如下:

xlib:connection to "localhost:0.0" refused by server 
xlib:client is not authorized to connect to server 

Exception in thread "main" java.lang.InternalError:
can't connect to x11 window server using "localhost:0.0" at ....... 

解决办法: 设定你的DISPLAY环境参数.

# export DISPLAY= your_IPaddress :0.0

把your_IPaddress换成你的IP.或者用root简单的执行一下# xhost + (要注意这样会有安全上的隐患)

2.安装界面显示很多"口口"样子的乱码

解决办法:查看locale输出

# locale
LANG=en_US.UTF-8
LC_CTYPE=zh_CN.GB18030
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

执行#export LC_CTYPE=en_US.UTF-8 然后重新调用安装程序.

3. 用IE登录Linux服务器上的em出现乱码


在Linux(Unix) 环境下成功安装了Oracle 10g,从windows下用IE浏览器登录 10g 的em, 按钮是"口口"这样的方框.

解决办法: 参考:
http://www.dbanotes.net/Oracle/Oracle-10g-font.properties.htm 

4.创建数据库的时候出现ORA-03113的错误

解决办法: 查看核心参数是否调整正确.参考:

http://www.dbanotes.net/Oracle/ORA-03113.htm

5. RedHat 9 / FC1等系统10g不支持如何安装?


解决办法:在10g不支持的Linux发行版上安装10g的解决方法

1). 运行runInstaller -ignoreSysPrereqs,这样会跳过检查.
2). 摘自 www.puschitz.com 修改/etc/redhat-release文件:
#su - root 
#cp /etc/redhat-release /etc/redhat-release.backup 
#cat > /etc/redhat-release <<   EOF 
Red Hat Enterprise Linux AS release 3 (Taroon) 
EOF 
安装完毕,执行如下操作:
#su - root 
#cp /etc/redhat-release.backup /etc/redhat-release 
3). http://www.dbanotes.net/Oracle/10G-Beta-Install-Bug.htm

同样的思路,我们可以修改Oracle 的install/oraparam.ini文件达到目的.

6.如何关掉那些 ocssd.bin 进程?

解决办法:编辑/etc/inittab文件(做好备份)

注释掉这一行:
h1:3:respawn:/etc/init.d/init.cssd run >/dev/null 2>................

参考信息

Werner Puschitz 的 10g 安装指南 - http://www.puschitz.com/InstallingOracle10g.shtml
Werner Puschitz 的站点的文章很翔实,如果您遇到了本文没有说清的问题,可以去看看那里.本文借鉴了该站点不少内容.

http://www.google.com - http://www.google.com
关于核心参数等信息一定要用Google查找.

Oracle Database Quick Installation Guide 10g Release 1 (10.1) for Linux x86
http://download-west.oracle.com/docs/html/B10813_01/toc.htm

Oracle Database Installation Guide 10g Release 1 (10.1) for UNIX Systems http://download-west.oracle.com/docs/html/B10811_02/toc.htm

DBAnotes.net 我的站点 包括不少和Oracle有关的信息 - http://www.dbanotes.net

]]>
Qmail常见问题解决办法 http://www.phpv.net/html/1377.html http://www.phpv.net/html/1377.html#comment Tue, 15 Feb 2005 01:19:13 +0000 easy http://www.phpv.net/html/1377.html 1.不能给sina发信
进入qmail/control创建helohost
echo serverip > helohost

建议将
不能给sina发信
进入qmail/control创建helohost
echo serverip > helohost
修改为给新浪打电话


2. |/usr/local/bin/autorespond 10000 5
|表示调用一个程序来处理该邮件这里是调用autorespond来处理;10000表示允许处理信
件的总时间;5表示在这段时间内的最大邮件
3.限制你的邮件列表被滥用
你需要在邮件列表文件头加入一个过滤程序。一种选择是使用qmail的补丁程序 qlist ,你可以在官方站点qmail.org找到它。它会使用 pgp 来标记你的邮件信息,一个包含pgp标识的过滤的邮件列表大致如下:
|if grep "^-----BEGIN PGP MESSAGE-----$"; then exit 0; else exit 100; fi
|if grep "^-----END PGP MESSAGE-----$"; then exit 0; else exit 100; fi
|if pgp -f; then exit 0; else exit 100; fi
+list
&address
&address
...
只有邮件列表允许的用户(假定是别名)才拥有pgp的密钥。或者为需要的用户指定一个密钥文件。 另外一种过滤器通过检查邮件,判断是否来自本地用户或者来自最近的qmail-smtpd进程。如果是本地用户就允许通过,远程站点的就退回该信件。它的形式如下: |if grep Received: | tail +1l | grep network; then echo
"This is a moderated list"; exit 100; fi
+list
&address
&address
...

如果不是本地系统的用户,你可以分配一个别名(记得chmod 700 ~alias),使它能投递到邮件列表。运行:

|grep -v '^Delivered-To:' | forward LISTNAME

必须删除 Delivered-To: 这行,否则将它放弃这个别名
4. 如果你不想让一份无法投递的邮件在队列里呆太久
你可以在 queue/info 目录里运行
touch -d '1 week ago'
来结束它的队列生命周期。这样,如果再次投敌不成功,这份邮件就会被退回
5.用telnet my.domain 25时返回:
Trying xx.xx.xx.14.....
Connected to www.xxx.com
Escape character is '^]'.
220 www.xxx.com ESMTP
502 unimplemented (#5.5.1)
此现象是密码验 证的包checkpasswd没有装好。
6.装完qmail后,用本地的信箱或外面的信箱发信过来都显示错误:
delivery 12: failure: Sorry,_no_mailbox_here_by_that_name._(#5.1.1)/
没有创建用户的Maildir目录.请记住,创建maildir目录的组和用户权限必须正确
7. maillog里面出现:
"Unable_to_open_./Maildir:_is_a_directory._(#4.2.1)/"
在修改rc里的./Mailbox 改成 ./Maildir/时出错
8. maillog里面出现:
oh:_.qmail_has_file_delivery_but_has_x_bit_set._(#4.7.0)/

.qmail文件多了个x标志位, 运行chmod a-x .qmail

9.maillog里面出现:
"Unable_to_open_./Maildir:_is_a_directory._(#4.2.1)/"
用户的.qmail所在地方不对,此文件必须存在于用户的HOME里面
10.tcpserver]]> Red Hat成立中国总部 斥10亿美元支持Linux http://www.phpv.net/html/328.html http://www.phpv.net/html/328.html#comment Mon, 15 Nov 2004 13:15:39 +0000 easy http://www.phpv.net/html/328.html 开发源代码巨头在华扩军冲击微软

  商报讯 (记者 李卉) Red Hat中国总部昨天上午在北京宣告成立,此举意味着这家全球最著名的Linux企业级开放源代码科技提供商开始正式进军中国市场。业内人士指出,Red Hat携Linux的大举进攻将在服务器和嵌入式软件市场对微软的Windows造成不小冲击,并很可能在一定领域影响微软在中国市场的淘金步伐。

  作为全球最著名的开放源代码提供商,Red Hat早在两年前就进入了中国市场,并和中国移动、联通以及中国邮政等国内著名企业开展了合作。随着中国软件市场商机的不断显现,Red Hat决定扩大在华业务,并正式成立公司。据了解,此次Red Hat将向中国市场投资10亿美元,并将与BEA、Dell、HP、IBM、英特尔、Oracle以及红旗Linux等国内公司联手,通过“政府-教育机构-企业”这一三角战略大力开拓中国市场,为中国计算机用户提供一种高价值、低成本的计算解决方案。在昨天的发布会上,Red Hat总裁兼首席执行官Matthew Szulik表示,中国总部的首要举措之一就是支持Linux和开放源代码教育,免费向学生开放Red Hat Academy(学院),把学生培训成Linux领域的专家能手。目前公司已与清华大学和南京大学建立了合作伙伴关系。

  据预测,2008年之前,中国国内计算机服务器市场的年增长率将达到49%,其中台式服务器的增长率可达到29%。正是看中了中国这一迅猛发展的软件市场,Red Hat才开始大举进军,并把在中国市场作为其打开亚太市场的重要一步。

  在昨天的发布会上,尽管Red Hat高层对微软在中国市场的作为未置一词,但业内人士分析,和微软的Windows系统相比,Linux是一个更为开放的平台,其服务器更具有稳定性,对于用户来说是一种低成本的计算解决方案。因此,一旦Red Hat公司在中国的市场被彻底打开,就意味着微软将在服务器和嵌入式软件市场遭遇强大的对手。不过,正是由于系统的开放性,Linux的版本太多,解决各个版本之间的兼容将是其面临的一大问题。此外,由于多着重专业领域,Linux在民用市场不具备太多优 势,因此在普通计算机用户市场上,微软的霸主地位不会受太多影响。 

]]>